00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef Fl_File_Chooser_H
00031 #define Fl_File_Chooser_H
00032 #include <FL/Fl.H>
00033 #include <FL/Fl_Double_Window.H>
00034 #include <stdio.h>
00035 #include <stdlib.h>
00036 #include <string.h>
00037 #include <FL/Fl_Group.H>
00038 #include <FL/Fl_Choice.H>
00039 #include <FL/Fl_Menu_Button.H>
00040 #include <FL/Fl_Button.H>
00041 #include <FL/Fl_Preferences.H>
00042 #include <FL/Fl_Tile.H>
00043 #include <FL/Fl_File_Browser.H>
00044 #include <FL/Fl_Box.H>
00045 #include <FL/Fl_Check_Button.H>
00046 #include <FL/Fl_File_Input.H>
00047 #include <FL/Fl_Return_Button.H>
00048 #include <FL/fl_ask.H>
00049
00050 class FL_EXPORT Fl_File_Chooser {
00051 public:
00052 enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 };
00053 private:
00054 static Fl_Preferences prefs_;
00055 void (*callback_)(Fl_File_Chooser*, void *);
00056 void *data_;
00057 char directory_[FL_PATH_MAX];
00058 char pattern_[FL_PATH_MAX];
00059 char preview_text_[2048];
00060 int type_;
00061 void favoritesButtonCB();
00062 void favoritesCB(Fl_Widget *w);
00063 void fileListCB();
00064 void fileNameCB();
00065 void newdir();
00066 static void previewCB(Fl_File_Chooser *fc);
00067 void showChoiceCB();
00068 void update_favorites();
00069 void update_preview();
00070 public:
00071 Fl_File_Chooser(const char *d, const char *p, int t, const char *title);
00072 private:
00073 Fl_Double_Window *window;
00074 void cb_window_i(Fl_Double_Window*, void*);
00075 static void cb_window(Fl_Double_Window*, void*);
00076 Fl_Choice *showChoice;
00077 void cb_showChoice_i(Fl_Choice*, void*);
00078 static void cb_showChoice(Fl_Choice*, void*);
00079 Fl_Menu_Button *favoritesButton;
00080 void cb_favoritesButton_i(Fl_Menu_Button*, void*);
00081 static void cb_favoritesButton(Fl_Menu_Button*, void*);
00082 public:
00083 Fl_Button *newButton;
00084 private:
00085 void cb_newButton_i(Fl_Button*, void*);
00086 static void cb_newButton(Fl_Button*, void*);
00087 void cb__i(Fl_Tile*, void*);
00088 static void cb_(Fl_Tile*, void*);
00089 Fl_File_Browser *fileList;
00090 void cb_fileList_i(Fl_File_Browser*, void*);
00091 static void cb_fileList(Fl_File_Browser*, void*);
00092 Fl_Box *previewBox;
00093 public:
00094 Fl_Check_Button *previewButton;
00095 private:
00096 void cb_previewButton_i(Fl_Check_Button*, void*);
00097 static void cb_previewButton(Fl_Check_Button*, void*);
00098 Fl_File_Input *fileName;
00099 void cb_fileName_i(Fl_File_Input*, void*);
00100 static void cb_fileName(Fl_File_Input*, void*);
00101 Fl_Return_Button *okButton;
00102 void cb_okButton_i(Fl_Return_Button*, void*);
00103 static void cb_okButton(Fl_Return_Button*, void*);
00104 Fl_Button *cancelButton;
00105 void cb_cancelButton_i(Fl_Button*, void*);
00106 static void cb_cancelButton(Fl_Button*, void*);
00107 Fl_Double_Window *favWindow;
00108 Fl_File_Browser *favList;
00109 void cb_favList_i(Fl_File_Browser*, void*);
00110 static void cb_favList(Fl_File_Browser*, void*);
00111 Fl_Button *favUpButton;
00112 void cb_favUpButton_i(Fl_Button*, void*);
00113 static void cb_favUpButton(Fl_Button*, void*);
00114 Fl_Button *favDeleteButton;
00115 void cb_favDeleteButton_i(Fl_Button*, void*);
00116 static void cb_favDeleteButton(Fl_Button*, void*);
00117 Fl_Button *favDownButton;
00118 void cb_favDownButton_i(Fl_Button*, void*);
00119 static void cb_favDownButton(Fl_Button*, void*);
00120 Fl_Button *favCancelButton;
00121 void cb_favCancelButton_i(Fl_Button*, void*);
00122 static void cb_favCancelButton(Fl_Button*, void*);
00123 Fl_Return_Button *favOkButton;
00124 void cb_favOkButton_i(Fl_Return_Button*, void*);
00125 static void cb_favOkButton(Fl_Return_Button*, void*);
00126 public:
00127 ~Fl_File_Chooser();
00128 void callback(void (*cb)(Fl_File_Chooser *, void *), void *d = 0);
00129 void color(Fl_Color c);
00130 Fl_Color color();
00131 int count();
00132 void directory(const char *d);
00133 char * directory();
00134 void filter(const char *p);
00135 const char * filter();
00136 int filter_value();
00137 void filter_value(int f);
00138 void hide();
00139 void iconsize(uchar s);
00140 uchar iconsize();
00141 void label(const char *l);
00142 const char * label();
00143 void ok_label(const char *l);
00144 const char * ok_label();
00145 void preview(int e);
00146 int preview() const { return previewButton->value(); };
00147 void rescan();
00148 void rescan_keep_filename();
00149 void show();
00150 int shown();
00151 void textcolor(Fl_Color c);
00152 Fl_Color textcolor();
00153 void textfont(Fl_Font f);
00154 Fl_Font textfont();
00155 void textsize(Fl_Fontsize s);
00156 Fl_Fontsize textsize();
00157 void type(int t);
00158 int type();
00159 void * user_data() const;
00160 void user_data(void *d);
00161 const char *value(int f = 1);
00162 void value(const char *filename);
00163 int visible();
00167 static const char *add_favorites_label;
00171 static const char *all_files_label;
00175 static const char *custom_filter_label;
00179 static const char *existing_file_label;
00183 static const char *favorites_label;
00187 static const char *filename_label;
00191 static const char *filesystems_label;
00195 static const char *manage_favorites_label;
00199 static const char *new_directory_label;
00203 static const char *new_directory_tooltip;
00207 static const char *preview_label;
00211 static const char *save_label;
00215 static const char *show_label;
00220 static Fl_File_Sort_F *sort;
00221 private:
00222 Fl_Widget* ext_group;
00223 public:
00224 Fl_Widget* add_extra(Fl_Widget* gr);
00225 Fl_File_Browser *browser(void) {return fileList; };
00226 };
00227 FL_EXPORT char *fl_dir_chooser(const char *message,const char *fname,int relative=0);
00228 FL_EXPORT char *fl_file_chooser(const char *message,const char *pat,const char *fname,int relative=0);
00229 FL_EXPORT void fl_file_chooser_callback(void (*cb)(const char*));
00230 FL_EXPORT void fl_file_chooser_ok_label(const char*l);
00231 #endif
00232
00233
00234
00235