]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/generic/filepickerg.h
Add arg default values for the Create method
[wxWidgets.git] / include / wx / generic / filepickerg.h
index 6206ba0ebb53cc4b185b2550bbbc640b2015058c..d7a0b495e637b23dcef8e48d2b22f5437f21b85c 100644 (file)
@@ -17,8 +17,8 @@
 #include "wx/dirdlg.h"
 
 
 #include "wx/dirdlg.h"
 
 
-extern WXDLLIMPEXP_DATA_CORE(const wxEventType) wxEVT_COMMAND_DIRPICKER_CHANGED;
-extern WXDLLIMPEXP_DATA_CORE(const wxEventType) wxEVT_COMMAND_FILEPICKER_CHANGED;
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_DIRPICKER_CHANGED, wxFileDirPickerEvent );
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEvent );
 
 
 //-----------------------------------------------------------------------------
 
 
 //-----------------------------------------------------------------------------
@@ -29,7 +29,7 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton,
                                                 public wxFileDirPickerWidgetBase
 {
 public:
                                                 public wxFileDirPickerWidgetBase
 {
 public:
-    wxGenericFileDirButton() { }
+    wxGenericFileDirButton() { Init(); }
     wxGenericFileDirButton(wxWindow *parent,
                            wxWindowID id,
                            const wxString& label = wxFilePickerWidgetLabel,
     wxGenericFileDirButton(wxWindow *parent,
                            wxWindowID id,
                            const wxString& label = wxFilePickerWidgetLabel,
@@ -42,15 +42,14 @@ public:
                            const wxValidator& validator = wxDefaultValidator,
                            const wxString& name = wxFilePickerWidgetNameStr)
     {
                            const wxValidator& validator = wxDefaultValidator,
                            const wxString& name = wxFilePickerWidgetNameStr)
     {
+        Init();
         Create(parent, id, label, path, message, wildcard,
                pos, size, style, validator, name);
     }
 
         Create(parent, id, label, path, message, wildcard,
                pos, size, style, validator, name);
     }
 
-    virtual ~wxGenericFileDirButton() {}
-
     virtual wxControl *AsControl() { return this; }
 
     virtual wxControl *AsControl() { return this; }
 
-public:     // overrideable
+public:     // overridable
 
     virtual wxDialog *CreateDialog() = 0;
 
 
     virtual wxDialog *CreateDialog() = 0;
 
@@ -77,6 +76,15 @@ public:
 
 protected:
     wxString m_message, m_wildcard;
 
 protected:
     wxString m_message, m_wildcard;
+
+    // we just store the style passed to the ctor here instead of passing it to
+    // wxButton as some of our bits can conflict with wxButton styles and it
+    // just doesn't make sense to use picker styles for wxButton anyhow
+    long m_pickerStyle;
+
+private:
+    // common part of all ctors
+    void Init() { m_pickerStyle = -1; }
 };
 
 
 };
 
 
@@ -106,21 +114,27 @@ public:
                pos, size, style, validator, name);
     }
 
                pos, size, style, validator, name);
     }
 
-public:     // overrideable
+public:     // overridable
 
     virtual long GetDialogStyle() const
     {
 
     virtual long GetDialogStyle() const
     {
+        // the derived class must initialize it if it doesn't use the
+        // non-default wxGenericFileDirButton ctor
+        wxASSERT_MSG( m_pickerStyle != -1,
+                      "forgot to initialize m_pickerStyle?" );
+
+
         long filedlgstyle = 0;
 
         long filedlgstyle = 0;
 
-        if (this->HasFlag(wxFLP_OPEN))
+        if ( m_pickerStyle & wxFLP_OPEN )
             filedlgstyle |= wxFD_OPEN;
             filedlgstyle |= wxFD_OPEN;
-        if (this->HasFlag(wxFLP_SAVE))
+        if ( m_pickerStyle & wxFLP_SAVE )
             filedlgstyle |= wxFD_SAVE;
             filedlgstyle |= wxFD_SAVE;
-        if (this->HasFlag(wxFLP_OVERWRITE_PROMPT))
+        if ( m_pickerStyle & wxFLP_OVERWRITE_PROMPT )
             filedlgstyle |= wxFD_OVERWRITE_PROMPT;
             filedlgstyle |= wxFD_OVERWRITE_PROMPT;
-        if (this->HasFlag(wxFLP_FILE_MUST_EXIST))
+        if ( m_pickerStyle & wxFLP_FILE_MUST_EXIST )
             filedlgstyle |= wxFD_FILE_MUST_EXIST;
             filedlgstyle |= wxFD_FILE_MUST_EXIST;
-        if (this->HasFlag(wxFLP_CHANGE_DIR))
+        if ( m_pickerStyle & wxFLP_CHANGE_DIR )
             filedlgstyle |= wxFD_CHANGE_DIR;
 
         return filedlgstyle;
             filedlgstyle |= wxFD_CHANGE_DIR;
 
         return filedlgstyle;
@@ -176,15 +190,15 @@ public:
                pos, size, style, validator, name);
     }
 
                pos, size, style, validator, name);
     }
 
-public:     // overrideable
+public:     // overridable
 
     virtual long GetDialogStyle() const
     {
         long dirdlgstyle = wxDD_DEFAULT_STYLE;
 
 
     virtual long GetDialogStyle() const
     {
         long dirdlgstyle = wxDD_DEFAULT_STYLE;
 
-        if (this->HasFlag(wxDIRP_DIR_MUST_EXIST))
+        if ( m_pickerStyle & wxDIRP_DIR_MUST_EXIST )
             dirdlgstyle |= wxDD_DIR_MUST_EXIST;
             dirdlgstyle |= wxDD_DIR_MUST_EXIST;
-        if (this->HasFlag(wxDIRP_CHANGE_DIR))
+        if ( m_pickerStyle & wxDIRP_CHANGE_DIR )
             dirdlgstyle |= wxDD_CHANGE_DIR;
 
         return dirdlgstyle;
             dirdlgstyle |= wxDD_CHANGE_DIR;
 
         return dirdlgstyle;