00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef FX_DISABLEFILEDIRDIALOGS
00025
00026 #ifndef FXFILESELECTOR_H
00027 #define FXFILESELECTOR_H
00028
00029 #ifndef FXPACKER_H
00030 #include "FXPacker.h"
00031 #endif
00032
00033 namespace FX {
00034
00035 class FXFileList;
00036 class FXTextField;
00037 class FXComboBox;
00038 class FXDirBox;
00039 class FXButton;
00040 class FXMenuButton;
00041 class FXIcon;
00042 class FXMenuPane;
00043 class FXCheckButton;
00044 class FXMatrix;
00045 class FXHorizontalFrame;
00046
00047
00049 enum {
00050 SELECTFILE_ANY,
00051 SELECTFILE_EXISTING,
00052 SELECTFILE_MULTIPLE,
00053 SELECTFILE_MULTIPLE_ALL,
00054 SELECTFILE_DIRECTORY
00055 };
00056
00057
00059 class FXAPI FXFileSelector : public FXPacker {
00060 FXDECLARE(FXFileSelector)
00061 protected:
00062 FXFileList *filebox;
00063 FXTextField *filename;
00064 FXComboBox *filefilter;
00065 FXMenuPane *bookmarkmenu;
00066 FXHorizontalFrame *navbuttons;
00067 FXHorizontalFrame *fileboxframe;
00068 FXMatrix *entryblock;
00069 FXCheckButton *readonly;
00070 FXDirBox *dirbox;
00071 FXButton *accept;
00072 FXButton *cancel;
00073 FXIcon *updiricon;
00074 FXIcon *listicon;
00075 FXIcon *detailicon;
00076 FXIcon *iconsicon;
00077 FXIcon *homeicon;
00078 FXIcon *workicon;
00079 FXIcon *shownicon;
00080 FXIcon *hiddenicon;
00081 FXIcon *markicon;
00082 FXIcon *clearicon;
00083 FXIcon *newicon;
00084 FXIcon *deleteicon;
00085 FXIcon *moveicon;
00086 FXIcon *copyicon;
00087 FXIcon *linkicon;
00088 FXRecentFiles bookmarks;
00089 FXuint selectmode;
00090 FXbool navigable;
00091 protected:
00092 FXFileSelector(){}
00093 FXString *getSelectedFiles() const;
00094 FXString *getSelectedFilesOnly() const;
00095 private:
00096 FXFileSelector(const FXFileSelector&);
00097 FXFileSelector &operator=(const FXFileSelector&);
00098 public:
00099 long onCmdAccept(FXObject*,FXSelector,void*);
00100 long onCmdFilter(FXObject*,FXSelector,void*);
00101 long onCmdItemDblClicked(FXObject*,FXSelector,void*);
00102 long onCmdItemSelected(FXObject*,FXSelector,void*);
00103 long onCmdItemDeselected(FXObject*,FXSelector,void*);
00104 long onCmdDirectoryUp(FXObject*,FXSelector,void*);
00105 long onUpdDirectoryUp(FXObject*,FXSelector,void*);
00106 long onCmdDirTree(FXObject*,FXSelector,void*);
00107 long onCmdHome(FXObject*,FXSelector,void*);
00108 long onCmdWork(FXObject*,FXSelector,void*);
00109 long onCmdBookmark(FXObject*,FXSelector,void*);
00110 long onCmdVisit(FXObject*,FXSelector,void*);
00111 long onCmdNew(FXObject*,FXSelector,void*);
00112 long onUpdNew(FXObject*,FXSelector,void*);
00113 long onCmdMove(FXObject*,FXSelector,void*);
00114 long onCmdCopy(FXObject*,FXSelector,void*);
00115 long onCmdLink(FXObject*,FXSelector,void*);
00116 long onCmdDelete(FXObject*,FXSelector,void*);
00117 long onUpdSelected(FXObject*,FXSelector,void*);
00118 long onPopupMenu(FXObject*,FXSelector,void*);
00119 long onCmdImageSize(FXObject*,FXSelector,void*);
00120 long onUpdImageSize(FXObject*,FXSelector,void*);
00121 long onUpdNavigable(FXObject*,FXSelector,void*);
00122 public:
00123 enum {
00124 ID_FILEFILTER=FXPacker::ID_LAST,
00125 ID_ACCEPT,
00126 ID_FILELIST,
00127 ID_DIRECTORY_UP,
00128 ID_DIRTREE,
00129 ID_NORMAL_SIZE,
00130 ID_MEDIUM_SIZE,
00131 ID_GIANT_SIZE,
00132 ID_HOME,
00133 ID_WORK,
00134 ID_BOOKMARK,
00135 ID_BOOKMENU,
00136 ID_VISIT,
00137 ID_NEW,
00138 ID_DELETE,
00139 ID_MOVE,
00140 ID_COPY,
00141 ID_LINK,
00142 ID_LAST
00143 };
00144 public:
00145
00147 FXFileSelector(FXComposite *p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=0,FXint x=0,FXint y=0,FXint w=0,FXint h=0);
00148
00150 FXButton *acceptButton() const { return accept; }
00151
00153 FXButton *cancelButton() const { return cancel; }
00154
00156 void setFilename(const FXString& path);
00157
00159 FXString getFilename() const;
00160
00166 FXString* getFilenames() const;
00167
00169 void setPattern(const FXString& ptrn);
00170
00172 FXString getPattern() const;
00173
00188 void setPatternList(const FXString& patterns);
00189
00191 FXString getPatternList() const;
00192
00197 void setCurrentPattern(FXint n);
00198
00200 FXint getCurrentPattern() const;
00201
00203 FXString getPatternText(FXint patno) const;
00204
00206 void setPatternText(FXint patno,const FXString& text);
00207
00209 FXint getNumPatterns() const;
00210
00212 void allowPatternEntry(FXbool allow);
00213
00215 FXbool allowPatternEntry() const;
00216
00223 static FXString patternFromText(const FXString& pattern);
00224
00230 static FXString extensionFromPattern(const FXString& pattern);
00231
00233 void setDirectory(const FXString& path);
00234
00236 FXString getDirectory() const;
00237
00239 void setItemSpace(FXint s);
00240
00242 FXint getItemSpace() const;
00243
00245 void setFileBoxStyle(FXuint style);
00246
00248 FXuint getFileBoxStyle() const;
00249
00251 void setSelectMode(FXuint mode);
00252
00254 FXuint getSelectMode() const { return selectmode; }
00255
00257 void setMatchMode(FXuint mode);
00258
00260 FXuint getMatchMode() const;
00261
00263 FXbool showHiddenFiles() const;
00264
00266 void showHiddenFiles(FXbool showing);
00267
00269 FXbool showImages() const;
00270
00272 void showImages(FXbool showing);
00273
00275 FXint getImageSize() const;
00276
00278 void setImageSize(FXint size);
00279
00281 void showReadOnly(FXbool show);
00282
00284 FXbool shownReadOnly() const;
00285
00287 void setReadOnly(FXbool state);
00288
00290 FXbool getReadOnly() const;
00291
00293 void allowNavigation(FXbool flag){ navigable=flag; }
00294
00296 FXbool allowNavigation() const { return navigable; }
00297
00299 virtual void save(FXStream& store) const;
00300
00302 virtual void load(FXStream& store);
00303
00305 virtual ~FXFileSelector();
00306 };
00307
00308 }
00309
00310 #endif
00311 #endif