]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/dirctrl.h
avoid infinite recursion for richtooltops, (hopefully) fixes #15070
[wxWidgets.git] / interface / wx / dirctrl.h
index b83c4248df8d8426fca17ac25ab6b9160c389798..37c96d45a058be783324ec76799033d5c9eabb34 100644 (file)
@@ -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.
            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}
+    @event{EVT_DIRCTRL_CHANGED(id, func)}
+          Selected directory has changed.
+          Processes a @c wxEVT_COMMAND_DIRCTRL_CHANGED event type.
+          Notice that this event is generated even for the changes done by the
+          program itself and not only those done by the user.
+          @since 2.9.5
 */
 class wxGenericDirCtrl : public wxControl
 {
@@ -39,6 +61,7 @@ public:
         Default constructor.
     */
     wxGenericDirCtrl();
+
     /**
         Main constructor.
 
@@ -64,11 +87,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 +99,177 @@ 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;
+
+    /**
+        Gets the path corresponding to the given tree control item.
+
+        @since 2.9.5
+    */
+    wxString GetPath(wxTreeItemId itemId) 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);
+};