X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a8362297aaef3898fae7f452b6e230a6e099c5c..0b632977d75f403b7bc043d48a1c15e7394c546c:/include/wx/generic/filepickerg.h diff --git a/include/wx/generic/filepickerg.h b/include/wx/generic/filepickerg.h index 4485a30e19..efec446e98 100644 --- a/include/wx/generic/filepickerg.h +++ b/include/wx/generic/filepickerg.h @@ -13,13 +13,12 @@ #define _WX_FILEDIRPICKER_H_ #include "wx/button.h" -#include "wx/filename.h" #include "wx/filedlg.h" #include "wx/dirdlg.h" -extern WXDLLEXPORT_DATA(const wxEventType) wxEVT_COMMAND_DIRPICKER_CHANGED; -extern WXDLLEXPORT_DATA(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 ) //----------------------------------------------------------------------------- @@ -30,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, @@ -43,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() - { - if (m_dialog) m_dialog->Destroy(); - return wxButton::Destroy(); - } - bool Create(wxWindow *parent, wxWindowID id, const wxString& label = wxFilePickerWidgetLabel, const wxString& path = wxEmptyString, @@ -83,7 +75,8 @@ public: // event handler for the click void OnButtonClick(wxCommandEvent &); - wxDialog *m_dialog; +protected: + wxString m_message, m_wildcard; }; @@ -91,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 { @@ -133,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) }; @@ -188,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; @@ -198,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) };