X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec376c8fd9ff813392030426acd2317c6fa6527e..f1f5f16f780bb41aa2ea24ccbf728f14c86cc475:/include/wx/generic/filepickerg.h diff --git a/include/wx/generic/filepickerg.h b/include/wx/generic/filepickerg.h index b4ddc900c9..ee1e83910b 100644 --- a/include/wx/generic/filepickerg.h +++ b/include/wx/generic/filepickerg.h @@ -12,13 +12,13 @@ #ifndef _WX_FILEDIRPICKER_H_ #define _WX_FILEDIRPICKER_H_ -#include "wx/filename.h" +#include "wx/button.h" #include "wx/filedlg.h" #include "wx/dirdlg.h" -extern const wxEventType wxEVT_COMMAND_DIRPICKER_CHANGED; -extern const wxEventType wxEVT_COMMAND_FILEPICKER_CHANGED; +extern WXDLLEXPORT_DATA(const wxEventType) wxEVT_COMMAND_DIRPICKER_CHANGED; +extern WXDLLEXPORT_DATA(const wxEventType) wxEVT_COMMAND_FILEPICKER_CHANGED; //----------------------------------------------------------------------------- @@ -29,7 +29,7 @@ class WXDLLIMPEXP_CORE wxGenericFileDirButton : public wxButton, public wxFileDirPickerWidgetBase { public: - wxGenericFileDirButton() { m_dialog = NULL; } + wxGenericFileDirButton() { } wxGenericFileDirButton(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, @@ -42,32 +42,25 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxFilePickerWidgetNameStr) { - m_dialog = NULL; Create(parent, id, label, path, message, wildcard, pos, size, style, validator, name); } virtual ~wxGenericFileDirButton() {} + virtual wxControl *AsControl() { return this; } + public: // overrideable - virtual bool CreateDialog(const wxString &message, - const wxString &wildcard) = 0; + virtual wxDialog *CreateDialog() = 0; - // NULL is because of a problem with destruction order in both generic & GTK code virtual wxWindow *GetDialogParent() - { return NULL; } + { return GetParent(); } virtual wxEventType GetEventType() const = 0; public: - bool Destroy() - { - m_dialog->Destroy(); - return wxButton::Destroy(); - } - bool Create(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, const wxString& path = wxEmptyString, @@ -82,7 +75,8 @@ public: // event handler for the click void OnButtonClick(wxCommandEvent &); - wxDialog *m_dialog; +protected: + wxString m_message, m_wildcard; }; @@ -90,7 +84,7 @@ public: // wxGenericFileButton: a button which brings up a wxFileDialog //----------------------------------------------------------------------------- -#define wxFILEBTN_DEFAULT_STYLE wxFLP_OPEN +#define wxFILEBTN_DEFAULT_STYLE (wxFLP_OPEN) class WXDLLIMPEXP_CORE wxGenericFileButton : public wxGenericFileDirButton { @@ -132,27 +126,26 @@ public: // overrideable return filedlgstyle; } - virtual bool CreateDialog(const wxString &message, const wxString &wildcard) + virtual wxDialog *CreateDialog() { - m_dialog = new wxFileDialog(GetDialogParent(), message, + wxFileDialog *p = new wxFileDialog(GetDialogParent(), m_message, wxEmptyString, wxEmptyString, - wildcard, GetDialogStyle()); + m_wildcard, GetDialogStyle()); // this sets both the default folder and the default file of the dialog - GetDialog()->SetPath(m_path); - - return true; + p->SetPath(m_path); + return p; } - wxFileDialog *GetDialog() - { return wxStaticCast(m_dialog, wxFileDialog); } - void UpdateDialogPath() - { GetDialog()->SetPath(m_path); } - void UpdatePathFromDialog() - { m_path = GetDialog()->GetPath(); } wxEventType GetEventType() const { return wxEVT_COMMAND_FILEPICKER_CHANGED; } +protected: + void UpdateDialogPath(wxDialog *p) + { wxStaticCast(p, wxFileDialog)->SetPath(m_path); } + void UpdatePathFromDialog(wxDialog *p) + { m_path = wxStaticCast(p, wxFileDialog)->GetPath(); } + private: DECLARE_DYNAMIC_CLASS(wxGenericFileButton) }; @@ -187,7 +180,7 @@ public: // overrideable virtual long GetDialogStyle() const { - long dirdlgstyle = 0; + long dirdlgstyle = wxDD_DEFAULT_STYLE; if (this->HasFlag(wxDIRP_DIR_MUST_EXIST)) dirdlgstyle |= wxDD_DIR_MUST_EXIST; @@ -197,22 +190,21 @@ public: // overrideable return dirdlgstyle; } - virtual bool CreateDialog(const wxString &message, const wxString &WXUNUSED(wildcard)) + virtual wxDialog *CreateDialog() { - m_dialog = new wxDirDialog(GetDialogParent(), message, m_path, + return new wxDirDialog(GetDialogParent(), m_message, m_path, GetDialogStyle()); - return true; } - wxDirDialog *GetDialog() - { return wxStaticCast(m_dialog, wxDirDialog); } - void UpdateDialogPath() - { GetDialog()->SetPath(m_path); } - void UpdatePathFromDialog() - { m_path = GetDialog()->GetPath(); } wxEventType GetEventType() const { return wxEVT_COMMAND_DIRPICKER_CHANGED; } +protected: + void UpdateDialogPath(wxDialog *p) + { wxStaticCast(p, wxDirDialog)->SetPath(m_path); } + void UpdatePathFromDialog(wxDialog *p) + { m_path = wxStaticCast(p, wxDirDialog)->GetPath(); } + private: DECLARE_DYNAMIC_CLASS(wxGenericDirButton) };