///////////////////////////////////////////////////////////////////////////// // Name: wx/gtk/filedirpicker.h // Purpose: wxFileButton, wxDirButton header // Author: Francesco Montorsi // Created: 14/4/2006 // Copyright: (c) Francesco Montorsi // Licence: wxWindows Licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_GTK_FILEPICKER_H_ #define _WX_GTK_FILEPICKER_H_ class WXDLLIMPEXP_FWD_CORE wxFileDialog; class WXDLLIMPEXP_FWD_CORE wxDirDialog; class WXDLLIMPEXP_FWD_CORE wxGenericFileButton; class WXDLLIMPEXP_FWD_CORE wxGenericDirButton; extern WXDLLIMPEXP_DATA_CORE(const char) wxFileSelectorPromptStr[]; extern WXDLLIMPEXP_DATA_CORE(const char) wxFileSelectorDefaultWildcardStr[]; //----------------------------------------------------------------------------- // wxFileButton //----------------------------------------------------------------------------- class WXDLLIMPEXP_CORE wxFileButton : public wxControl, public wxFileDirPickerWidgetBase { public: wxFileButton() = default; wxFileButton(wxWindow *parent, wxWindowID id, const wxString& label = wxASCII_STR(wxFilePickerWidgetLabel), const wxString &path = wxEmptyString, const wxString &message = wxASCII_STR(wxFileSelectorPromptStr), const wxString &wildcard = wxASCII_STR(wxFileSelectorDefaultWildcardStr), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxFILEBTN_DEFAULT_STYLE, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxASCII_STR(wxFilePickerWidgetNameStr)) { Create(parent, id, label, path, message, wildcard, pos, size, style, validator, name); } virtual ~wxFileButton(); public: // overrides bool Create(wxWindow *parent, wxWindowID id, const wxString& label = wxASCII_STR(wxFilePickerWidgetLabel), const wxString &path = wxEmptyString, const wxString &message = wxASCII_STR(wxFileSelectorPromptStr), const wxString &wildcard = wxASCII_STR(wxFileSelectorDefaultWildcardStr), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxASCII_STR(wxFilePickerWidgetNameStr)); // event handler for the click void OnDialogOK(wxCommandEvent &); virtual wxString GetPath() const override; virtual void SetPath(const wxString &str) override; virtual void SetInitialDirectory(const wxString& dir) override; virtual wxControl* AsControl() override { return this; } protected: wxFileDialog* m_dialog = nullptr; private: wxGenericFileButton* m_genericButton = nullptr; wxDECLARE_DYNAMIC_CLASS(wxFileButton); }; //----------------------------------------------------------------------------- // wxDirButton //----------------------------------------------------------------------------- class WXDLLIMPEXP_CORE wxDirButton : public wxControl, public wxFileDirPickerWidgetBase { public: wxDirButton() = default; wxDirButton(wxWindow *parent, wxWindowID id, const wxString& label = wxASCII_STR(wxFilePickerWidgetLabel), const wxString &path = wxEmptyString, const wxString &message = wxASCII_STR(wxFileSelectorPromptStr), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDIRBTN_DEFAULT_STYLE, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxASCII_STR(wxFilePickerWidgetNameStr)) { Create(parent, id, label, path, message, pos, size, style, validator, name); } virtual ~wxDirButton(); public: // overrides bool Create(wxWindow *parent, wxWindowID id, const wxString& label = wxASCII_STR(wxFilePickerWidgetLabel), const wxString &path = wxEmptyString, const wxString &message = wxASCII_STR(wxFileSelectorPromptStr), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxASCII_STR(wxFilePickerWidgetNameStr)); virtual wxString GetPath() const override; virtual void SetPath(const wxString &str) override; virtual void SetInitialDirectory(const wxString& dir) override; virtual wxControl* AsControl() override { return this; } protected: wxDirDialog* m_dialog = nullptr; public: // used by the GTK callback only bool m_bIgnoreNextChange = false; private: wxGenericDirButton* m_genericButton = nullptr; wxDECLARE_DYNAMIC_CLASS(wxDirButton); }; #endif // _WX_GTK_FILEPICKER_H_