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