1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxGenericDirCtrl
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
11 // Only allow directory viewing/selection, no files
12 wxDIRCTRL_DIR_ONLY
= 0x0010,
13 // When setting the default path, select the first file in the directory
14 wxDIRCTRL_SELECT_FIRST
= 0x0020,
15 // Show the filter list
16 wxDIRCTRL_SHOW_FILTERS
= 0x0040,
17 // Use 3D borders on internal controls
18 wxDIRCTRL_3D_INTERNAL
= 0x0080,
20 wxDIRCTRL_EDIT_LABELS
= 0x0100,
21 // Allow multiple selection
22 wxDIRCTRL_MULTIPLE
= 0x0200
27 @class wxGenericDirCtrl
29 This control can be used to place a directory listing (with optional
30 files) on an arbitrary window.
32 The control contains a wxTreeCtrl window representing the directory
33 hierarchy, and optionally, a wxChoice window containing a list of filters.
36 @style{wxDIRCTRL_DIR_ONLY}
37 Only show directories, and not files.
38 @style{wxDIRCTRL_3D_INTERNAL}
39 Use 3D borders for internal controls.
40 @style{wxDIRCTRL_SELECT_FIRST}
41 When setting the default path, select the first file in the
43 @style{wxDIRCTRL_SHOW_FILTERS}
44 Show the drop-down filter list.
45 @style{wxDIRCTRL_EDIT_LABELS}
46 Allow the folder and file labels to be editable.
47 @style{wxDIRCTRL_MULTIPLE}
48 Allows multiple files and folders to be selected.
53 @appearance{genericdirctrl}
54 @event{EVT_DIRCTRL_SELECTIONCHANGED(id, func)}
55 Selected directory has changed.
56 Processes a @c wxEVT_DIRCTRL_SELECTIONCHANGED event type.
57 Notice that this event is generated even for the changes done by the
58 program itself and not only those done by the user.
60 @event{EVT_DIRCTRL_FILEACTIVATED(id, func)}
61 The user activated a file by double-clicking or pressing Enter.
64 class wxGenericDirCtrl
: public wxControl
86 Window style. Please see wxGenericDirCtrl for a list of possible
89 A filter string, using the same syntax as that for wxFileDialog.
90 This may be empty if filters are not being used. Example:
91 @c "All files (*.*)|*.*|JPEG files (*.jpg)|*.jpg"
93 The zero-indexed default filter setting.
97 wxGenericDirCtrl(wxWindow
* parent
, const wxWindowID id
= wxID_ANY
,
98 const wxString
& dir
= wxDirDialogDefaultFolderStr
,
99 const wxPoint
& pos
= wxDefaultPosition
,
100 const wxSize
& size
= wxDefaultSize
,
101 long style
= wxDIRCTRL_3D_INTERNAL
,
102 const wxString
& filter
= wxEmptyString
,
103 int defaultFilter
= 0,
104 const wxString
& name
= wxTreeCtrlNameStr
);
109 virtual ~wxGenericDirCtrl();
112 Collapse the given @a path.
114 virtual bool CollapsePath(const wxString
& path
);
117 Collapses the entire tree.
119 virtual void CollapseTree();
122 Create function for two-step construction. See wxGenericDirCtrl() for
125 bool Create(wxWindow
* parent
, const wxWindowID id
= wxID_ANY
,
126 const wxString
& dir
= wxDirDialogDefaultFolderStr
,
127 const wxPoint
& pos
= wxDefaultPosition
,
128 const wxSize
& size
= wxDefaultSize
,
129 long style
= wxDIRCTRL_3D_INTERNAL
,
130 const wxString
& filter
= wxEmptyString
, int defaultFilter
= 0,
131 const wxString
& name
= wxTreeCtrlNameStr
);
134 Tries to expand as much of the given @a path as possible, so that the
135 filename or directory is visible in the tree control.
137 virtual bool ExpandPath(const wxString
& path
);
140 Gets the default path.
142 virtual wxString
GetDefaultPath() const;
145 Gets selected filename path only (else empty string).
147 This function doesn't count a directory as a selection.
149 virtual wxString
GetFilePath() const;
152 Fills the array @a paths with the currently selected filepaths.
154 This function doesn't count a directory as a selection.
156 virtual void GetFilePaths(wxArrayString
& paths
) const;
159 Returns the filter string.
161 virtual wxString
GetFilter() const;
164 Returns the current filter index (zero-based).
166 virtual int GetFilterIndex() const;
169 Returns a pointer to the filter list control (if present).
171 virtual wxDirFilterListCtrl
* GetFilterListCtrl() const;
174 Gets the currently-selected directory or filename.
176 virtual wxString
GetPath() const;
179 Gets the path corresponding to the given tree control item.
183 wxString
GetPath(wxTreeItemId itemId
) const;
186 Fills the array @a paths with the selected directories and filenames.
188 virtual void GetPaths(wxArrayString
& paths
) const;
191 Returns the root id for the tree control.
193 virtual wxTreeItemId
GetRootId();
196 Returns a pointer to the tree control.
198 virtual wxTreeCtrl
* GetTreeCtrl() const;
201 Initializes variables.
206 Collapse and expand the tree, thus re-creating it from scratch. May be
207 used to update the displayed directory content.
209 virtual void ReCreateTree();
212 Sets the default path.
214 virtual void SetDefaultPath(const wxString
& path
);
217 Sets the filter string.
219 virtual void SetFilter(const wxString
& filter
);
222 Sets the current filter index (zero-based).
224 virtual void SetFilterIndex(int n
);
227 Sets the current path.
229 virtual void SetPath(const wxString
& path
);
233 If @true, hidden folders and files will be displayed by the
234 control. If @false, they will not be displayed.
236 virtual void ShowHidden(bool show
);
239 Selects the given item.
241 In multiple selection controls, can be also used to deselect a
242 currently selected item if the value of @a select is false.
243 Existing selections are not changed. Only visible items can be
244 (de)selected, otherwise use ExpandPath().
246 virtual void SelectPath(const wxString
& path
, bool select
= true);
249 Selects only the specified paths, clearing any previous selection.
251 Only supported when wxDIRCTRL_MULTIPLE is set.
253 virtual void SelectPaths(const wxArrayString
& paths
);
256 Removes the selection from all currently selected items.
258 virtual void UnselectAll();
263 class wxDirFilterListCtrl
: public wxChoice
266 wxDirFilterListCtrl();
267 wxDirFilterListCtrl(wxGenericDirCtrl
* parent
, const wxWindowID id
= wxID_ANY
,
268 const wxPoint
& pos
= wxDefaultPosition
,
269 const wxSize
& size
= wxDefaultSize
,
271 bool Create(wxGenericDirCtrl
* parent
, const wxWindowID id
= wxID_ANY
,
272 const wxPoint
& pos
= wxDefaultPosition
,
273 const wxSize
& size
= wxDefaultSize
,
276 virtual ~wxDirFilterListCtrl() {}
281 void FillFilterList(const wxString
& filter
, int defaultFilter
);
284 wxEventType wxEVT_DIRCTRL_SELECTIONCHANGED
;
285 wxEventType wxEVT_DIRCTRL_FILEACTIVATED
;