#if wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
#include "wx/pickerbase.h"
+#include "wx/filename.h"
-class WXDLLIMPEXP_CORE wxDialog;
-class WXDLLIMPEXP_CORE wxFileDirPickerEvent;
+class WXDLLIMPEXP_FWD_CORE wxDialog;
+class WXDLLIMPEXP_FWD_CORE wxFileDirPickerEvent;
-extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetLabel[];
-extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerWidgetNameStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxFilePickerCtrlNameStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxFileSelectorPromptStr[];
+extern WXDLLEXPORT_DATA(const char) wxFilePickerWidgetLabel[];
+extern WXDLLEXPORT_DATA(const char) wxFilePickerWidgetNameStr[];
+extern WXDLLEXPORT_DATA(const char) wxFilePickerCtrlNameStr[];
+extern WXDLLEXPORT_DATA(const char) wxFileSelectorPromptStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerWidgetLabel[];
-extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerWidgetNameStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxDirPickerCtrlNameStr[];
-extern WXDLLEXPORT_DATA(const wxChar) wxDirSelectorPromptStr[];
+extern WXDLLEXPORT_DATA(const char) wxDirPickerWidgetLabel[];
+extern WXDLLEXPORT_DATA(const char) wxDirPickerWidgetNameStr[];
+extern WXDLLEXPORT_DATA(const char) wxDirPickerCtrlNameStr[];
+extern WXDLLEXPORT_DATA(const char) wxDirSelectorPromptStr[];
// ----------------------------------------------------------------------------
wxString GetPath() const { return m_path; }
virtual void SetPath(const wxString &str) { m_path=str; }
+ // returns the picker widget cast to wxControl
+ virtual wxControl *AsControl() = 0;
+
protected:
virtual void UpdateDialogPath(wxDialog *) = 0;
virtual void UpdatePathFromDialog(wxDialog *) = 0;
// NB: these styles must be defined to carefully-chosen values to
// avoid conflicts with wxButton's styles
-#define wxFLP_OPEN 0x0200
-#define wxFLP_SAVE 0x0400
-#define wxFLP_OVERWRITE_PROMPT 0x0800
-#define wxFLP_FILE_MUST_EXIST 0x1000
-#define wxFLP_CHANGE_DIR 0x2000
+#define wxFLP_OPEN 0x0400
+#define wxFLP_SAVE 0x0800
+#define wxFLP_OVERWRITE_PROMPT 0x1000
+#define wxFLP_FILE_MUST_EXIST 0x2000
+#define wxFLP_CHANGE_DIR 0x4000
// NOTE: wxMULTIPLE is not supported !
// NOTE: wxFileDirPickerCtrlBase will allocate a wx{File|Dir}PickerWidget and this
// requires that all classes being mapped as wx{File|Dir}PickerWidget have the
// same prototype for the contructor...
-#if defined(__WXGTK26__) // since GTK >= 2.6, there is GtkFileButton
+// since GTK >= 2.6, there is GtkFileButton
+#if defined(__WXGTK26__) && !defined(__WXUNIVERSAL__)
#include "wx/gtk/filepicker.h"
#define wxFilePickerWidget wxFileButton
#define wxDirPickerWidget wxDirButton
// ----------------------------------------------------------------------------
-// wxFileDirPickerWidgetBase
+// wxFileDirPickerCtrlBase
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxFileDirPickerCtrlBase : public wxPickerBase
public:
wxFileDirPickerCtrlBase() : m_bIgnoreNextTextCtrlUpdate(false) {}
+protected:
// NB: no default values since this function will never be used
// directly by the user and derived classes wouldn't use them
bool CreateBase(wxWindow *parent,
public: // public API
- wxString GetPath() const
- { return ((wxFileDirPickerWidgetBase*)m_picker)->GetPath(); }
+ wxString GetPath() const;
void SetPath(const wxString &str);
public: // internal functions
// event handler for our picker
void OnFileDirChange(wxFileDirPickerEvent &);
- virtual bool CreatePicker(wxWindow *parent, const wxString& path,
- const wxString& message, const wxString& wildcard) = 0;
-
// Returns TRUE if the current path is a valid one
// (i.e. a valid file for a wxFilePickerWidget or a valid
// folder for a wxDirPickerWidget).
// Returns the filtered value currently placed in the text control (if present).
virtual wxString GetTextCtrlValue() const = 0;
+protected:
+ // creates the picker control
+ virtual
+ wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
+ const wxString& path,
+ const wxString& message,
+ const wxString& wildcard) = 0;
+
protected:
// true if the next UpdateTextCtrl() call is to ignore
bool m_bIgnoreNextTextCtrlUpdate;
+
+ // m_picker object as wxFileDirPickerWidgetBase interface
+ wxFileDirPickerWidgetBase *m_pickerIface;
};
#endif // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
validator, name);
}
+ void SetFileName(const wxFileName &filename)
+ { SetPath(filename.GetFullPath()); }
-public: // overrides
+ wxFileName GetFileName() const
+ { return wxFileName(GetPath()); }
- bool CreatePicker(wxWindow *parent, const wxString& path,
- const wxString& message, const wxString& wildcard)
- {
- m_picker = new wxFilePickerWidget(parent, wxID_ANY,
- wxFilePickerWidgetLabel,
- path, message, wildcard,
- wxDefaultPosition, wxDefaultSize,
- GetPickerStyle(GetWindowStyle()));
- return true;
- }
+public: // overrides
// return true if the given path is valid for this control
bool CheckPath(const wxString& path) const;
{ return wxEVT_COMMAND_FILEPICKER_CHANGED; }
protected:
+ wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
+ const wxString& path,
+ const wxString& message,
+ const wxString& wildcard)
+ {
+ return new wxFilePickerWidget(parent, wxID_ANY,
+ wxFilePickerWidgetLabel,
+ path, message, wildcard,
+ wxDefaultPosition, wxDefaultSize,
+ GetPickerStyle(GetWindowStyle()));
+ }
+
// extracts the style for our picker from wxFileDirPickerCtrlBase's style
long GetPickerStyle(long style) const
{
);
}
+ void SetDirName(const wxFileName &dirname)
+ { SetPath(dirname.GetPath()); }
-public: // overrides
+ wxFileName GetDirName() const
+ { return wxFileName::DirName(GetPath()); }
- bool CreatePicker(wxWindow *parent, const wxString& path,
- const wxString& message, const wxString& WXUNUSED(wildcard))
- {
- m_picker = new wxDirPickerWidget(parent, wxID_ANY, wxDirPickerWidgetLabel,
- path, message, wxDefaultPosition, wxDefaultSize,
- GetPickerStyle(GetWindowStyle()));
- return true;
- }
+public: // overrides
bool CheckPath(const wxString &path) const;
{ return wxEVT_COMMAND_DIRPICKER_CHANGED; }
protected:
+ wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
+ const wxString& path,
+ const wxString& message,
+ const wxString& WXUNUSED(wildcard))
+ {
+ return new wxDirPickerWidget(parent, wxID_ANY, wxDirPickerWidgetLabel,
+ path, message,
+ wxDefaultPosition, wxDefaultSize,
+ GetPickerStyle(GetWindowStyle()));
+ }
+
// extracts the style for our picker from wxFileDirPickerCtrlBase's style
long GetPickerStyle(long style) const
{ return (style & (wxDIRP_DIR_MUST_EXIST|wxDIRP_CHANGE_DIR)); }
#define EVT_DIRPICKER_CHANGED(id, fn) \
wx__DECLARE_EVT1(wxEVT_COMMAND_DIRPICKER_CHANGED, id, wxFileDirPickerEventHandler(fn))
-#ifdef _WX_DEFINE_DATE_EVENTS_
- DEFINE_EVENT_TYPE(wxEVT_COMMAND_FILEPICKER_CHANGED)
- DEFINE_EVENT_TYPE(wxEVT_COMMAND_DIRPICKER_CHANGED)
-
- IMPLEMENT_DYNAMIC_CLASS(wxFileDirPickerEvent, wxCommandEvent)
-#endif
-
#endif // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL