]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/filepickerg.h
supporting clang memory management annotations
[wxWidgets.git] / include / wx / generic / filepickerg.h
index 7469df9137863de52ece4c40d45add230a18aedf..203bd6e682af944e7652d7009bac6c422177c37c 100644 (file)
@@ -49,7 +49,7 @@ public:
 
     virtual wxControl *AsControl() { return this; }
 
-public:     // overrideable
+public:     // overridable
 
     virtual wxDialog *CreateDialog() = 0;
 
@@ -58,6 +58,8 @@ public:     // overrideable
 
     virtual wxEventType GetEventType() const = 0;
 
+    virtual void SetInitialDirectory(const wxString& dir);
+
 public:
 
     bool Create(wxWindow *parent, wxWindowID id,
@@ -82,6 +84,9 @@ protected:
     // just doesn't make sense to use picker styles for wxButton anyhow
     long m_pickerStyle;
 
+    // Initial directory set by SetInitialDirectory() call or empty.
+    wxString m_initialDir;
+
 private:
     // common part of all ctors
     void Init() { m_pickerStyle = -1; }
@@ -114,7 +119,7 @@ public:
                pos, size, style, validator, name);
     }
 
-public:     // overrideable
+public:     // overridable
 
     virtual long GetDialogStyle() const
     {
@@ -140,16 +145,7 @@ public:     // overrideable
         return filedlgstyle;
     }
 
-    virtual wxDialog *CreateDialog()
-    {
-        wxFileDialog *p = new wxFileDialog(GetDialogParent(), m_message,
-                                    wxEmptyString, wxEmptyString,
-                                    m_wildcard, GetDialogStyle());
-
-        // this sets both the default folder and the default file of the dialog
-        p->SetPath(m_path);
-        return p;
-    }
+    virtual wxDialog *CreateDialog();
 
     wxEventType GetEventType() const
         { return wxEVT_COMMAND_FILEPICKER_CHANGED; }
@@ -160,6 +156,10 @@ protected:
     void UpdatePathFromDialog(wxDialog *p)
         { m_path = wxStaticCast(p, wxFileDialog)->GetPath(); }
 
+    // Set the initial directory for the dialog but without overriding the
+    // directory of the currently selected file, if any.
+    void DoSetInitialDirectory(wxFileDialog* dialog, const wxString& dir);
+
 private:
     DECLARE_DYNAMIC_CLASS(wxGenericFileButton)
 };
@@ -190,7 +190,7 @@ public:
                pos, size, style, validator, name);
     }
 
-public:     // overrideable
+public:     // overridable
 
     virtual long GetDialogStyle() const
     {
@@ -204,11 +204,7 @@ public:     // overrideable
         return dirdlgstyle;
     }
 
-    virtual wxDialog *CreateDialog()
-    {
-        return new wxDirDialog(GetDialogParent(), m_message, m_path,
-                                   GetDialogStyle());
-    }
+    virtual wxDialog *CreateDialog();
 
     wxEventType GetEventType() const
         { return wxEVT_COMMAND_DIRPICKER_CHANGED; }