]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/filepicker.h
Avoid needless second string conversion when adding files to memory FS.
[wxWidgets.git] / interface / wx / filepicker.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: filepicker.h
e54c96f1 3// Purpose: interface of wxFilePickerCtrl
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxFilePickerCtrl
7c913512 11
23324ae1
FM
12 This control allows the user to select a file. The generic implementation is
13 a button which brings up a wxFileDialog when clicked. Native implementation
14 may differ but this is usually a (small) widget which give access to the
0b70c946 15 file-chooser dialog.
23324ae1 16 It is only available if @c wxUSE_FILEPICKERCTRL is set to 1 (the default).
7c913512 17
23324ae1 18 @beginStyleTable
8c6791e4 19 @style{wxFLP_DEFAULT_STYLE}
23324ae1
FM
20 The default style: includes wxFLP_OPEN | wxFLP_FILE_MUST_EXIST and,
21 under wxMSW only, wxFLP_USE_TEXTCTRL.
8c6791e4 22 @style{wxFLP_USE_TEXTCTRL}
23324ae1
FM
23 Creates a text control to the left of the picker button which is
24 completely managed by the wxFilePickerCtrl and which can be used by
25 the user to specify a path (see SetPath). The text control is
26 automatically synchronized with button's value. Use functions
27 defined in wxPickerBase to modify the text control.
8c6791e4 28 @style{wxFLP_OPEN}
23324ae1 29 Creates a picker which allows the user to select a file to open.
8c6791e4 30 @style{wxFLP_SAVE}
23324ae1 31 Creates a picker which allows the user to select a file to save.
8c6791e4 32 @style{wxFLP_OVERWRITE_PROMPT}
23324ae1
FM
33 Can be combined with wxFLP_SAVE only: ask confirmation to the user
34 before selecting a file.
8c6791e4 35 @style{wxFLP_FILE_MUST_EXIST}
23324ae1
FM
36 Can be combined with wxFLP_OPEN only: the selected file must be an
37 existing file.
8c6791e4 38 @style{wxFLP_CHANGE_DIR}
23324ae1 39 Change current working directory on each user file selection change.
75bc8b34
VZ
40 @style{wxFLP_SMALL}
41 Use smaller version of the control with a small "..." button instead
42 of the normal "Browse" one. This flag is new since wxWidgets 2.9.3.
23324ae1 43 @endStyleTable
7c913512 44
0b70c946 45
3051a44a 46 @beginEventEmissionTable{wxFileDirPickerEvent}
0b70c946
FM
47 @event{EVT_FILEPICKER_CHANGED(id, func)}
48 The user changed the file selected in the control either using the
49 button or using text control (see wxFLP_USE_TEXTCTRL; note that in
50 this case the event is fired only if the user's input is valid,
51 e.g. an existing file path if wxFLP_FILE_MUST_EXIST was given).
52 @endEventTable
53
23324ae1 54 @library{wxcore}
d18d9f60 55 @category{pickers}
7e59b885 56 @appearance{filepickerctrl.png}
7c913512 57
e54c96f1 58 @see wxFileDialog, wxFileDirPickerEvent
23324ae1
FM
59*/
60class wxFilePickerCtrl : public wxPickerBase
61{
62public:
63 /**
64 Initializes the object and calls Create() with
65 all the parameters.
66 */
4cc4bfaf 67 wxFilePickerCtrl(wxWindow* parent, wxWindowID id,
23324ae1 68 const wxString& path = wxEmptyString,
a44f3b5a
FM
69 const wxString& message = wxFileSelectorPromptStr,
70 const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
23324ae1
FM
71 const wxPoint& pos = wxDefaultPosition,
72 const wxSize& size = wxDefaultSize,
73 long style = wxFLP_DEFAULT_STYLE,
74 const wxValidator& validator = wxDefaultValidator,
a44f3b5a 75 const wxString& name = wxFilePickerCtrlNameStr);
23324ae1
FM
76
77 /**
0b70c946
FM
78 Creates this widget with the given parameters.
79
7c913512 80 @param parent
4cc4bfaf 81 Parent window, must not be non-@NULL.
7c913512 82 @param id
4cc4bfaf 83 The identifier for the control.
7c913512 84 @param path
4cc4bfaf 85 The initial file shown in the control. Must be a valid path to a file or
0b70c946 86 the empty string.
7c913512 87 @param message
4cc4bfaf 88 The message shown to the user in the wxFileDialog shown by the control.
7c913512 89 @param wildcard
4cc4bfaf 90 A wildcard which defines user-selectable files (use the same syntax as for
0b70c946 91 wxFileDialog's wildcards).
7c913512 92 @param pos
4cc4bfaf 93 Initial position.
7c913512 94 @param size
4cc4bfaf 95 Initial size.
7c913512 96 @param style
4cc4bfaf 97 The window style, see wxFLP_* flags.
7c913512 98 @param validator
77bfb902 99 Validator which can be used for additional data checks.
7c913512 100 @param name
4cc4bfaf 101 Control name.
3c4f71cc 102
d29a9a8a 103 @return @true if the control was successfully created or @false if
0b70c946 104 creation failed.
23324ae1 105 */
4cc4bfaf 106 bool Create(wxWindow* parent, wxWindowID id,
23324ae1 107 const wxString& path = wxEmptyString,
43c48e1e
FM
108 const wxString& message = wxFileSelectorPromptStr,
109 const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
23324ae1
FM
110 const wxPoint& pos = wxDefaultPosition,
111 const wxSize& size = wxDefaultSize,
112 long style = wxFLP_DEFAULT_STYLE,
113 const wxValidator& validator = wxDefaultValidator,
43c48e1e 114 const wxString& name = wxFilePickerCtrlNameStr);
23324ae1
FM
115
116 /**
0b70c946
FM
117 Similar to GetPath() but returns the path of the currently selected
118 file as a wxFileName object.
23324ae1 119 */
328f5751 120 wxFileName GetFileName() const;
23324ae1
FM
121
122 /**
123 Returns the absolute path of the currently selected file.
124 */
328f5751 125 wxString GetPath() const;
23324ae1
FM
126
127 /**
0b70c946
FM
128 This method does the same thing as SetPath() but takes a wxFileName
129 object instead of a string.
23324ae1 130 */
4cc4bfaf 131 void SetFileName(const wxFileName& filename);
23324ae1 132
75cb911c
VZ
133 /**
134 Set the directory to show when starting to browse for files.
135
136 This function is mostly useful for the file picker controls which have
137 no selection initially to configure the directory that should be shown
138 if the user starts browsing for files as otherwise the directory of
139 initially selected file is used, which is usually the desired
140 behaviour and so the directory specified by this function is ignored in
141 this case.
142
143 @since 2.9.4
144 */
145 void SetInitialDirectory(const wxString& dir);
146
23324ae1 147 /**
0b70c946
FM
148 Sets the absolute path of the currently selected file.
149 This must be a valid file if the @c wxFLP_FILE_MUST_EXIST style was given.
23324ae1 150 */
4cc4bfaf 151 void SetPath(const wxString& filename);
23324ae1
FM
152};
153
154
e54c96f1 155
23324ae1
FM
156/**
157 @class wxDirPickerCtrl
7c913512 158
23324ae1 159 This control allows the user to select a directory. The generic implementation
0b70c946 160 is a button which brings up a wxDirDialog when clicked. Native implementation
23324ae1 161 may differ but this is usually a (small) widget which give access to the
0b70c946 162 dir-chooser dialog.
23324ae1 163 It is only available if @c wxUSE_DIRPICKERCTRL is set to 1 (the default).
7c913512 164
23324ae1 165 @beginStyleTable
8c6791e4 166 @style{wxDIRP_DEFAULT_STYLE}
23324ae1
FM
167 The default style: includes wxDIRP_DIR_MUST_EXIST and, under wxMSW
168 only, wxDIRP_USE_TEXTCTRL.
8c6791e4 169 @style{wxDIRP_USE_TEXTCTRL}
23324ae1
FM
170 Creates a text control to the left of the picker button which is
171 completely managed by the wxDirPickerCtrl and which can be used by
172 the user to specify a path (see SetPath). The text control is
173 automatically synchronized with button's value. Use functions
174 defined in wxPickerBase to modify the text control.
8c6791e4 175 @style{wxDIRP_DIR_MUST_EXIST}
23324ae1
FM
176 Creates a picker which allows to select only existing directories.
177 wxGTK control always adds this flag internally as it does not
178 support its absence.
8c6791e4 179 @style{wxDIRP_CHANGE_DIR}
0b70c946 180 Change current working directory on each user directory selection change.
75bc8b34
VZ
181 @style{wxDIRP_SMALL}
182 Use smaller version of the control with a small "..." button instead
183 of the normal "Browse" one. This flag is new since wxWidgets 2.9.3.
23324ae1 184 @endStyleTable
7c913512 185
3051a44a 186 @beginEventEmissionTable{wxFileDirPickerEvent}
0b70c946
FM
187 @event{EVT_DIRPICKER_CHANGED(id, func)}
188 The user changed the directory selected in the control either using the
189 button or using text control (see wxDIRP_USE_TEXTCTRL; note that in this
190 case the event is fired only if the user's input is valid, e.g. an
191 existing directory path).
192 @endEventTable
193
194
23324ae1 195 @library{wxcore}
d18d9f60 196 @category{pickers}
7e59b885 197 @appearance{dirpickerctrl.png}
7c913512 198
e54c96f1 199 @see wxDirDialog, wxFileDirPickerEvent
23324ae1
FM
200*/
201class wxDirPickerCtrl : public wxPickerBase
202{
203public:
204 /**
205 Initializes the object and calls Create() with
206 all the parameters.
207 */
4cc4bfaf 208 wxDirPickerCtrl(wxWindow* parent, wxWindowID id,
23324ae1 209 const wxString& path = wxEmptyString,
408776d0 210 const wxString& message = wxDirSelectorPromptStr,
23324ae1
FM
211 const wxPoint& pos = wxDefaultPosition,
212 const wxSize& size = wxDefaultSize,
213 long style = wxDIRP_DEFAULT_STYLE,
214 const wxValidator& validator = wxDefaultValidator,
408776d0 215 const wxString& name = wxDirPickerCtrlNameStr);
23324ae1
FM
216
217 /**
0b70c946
FM
218 Creates the widgets with the given parameters.
219
7c913512 220 @param parent
4cc4bfaf 221 Parent window, must not be non-@NULL.
7c913512 222 @param id
4cc4bfaf 223 The identifier for the control.
7c913512 224 @param path
4cc4bfaf 225 The initial directory shown in the control. Must be a valid path to a
0b70c946 226 directory or the empty string.
7c913512 227 @param message
4cc4bfaf 228 The message shown to the user in the wxDirDialog shown by the control.
7c913512 229 @param pos
4cc4bfaf 230 Initial position.
7c913512 231 @param size
4cc4bfaf 232 Initial size.
7c913512 233 @param style
4cc4bfaf 234 The window style, see wxDIRP_* flags.
7c913512 235 @param validator
4cc4bfaf 236 Validator which can be used for additional date checks.
7c913512 237 @param name
4cc4bfaf 238 Control name.
3c4f71cc 239
d29a9a8a 240 @return @true if the control was successfully created or @false if
0b70c946 241 creation failed.
23324ae1 242 */
4cc4bfaf 243 bool Create(wxWindow* parent, wxWindowID id,
23324ae1 244 const wxString& path = wxEmptyString,
43c48e1e 245 const wxString& message = wxDirSelectorPromptStr,
23324ae1
FM
246 const wxPoint& pos = wxDefaultPosition,
247 const wxSize& size = wxDefaultSize,
248 long style = wxDIRP_DEFAULT_STYLE,
249 const wxValidator& validator = wxDefaultValidator,
43c48e1e 250 const wxString& name = wxDirPickerCtrlNameStr);
23324ae1
FM
251
252 /**
0b70c946
FM
253 Returns the absolute path of the currently selected directory as a
254 wxFileName object.
255 This function is equivalent to GetPath().
23324ae1 256 */
328f5751 257 wxFileName GetDirName() const;
23324ae1
FM
258
259 /**
260 Returns the absolute path of the currently selected directory.
261 */
328f5751 262 wxString GetPath() const;
23324ae1
FM
263
264 /**
0b70c946 265 Just like SetPath() but this function takes a wxFileName object.
23324ae1 266 */
4cc4bfaf 267 void SetDirName(const wxFileName& dirname);
23324ae1 268
75cb911c
VZ
269 /**
270 Set the directory to show when starting to browse for directories.
271
272 This function is mostly useful for the directory picker controls which
273 have no selection initially to configure the directory that should be
274 shown if the user starts browsing for directories as otherwise the
275 initially selected directory is used, which is usually the desired
276 behaviour and so the directory specified by this function is ignored in
277 this case.
278
279 @since 2.9.4
280 */
281 void SetInitialDirectory(const wxString& dir);
282
23324ae1
FM
283 /**
284 Sets the absolute path of (the default converter uses current locale's
0b70c946
FM
285 charset)the currently selected directory.
286 This must be a valid directory if @c wxDIRP_DIR_MUST_EXIST style was given.
23324ae1 287 */
4cc4bfaf 288 void SetPath(const wxString& dirname);
23324ae1
FM
289};
290
291
e54c96f1 292
23324ae1
FM
293/**
294 @class wxFileDirPickerEvent
7c913512 295
23324ae1
FM
296 This event class is used for the events generated by
297 wxFilePickerCtrl and by wxDirPickerCtrl.
7c913512 298
674d80a7
FM
299 @beginEventTable{wxFileDirPickerEvent}
300 @event{EVT_FILEPICKER_CHANGED(id, func)}
301 Generated whenever the selected file changes.
302 @event{EVT_DIRPICKER_CHANGED(id, func)}
303 Generated whenever the selected directory changes.
304 @endEventTable
305
23324ae1 306 @library{wxcore}
0b70c946 307 @category{events}
7c913512 308
0b70c946 309 @see wxFilePickerCtrl, wxDirPickerCtrl
23324ae1
FM
310*/
311class wxFileDirPickerEvent : public wxCommandEvent
312{
313public:
314 /**
315 The constructor is not normally used by the user code.
316 */
4cc4bfaf 317 wxFileDirPickerEvent(wxEventType type, wxObject* generator,
23324ae1 318 int id,
a44f3b5a 319 const wxString& path);
23324ae1
FM
320
321 /**
322 Retrieve the absolute path of the file/directory the user has just selected.
323 */
328f5751 324 wxString GetPath() const;
23324ae1
FM
325
326 /**
327 Set the absolute path of the file/directory associated with the event.
328 */
4cc4bfaf 329 void SetPath(const wxString& path);
23324ae1 330};
e54c96f1 331