X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae3c17b4013e80b99976c750c19fca47729517f6..7344108e8a129a3f9b4df5ab0f98a1713db03b89:/interface/wx/dirctrl.h?ds=sidebyside diff --git a/interface/wx/dirctrl.h b/interface/wx/dirctrl.h index b83c4248df..0b50fa03ac 100644 --- a/interface/wx/dirctrl.h +++ b/interface/wx/dirctrl.h @@ -3,12 +3,26 @@ // 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. @@ -26,11 +40,13 @@ 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} */ class wxGenericDirCtrl : public wxControl { @@ -39,6 +55,7 @@ public: Default constructor. */ wxGenericDirCtrl(); + /** Main constructor. @@ -64,11 +81,11 @@ public: @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); @@ -76,115 +93,170 @@ public: /** 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); +};