1 #ifndef DIRPANEL_H 2 #define DIRPANEL_H 3 #include "DirList.h" 4 #include "Properties.h" 5 #include "InputDialog.h" 6 #include "ArchInputDialog.h" 7 #include "BrowseInputDialog.h" 8 9 10 #include <sys/types.h> 11 12 13 14 class DirPanel : public FXVerticalFrame 15 { 16 FXDECLARE(DirPanel) 17 protected: 18 DirList* list; 19 FXPacker* statusbar; 20 FXLabel* status; 21 FXButton* activeicon; 22 FXString trashlocation; 23 FXString trashfileslocation; 24 FXString trashinfolocation; 25 FXString startlocation; 26 FXDragType urilistType; // Standard uri-list type 27 FXDragType xfelistType; // Xfe, Gnome and XFCE list type 28 FXDragType kdelistType; // KDE list type 29 FXDragType utf8Type; // UTF-8 text type 30 FXbool clipboard_locked; // Clipboard locked to prevent changes when viewing it 31 InputDialog* newdirdialog; 32 ArchInputDialog* archdialog; 33 BrowseInputDialog* operationdialog; 34 InputDialog* operationdialogrename; 35 FXbool fromPaste; 36 FXWindow* focuswindow; 37 FXbool ctrlflag; // Flag to select the right click control menu 38 TextLabel* paneltitle; // Panel title 39 FXbool isactive; // Flag to indicate is panel has keyboard focus 40 FXbool stopListRefresh; // To stop refreshing in some cases 41 time_t curr_mtime; // Current directory mtime 42 FXString curr_dirpath; // Current directory path 43 FXbool allowDirsizeRefresh; // Allow or avoid directory size refresh 44 45 46 public: 47 DirPanel(FXWindow* owner, FXComposite* p, FXColor listbackcolor = FXRGB(255, 255, 255), FXColor listforecolor = FXRGB(0, 0, 0), 48 FXbool smoothscroll = true, FXuint opts = 0, int x = 0, int y = 0, int w = 0, int h = 0); DirPanel()49 DirPanel() : list(NULL), statusbar(NULL), status(NULL), activeicon(NULL), urilistType(0), xfelistType(0), kdelistType(0), 50 utf8Type(0), clipboard_locked(false), newdirdialog(NULL), archdialog(NULL), operationdialog(NULL), operationdialogrename(NULL), 51 fromPaste(false), focuswindow(NULL), ctrlflag(false), paneltitle(NULL), isactive(false), stopListRefresh(false), curr_mtime(0), 52 allowDirsizeRefresh(false) 53 {} 54 virtual void create(); 55 56 ~DirPanel(); 57 enum 58 { 59 ID_FILELIST=FXVerticalFrame::ID_LAST, 60 ID_STOP_LIST_REFRESH_TIMER, 61 ID_EXPANDTREE, 62 ID_TOGGLE_HIDDEN, 63 ID_COLLAPSEDIR, 64 ID_COLLAPSETREE, 65 ID_PROPERTIES, 66 ID_ARCHIVE, 67 ID_DIR_COPY, 68 ID_DIR_CUT, 69 ID_DIR_COPYTO, 70 ID_DIR_MOVETO, 71 ID_DIR_RENAME, 72 ID_DIR_SYMLINK, 73 ID_DIR_DELETE, 74 ID_DIR_TRASH, 75 ID_DIR_RESTORE, 76 ID_NEW_DIR, 77 ID_XTERM, 78 ID_COPY_CLIPBOARD, 79 ID_CUT_CLIPBOARD, 80 ID_ADDCOPY_CLIPBOARD, 81 ID_ADDCUT_CLIPBOARD, 82 ID_PASTE_CLIPBOARD, 83 ID_TOGGLE_TREE, 84 ID_TITLE, 85 ID_DIRSIZE_REFRESH, 86 ID_POPUP_MENU, 87 #if defined(linux) 88 ID_MOUNT, 89 ID_UMOUNT, 90 #endif 91 ID_LAST, 92 }; 93 long exploreUp(DirItem* item, const DirItem* rootitem, const int task); 94 long exploreDown(DirItem* item, const DirItem* rootitem, const int task); 95 96 public: 97 long onClipboardGained(FXObject*, FXSelector, void*); 98 long onClipboardLost(FXObject*, FXSelector, void*); 99 long onClipboardRequest(FXObject*, FXSelector, void*); 100 long onCmdToggleHidden(FXObject*, FXSelector, void*); 101 long onUpdToggleHidden(FXObject* sender, FXSelector, void*); 102 long onCmdPopupMenu(FXObject*, FXSelector, void*); 103 long onExpandTree(FXObject*, FXSelector, void*); 104 long onCollapseTree(FXObject*, FXSelector, void*); 105 long onCmdProperties(FXObject*, FXSelector, void*); 106 long onCmdAddToArch(FXObject*, FXSelector, void*); 107 long onCmdDirMan(FXObject*, FXSelector, void*); 108 long onCmdDirDelete(FXObject*, FXSelector, void*); 109 long onCmdDirTrash(FXObject*, FXSelector, void*); 110 long onCmdDirRestore(FXObject*, FXSelector, void*); 111 long onCmdNewDir(FXObject*, FXSelector, void*); 112 long onCmdXTerm(FXObject*, FXSelector, void*); 113 long onCmdCopyCut(FXObject*, FXSelector, void*); 114 long onCmdPaste(FXObject*, FXSelector, void*); 115 long onUpdPaste(FXObject*, FXSelector, void*); 116 long onCmdDirectory(FXObject*, FXSelector, void*); 117 long onCmdToggleTree(FXObject*, FXSelector sel, void*); 118 119 long onCmdDirsizeRefresh(FXObject*, FXSelector, void*); 120 long onUpdToggleTree(FXObject*, FXSelector, void*); 121 long onUpdMount(FXObject*, FXSelector, void*); 122 long onUpdUnmount(FXObject*, FXSelector, void*); 123 long onUpdMenu(FXObject*, FXSelector, void*); 124 long onUpdDirTrash(FXObject*, FXSelector, void*); 125 long onUpdDirRestore(FXObject*, FXSelector, void*); 126 long onUpdDirDelete(FXObject*, FXSelector, void*); 127 long onUpdTitle(FXObject*, FXSelector, void*); 128 long onUpdStatus(FXObject*, FXSelector, void*); 129 long onExpand(FXObject*, FXSelector, void*); 130 long onKeyPress(FXObject*, FXSelector, void*); 131 long onCmdFocus(FXObject*, FXSelector, void*); 132 long onCmdStopListRefreshTimer(FXObject*, FXSelector, void*); 133 long onUpdDirsizeRefresh(FXObject*, FXSelector, void*); 134 #if defined(linux) 135 long onCmdMount(FXObject*, FXSelector, void*); 136 #endif 137 public: 138 139 void setActive(); 140 void setInactive(); 141 142 // Toggle dirsize refresh and force refresh if flag is true 143 void setAllowDirsizeRefresh(FXbool flag); 144 145 // Change sort function setSortFunc(FXTreeListSortFunc func)146 void setSortFunc(FXTreeListSortFunc func) 147 { 148 list->setSortFunc(func); 149 } 150 151 // Return sort function getSortFunc()152 FXTreeListSortFunc getSortFunc() const 153 { 154 return(list->getSortFunc()); 155 } 156 157 // Change default cursor setDefaultCursor(FXCursor * cur)158 void setDefaultCursor(FXCursor* cur) 159 { 160 list->setDefaultCursor(cur); 161 } 162 163 // Set current directory 164 void setDirectory(const FXString& pathname, FXbool notify = false) 165 { 166 list->setDirectory(pathname, notify); 167 } 168 169 // Get current directory getDirectory(void)170 FXString getDirectory(void) const 171 { 172 return(list->getDirectory()); 173 } 174 175 // Get current item getCurrentItem(void)176 DirItem* getCurrentItem(void) const 177 { 178 return((DirItem*)list->getCurrentItem()); 179 } 180 181 // Get current path name getItemPathname(const DirItem * item)182 FXString getItemPathname(const DirItem* item) const 183 { 184 return(list->getItemPathname((TreeItem*)item)); 185 } 186 187 // Hidden files shown? shownHiddenFiles()188 FXbool shownHiddenFiles() const 189 { 190 return(list->shownHiddenFiles()); 191 } 192 193 // Show hidden files showHiddenFiles(FXbool shown)194 void showHiddenFiles(FXbool shown) 195 { 196 list->showHiddenFiles(shown); 197 } 198 199 // Set focus on list setFocusOnList(void)200 void setFocusOnList(void) 201 { 202 list->setFocus(); 203 } 204 205 // Is panel active? isActive(void)206 FXbool isActive(void) 207 { 208 return(isactive); 209 } 210 211 // Force dir panel refresh forceRefresh(void)212 void forceRefresh(void) 213 { 214 list->onCmdRefresh(0, 0, 0); 215 } 216 getList(void)217 DirList* getList(void) 218 { 219 return(list); 220 } 221 222 #if defined(linux) 223 // Force devices refresh forceDevicesRefresh(void)224 void forceDevicesRefresh(void) 225 { 226 list->onMtdevicesRefresh(0, 0, 0); 227 list->onUpdevicesRefresh(0, 0, 0); 228 } 229 230 #endif 231 232 // Toggle status bar toggleStatusbar(void)233 void toggleStatusbar(void) 234 { 235 statusbar->handle(this, FXSEL(SEL_COMMAND, FXWindow::ID_TOGGLESHOWN), NULL); 236 } 237 }; 238 #endif 239