1 // 2 // "$Id: Fl_File_Chooser.H 8786 2011-06-07 11:41:36Z manolo $" 3 // 4 // Fl_File_Chooser dialog for the Fast Light Tool Kit (FLTK). 5 // 6 // Copyright 1998-2011 by Bill Spitzak and others. 7 // 8 // This library is free software; you can redistribute it and/or 9 // modify it under the terms of the GNU Library General Public 10 // License as published by the Free Software Foundation; either 11 // version 2 of the License, or (at your option) any later version. 12 // 13 // This library is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 // Library General Public License for more details. 17 // 18 // You should have received a copy of the GNU Library General Public 19 // License along with this library; if not, write to the Free Software 20 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 21 // USA. 22 // 23 // Please report all bugs and problems on the following page: 24 // 25 // http://www.fltk.org/str.php 26 // 27 28 // generated by Fast Light User Interface Designer (fluid) version 1.0300 29 30 #ifndef Fl_File_Chooser_H 31 #define Fl_File_Chooser_H 32 #include <FL/Fl.H> 33 #include <FL/Fl_Double_Window.H> 34 #include <stdio.h> 35 #include <stdlib.h> 36 #include <string.h> 37 #include <FL/Fl_Group.H> 38 #include <FL/Fl_Choice.H> 39 #include <FL/Fl_Menu_Button.H> 40 #include <FL/Fl_Button.H> 41 #include <FL/Fl_Preferences.H> 42 #include <FL/Fl_Tile.H> 43 #include <FL/Fl_File_Browser.H> 44 #include <FL/Fl_Box.H> 45 #include <FL/Fl_Check_Button.H> 46 #include <FL/Fl_File_Input.H> 47 #include <FL/Fl_Return_Button.H> 48 #include <FL/fl_ask.H> 49 50 class FL_EXPORT Fl_File_Chooser { 51 public: 52 enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 }; 53 private: 54 static Fl_Preferences prefs_; 55 void (*callback_)(Fl_File_Chooser*, void *); 56 void *data_; 57 char directory_[FL_PATH_MAX]; 58 char pattern_[FL_PATH_MAX]; 59 char preview_text_[2048]; 60 int type_; 61 void favoritesButtonCB(); 62 void favoritesCB(Fl_Widget *w); 63 void fileListCB(); 64 void fileNameCB(); 65 void newdir(); 66 static void previewCB(Fl_File_Chooser *fc); 67 void showChoiceCB(); 68 void update_favorites(); 69 void update_preview(); 70 public: 71 Fl_File_Chooser(const char *d, const char *p, int t, const char *title); 72 private: 73 Fl_Double_Window *window; 74 void cb_window_i(Fl_Double_Window*, void*); 75 static void cb_window(Fl_Double_Window*, void*); 76 Fl_Choice *showChoice; 77 void cb_showChoice_i(Fl_Choice*, void*); 78 static void cb_showChoice(Fl_Choice*, void*); 79 Fl_Menu_Button *favoritesButton; 80 void cb_favoritesButton_i(Fl_Menu_Button*, void*); 81 static void cb_favoritesButton(Fl_Menu_Button*, void*); 82 public: 83 Fl_Button *newButton; 84 private: 85 void cb_newButton_i(Fl_Button*, void*); 86 static void cb_newButton(Fl_Button*, void*); 87 void cb__i(Fl_Tile*, void*); 88 static void cb_(Fl_Tile*, void*); 89 Fl_File_Browser *fileList; 90 void cb_fileList_i(Fl_File_Browser*, void*); 91 static void cb_fileList(Fl_File_Browser*, void*); 92 Fl_Box *previewBox; 93 public: 94 Fl_Check_Button *previewButton; 95 private: 96 void cb_previewButton_i(Fl_Check_Button*, void*); 97 static void cb_previewButton(Fl_Check_Button*, void*); 98 public: 99 Fl_Check_Button *showHiddenButton; 100 private: 101 void cb_showHiddenButton_i(Fl_Check_Button*, void*); 102 static void cb_showHiddenButton(Fl_Check_Button*, void*); 103 Fl_File_Input *fileName; 104 void cb_fileName_i(Fl_File_Input*, void*); 105 static void cb_fileName(Fl_File_Input*, void*); 106 Fl_Return_Button *okButton; 107 void cb_okButton_i(Fl_Return_Button*, void*); 108 static void cb_okButton(Fl_Return_Button*, void*); 109 Fl_Button *cancelButton; 110 void cb_cancelButton_i(Fl_Button*, void*); 111 static void cb_cancelButton(Fl_Button*, void*); 112 Fl_Double_Window *favWindow; 113 Fl_File_Browser *favList; 114 void cb_favList_i(Fl_File_Browser*, void*); 115 static void cb_favList(Fl_File_Browser*, void*); 116 Fl_Button *favUpButton; 117 void cb_favUpButton_i(Fl_Button*, void*); 118 static void cb_favUpButton(Fl_Button*, void*); 119 Fl_Button *favDeleteButton; 120 void cb_favDeleteButton_i(Fl_Button*, void*); 121 static void cb_favDeleteButton(Fl_Button*, void*); 122 Fl_Button *favDownButton; 123 void cb_favDownButton_i(Fl_Button*, void*); 124 static void cb_favDownButton(Fl_Button*, void*); 125 Fl_Button *favCancelButton; 126 void cb_favCancelButton_i(Fl_Button*, void*); 127 static void cb_favCancelButton(Fl_Button*, void*); 128 Fl_Return_Button *favOkButton; 129 void cb_favOkButton_i(Fl_Return_Button*, void*); 130 static void cb_favOkButton(Fl_Return_Button*, void*); 131 public: 132 ~Fl_File_Chooser(); 133 void callback(void (*cb)(Fl_File_Chooser *, void *), void *d = 0); 134 void color(Fl_Color c); 135 Fl_Color color(); 136 int count(); 137 void directory(const char *d); 138 char * directory(); 139 void filter(const char *p); 140 const char * filter(); 141 int filter_value(); 142 void filter_value(int f); 143 void hide(); 144 void iconsize(uchar s); 145 uchar iconsize(); 146 void label(const char *l); 147 const char * label(); 148 void ok_label(const char *l); 149 const char * ok_label(); 150 void preview(int e); preview()151 int preview() const { return previewButton->value(); }; 152 private: 153 void showHidden(int e); 154 void remove_hidden_files(); 155 public: 156 void rescan(); 157 void rescan_keep_filename(); 158 void show(); 159 int shown(); 160 void textcolor(Fl_Color c); 161 Fl_Color textcolor(); 162 void textfont(Fl_Font f); 163 Fl_Font textfont(); 164 void textsize(Fl_Fontsize s); 165 Fl_Fontsize textsize(); 166 void type(int t); 167 int type(); 168 void * user_data() const; 169 void user_data(void *d); 170 const char *value(int f = 1); 171 void value(const char *filename); 172 int visible(); 173 /** 174 [standard text may be customized at run-time] 175 */ 176 static const char *add_favorites_label; 177 /** 178 [standard text may be customized at run-time] 179 */ 180 static const char *all_files_label; 181 /** 182 [standard text may be customized at run-time] 183 */ 184 static const char *custom_filter_label; 185 /** 186 [standard text may be customized at run-time] 187 */ 188 static const char *existing_file_label; 189 /** 190 [standard text may be customized at run-time] 191 */ 192 static const char *favorites_label; 193 /** 194 [standard text may be customized at run-time] 195 */ 196 static const char *filename_label; 197 /** 198 [standard text may be customized at run-time] 199 */ 200 static const char *filesystems_label; 201 /** 202 [standard text may be customized at run-time] 203 */ 204 static const char *manage_favorites_label; 205 /** 206 [standard text may be customized at run-time] 207 */ 208 static const char *new_directory_label; 209 /** 210 [standard text may be customized at run-time] 211 */ 212 static const char *new_directory_tooltip; 213 /** 214 [standard text may be customized at run-time] 215 */ 216 static const char *preview_label; 217 /** 218 [standard text may be customized at run-time] 219 */ 220 static const char *save_label; 221 /** 222 [standard text may be customized at run-time] 223 */ 224 static const char *show_label; 225 /** 226 [standard text may be customized at run-time] 227 */ 228 static const char *hidden_label; 229 /** 230 the sort function that is used when loading 231 the contents of a directory. 232 */ 233 static Fl_File_Sort_F *sort; 234 private: 235 Fl_Widget* ext_group; 236 public: 237 Fl_Widget* add_extra(Fl_Widget* gr); 238 }; 239 FL_EXPORT char *fl_dir_chooser(const char *message,const char *fname,int relative=0); 240 FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname,int relative=0); 241 FL_EXPORT void fl_file_chooser_callback(void (*cb)(const char*)); 242 FL_EXPORT void fl_file_chooser_ok_label(const char*l); 243 #endif 244 245 // 246 // End of "$Id: Fl_File_Chooser.H 8786 2011-06-07 11:41:36Z manolo $". 247 // 248