// Purpose: interface of wxGenericDirCtrl
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+enum
+{
+ // Only allow directory viewing/selection, no files
+ wxDIRCTRL_DIR_ONLY = 0x0010,
+ // When setting the default path, select the first file in the directory
+ wxDIRCTRL_SELECT_FIRST = 0x0020,
+ // Use 3D borders on internal controls
+ wxDIRCTRL_3D_INTERNAL = 0x0080,
+ // Editable labels
+ wxDIRCTRL_EDIT_LABELS = 0x0100,
+ // Allow multiple selection
+ wxDIRCTRL_MULTIPLE = 0x0200
+};
+
+
/**
@class wxGenericDirCtrl
- @wxheader{dirctrl.h}
This control can be used to place a directory listing (with optional
files) on an arbitrary window.
directory.
@style{wxDIRCTRL_EDIT_LABELS}
Allow the folder and file labels to be editable.
+ @style{wxDIRCTRL_MULTIPLE}
+ Allows multiple files and folders to be selected.
@endStyleTable
- @library{wxbase}
+ @library{wxcore}
@category{ctrl}
- <!-- @appearance{genericdirctrl.png} -->
+ @appearance{genericdirctrl.png}
*/
class wxGenericDirCtrl : public wxControl
{
Default constructor.
*/
wxGenericDirCtrl();
+
/**
Main constructor.
@param name
The window name.
*/
- wxGenericDirCtrl(wxWindow* parent, const wxWindowID id = -1,
+ wxGenericDirCtrl(wxWindow* parent, const wxWindowID id = wxID_ANY,
const wxString& dir = wxDirDialogDefaultFolderStr,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
- long style = wxDIRCTRL_3D_INTERNAL|wxBORDER_SUNKEN,
+ long style = wxDIRCTRL_3D_INTERNAL,
const wxString& filter = wxEmptyString,
int defaultFilter = 0,
const wxString& name = wxTreeCtrlNameStr);
/**
Destructor.
*/
- ~wxGenericDirCtrl();
+ virtual ~wxGenericDirCtrl();
/**
Collapse the given @a path.
*/
- bool CollapsePath(const wxString& path);
+ virtual bool CollapsePath(const wxString& path);
/**
Collapses the entire tree.
*/
- void CollapseTree();
+ virtual void CollapseTree();
/**
Create function for two-step construction. See wxGenericDirCtrl() for
details.
*/
- bool Create(wxWindow* parent, const wxWindowID id = -1,
+ bool Create(wxWindow* parent, const wxWindowID id = wxID_ANY,
const wxString& dir = wxDirDialogDefaultFolderStr,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
- long style = wxDIRCTRL_3D_INTERNAL|wxBORDER_SUNKEN,
- const wxString& filter = wxEmptyString,
- int defaultFilter = 0,
+ long style = wxDIRCTRL_3D_INTERNAL,
+ const wxString& filter = wxEmptyString, int defaultFilter = 0,
const wxString& name = wxTreeCtrlNameStr);
/**
Tries to expand as much of the given @a path as possible, so that the
filename or directory is visible in the tree control.
*/
- bool ExpandPath(const wxString& path);
+ virtual bool ExpandPath(const wxString& path);
/**
Gets the default path.
*/
- wxString GetDefaultPath() const;
+ virtual wxString GetDefaultPath() const;
/**
Gets selected filename path only (else empty string).
This function doesn't count a directory as a selection.
*/
- wxString GetFilePath() const;
+ virtual wxString GetFilePath() const;
+
+ /**
+ Fills the array @a paths with the currently selected filepaths.
+
+ This function doesn't count a directory as a selection.
+ */
+ virtual void GetFilePaths(wxArrayString& paths) const;
/**
Returns the filter string.
*/
- wxString GetFilter() const;
+ virtual wxString GetFilter() const;
/**
Returns the current filter index (zero-based).
*/
- int GetFilterIndex() const;
+ virtual int GetFilterIndex() const;
/**
Returns a pointer to the filter list control (if present).
*/
- wxDirFilterListCtrl* GetFilterListCtrl() const;
+ virtual wxDirFilterListCtrl* GetFilterListCtrl() const;
/**
Gets the currently-selected directory or filename.
*/
- wxString GetPath() const;
+ virtual wxString GetPath() const;
+
+ /**
+ Fills the array @a paths with the selected directories and filenames.
+ */
+ virtual void GetPaths(wxArrayString& paths) const;
/**
Returns the root id for the tree control.
*/
- wxTreeItemId GetRootId();
+ virtual wxTreeItemId GetRootId();
/**
Returns a pointer to the tree control.
*/
- wxTreeCtrl* GetTreeCtrl() const;
+ virtual wxTreeCtrl* GetTreeCtrl() const;
/**
Initializes variables.
*/
- void Init();
+ virtual void Init();
/**
Collapse and expand the tree, thus re-creating it from scratch. May be
used to update the displayed directory content.
*/
- void ReCreateTree();
+ virtual void ReCreateTree();
/**
Sets the default path.
*/
- void SetDefaultPath(const wxString& path);
+ virtual void SetDefaultPath(const wxString& path);
/**
Sets the filter string.
*/
- void SetFilter(const wxString& filter);
+ virtual void SetFilter(const wxString& filter);
/**
Sets the current filter index (zero-based).
*/
- void SetFilterIndex(int n);
+ virtual void SetFilterIndex(int n);
/**
Sets the current path.
*/
- void SetPath(const wxString& path);
+ virtual void SetPath(const wxString& path);
/**
@param show
If @true, hidden folders and files will be displayed by the
control. If @false, they will not be displayed.
*/
- void ShowHidden(bool show);
+ virtual void ShowHidden(bool show);
+
+ /**
+ Selects the given item.
+
+ In multiple selection controls, can be also used to deselect a
+ currently selected item if the value of @a select is false.
+ Existing selections are not changed. Only visible items can be
+ (de)selected, otherwise use ExpandPath().
+ */
+ virtual void SelectPath(const wxString& path, bool select = true);
+
+ /**
+ Selects only the specified paths, clearing any previous selection.
+
+ Only supported when wxDIRCTRL_MULTIPLE is set.
+ */
+ virtual void SelectPaths(const wxArrayString& paths);
+
+ /**
+ Removes the selection from all currently selected items.
+ */
+ virtual void UnselectAll();
};
+
+
+class wxDirFilterListCtrl: public wxChoice
+{
+public:
+ wxDirFilterListCtrl();
+ wxDirFilterListCtrl(wxGenericDirCtrl* parent, const wxWindowID id = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0);
+ bool Create(wxGenericDirCtrl* parent, const wxWindowID id = wxID_ANY,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = 0);
+
+ virtual ~wxDirFilterListCtrl() {}
+
+ void Init();
+
+ //// Operations
+ void FillFilterList(const wxString& filter, int defaultFilter);
+};