| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/filepicker.h
 
- // Purpose:     wxFilePickerCtrl, wxDirPickerCtrl base header
 
- // Author:      Francesco Montorsi
 
- // Modified by:
 
- // Created:     14/4/2006
 
- // Copyright:   (c) Francesco Montorsi
 
- // Licence:     wxWindows Licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_FILEDIRPICKER_H_BASE_
 
- #define _WX_FILEDIRPICKER_H_BASE_
 
- #include "wx/defs.h"
 
- #if wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
 
- #include "wx/pickerbase.h"
 
- #include "wx/filename.h"
 
- class WXDLLIMPEXP_FWD_CORE wxDialog;
 
- class WXDLLIMPEXP_FWD_CORE wxFileDirPickerEvent;
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxFilePickerWidgetLabel[];
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxFilePickerWidgetNameStr[];
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxFilePickerCtrlNameStr[];
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxFileSelectorPromptStr[];
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxDirPickerWidgetLabel[];
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxDirPickerWidgetNameStr[];
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxDirPickerCtrlNameStr[];
 
- extern WXDLLIMPEXP_DATA_CORE(const char) wxDirSelectorPromptStr[];
 
- // ----------------------------------------------------------------------------
 
- // wxFileDirPickerEvent: used by wxFilePickerCtrl and wxDirPickerCtrl only
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxFileDirPickerEvent : public wxCommandEvent
 
- {
 
- public:
 
-     wxFileDirPickerEvent() {}
 
-     wxFileDirPickerEvent(wxEventType type, wxObject *generator, int id, const wxString &path)
 
-         : wxCommandEvent(type, id),
 
-           m_path(path)
 
-     {
 
-         SetEventObject(generator);
 
-     }
 
-     wxString GetPath() const { return m_path; }
 
-     void SetPath(const wxString &p) { m_path = p; }
 
-     // default copy ctor, assignment operator and dtor are ok
 
-     virtual wxEvent *Clone() const { return new wxFileDirPickerEvent(*this); }
 
- private:
 
-     wxString m_path;
 
-     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxFileDirPickerEvent)
 
- };
 
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_FILEPICKER_CHANGED, wxFileDirPickerEvent );
 
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_DIRPICKER_CHANGED, wxFileDirPickerEvent );
 
- // ----------------------------------------------------------------------------
 
- // event types and macros
 
- // ----------------------------------------------------------------------------
 
- typedef void (wxEvtHandler::*wxFileDirPickerEventFunction)(wxFileDirPickerEvent&);
 
- #define wxFileDirPickerEventHandler(func) \
 
-     wxEVENT_HANDLER_CAST(wxFileDirPickerEventFunction, func)
 
- #define EVT_FILEPICKER_CHANGED(id, fn) \
 
-     wx__DECLARE_EVT1(wxEVT_FILEPICKER_CHANGED, id, wxFileDirPickerEventHandler(fn))
 
- #define EVT_DIRPICKER_CHANGED(id, fn) \
 
-     wx__DECLARE_EVT1(wxEVT_DIRPICKER_CHANGED, id, wxFileDirPickerEventHandler(fn))
 
- // ----------------------------------------------------------------------------
 
- // wxFileDirPickerWidgetBase: a generic abstract interface which must be
 
- //                           implemented by controls used by wxFileDirPickerCtrlBase
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxFileDirPickerWidgetBase
 
- {
 
- public:
 
-     wxFileDirPickerWidgetBase() {  }
 
-     virtual ~wxFileDirPickerWidgetBase() {  }
 
-     // Path here is the name of the selected file or directory.
 
-     wxString GetPath() const { return m_path; }
 
-     virtual void SetPath(const wxString &str) { m_path=str; }
 
-     // Set the directory to open the file browse dialog at initially.
 
-     virtual void SetInitialDirectory(const wxString& dir) = 0;
 
-     // returns the picker widget cast to wxControl
 
-     virtual wxControl *AsControl() = 0;
 
- protected:
 
-     virtual void UpdateDialogPath(wxDialog *) = 0;
 
-     virtual void UpdatePathFromDialog(wxDialog *) = 0;
 
-     wxString m_path;
 
- };
 
- // Styles which must be supported by all controls implementing wxFileDirPickerWidgetBase
 
- // NB: these styles must be defined to carefully-chosen values to
 
- //     avoid conflicts with wxButton's styles
 
- #define wxFLP_OPEN                    0x0400
 
- #define wxFLP_SAVE                    0x0800
 
- #define wxFLP_OVERWRITE_PROMPT        0x1000
 
- #define wxFLP_FILE_MUST_EXIST         0x2000
 
- #define wxFLP_CHANGE_DIR              0x4000
 
- #define wxFLP_SMALL                   wxPB_SMALL
 
- // NOTE: wxMULTIPLE is not supported !
 
- #define wxDIRP_DIR_MUST_EXIST         0x0008
 
- #define wxDIRP_CHANGE_DIR             0x0010
 
- #define wxDIRP_SMALL                  wxPB_SMALL
 
- // map platform-dependent controls which implement the wxFileDirPickerWidgetBase
 
- // under the name "wxFilePickerWidget" and "wxDirPickerWidget".
 
- // 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...
 
- // since GTK >= 2.6, there is GtkFileButton
 
- #if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
 
-     #include "wx/gtk/filepicker.h"
 
-     #define wxFilePickerWidget      wxFileButton
 
-     #define wxDirPickerWidget       wxDirButton
 
- #else
 
-     #include "wx/generic/filepickerg.h"
 
-     #define wxFilePickerWidget      wxGenericFileButton
 
-     #define wxDirPickerWidget       wxGenericDirButton
 
- #endif
 
- // ----------------------------------------------------------------------------
 
- // wxFileDirPickerCtrlBase
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxFileDirPickerCtrlBase : public wxPickerBase
 
- {
 
- public:
 
-     wxFileDirPickerCtrlBase() {}
 
- 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,
 
-                     wxWindowID id,
 
-                     const wxString& path,
 
-                     const wxString &message,
 
-                     const wxString &wildcard,
 
-                     const wxPoint& pos,
 
-                     const wxSize& size,
 
-                     long style,
 
-                     const wxValidator& validator,
 
-                     const wxString& name);
 
- public:         // public API
 
-     wxString GetPath() const;
 
-     void SetPath(const wxString &str);
 
-     // Set the directory to open the file browse dialog at initially.
 
-     void SetInitialDirectory(const wxString& dir)
 
-     {
 
-         m_pickerIface->SetInitialDirectory(dir);
 
-     }
 
- public:        // internal functions
 
-     void UpdatePickerFromTextCtrl();
 
-     void UpdateTextCtrlFromPicker();
 
-     // event handler for our picker
 
-     void OnFileDirChange(wxFileDirPickerEvent &);
 
-     // TRUE if any textctrl change should update the current working directory
 
-     virtual bool IsCwdToUpdate() const = 0;
 
-     // Returns the event type sent by this picker
 
-     virtual wxEventType GetEventType() const = 0;
 
-     virtual void DoConnect( wxControl *sender, wxFileDirPickerCtrlBase *eventSink ) = 0;
 
-     // 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:
 
-     // m_picker object as wxFileDirPickerWidgetBase interface
 
-     wxFileDirPickerWidgetBase *m_pickerIface;
 
- };
 
- #endif  // wxUSE_FILEPICKERCTRL || wxUSE_DIRPICKERCTRL
 
- #if wxUSE_FILEPICKERCTRL
 
- // ----------------------------------------------------------------------------
 
- // wxFilePickerCtrl: platform-independent class which embeds the
 
- // platform-dependent wxFilePickerWidget and, if wxFLP_USE_TEXTCTRL style is
 
- // used, a textctrl next to it.
 
- // ----------------------------------------------------------------------------
 
- #define wxFLP_USE_TEXTCTRL            (wxPB_USE_TEXTCTRL)
 
- #ifdef __WXGTK__
 
-     // GTK apps usually don't have a textctrl next to the picker
 
-     #define wxFLP_DEFAULT_STYLE       (wxFLP_OPEN|wxFLP_FILE_MUST_EXIST)
 
- #else
 
-     #define wxFLP_DEFAULT_STYLE       (wxFLP_USE_TEXTCTRL|wxFLP_OPEN|wxFLP_FILE_MUST_EXIST)
 
- #endif
 
- class WXDLLIMPEXP_CORE wxFilePickerCtrl : public wxFileDirPickerCtrlBase
 
- {
 
- public:
 
-     wxFilePickerCtrl() {}
 
-     wxFilePickerCtrl(wxWindow *parent,
 
-                      wxWindowID id,
 
-                      const wxString& path = wxEmptyString,
 
-                      const wxString& message = wxFileSelectorPromptStr,
 
-                      const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
 
-                      const wxPoint& pos = wxDefaultPosition,
 
-                      const wxSize& size = wxDefaultSize,
 
-                      long style = wxFLP_DEFAULT_STYLE,
 
-                      const wxValidator& validator = wxDefaultValidator,
 
-                      const wxString& name = wxFilePickerCtrlNameStr)
 
-     {
 
-         Create(parent, id, path, message, wildcard, pos, size, style,
 
-                validator, name);
 
-     }
 
-     bool Create(wxWindow *parent,
 
-                 wxWindowID id,
 
-                 const wxString& path = wxEmptyString,
 
-                 const wxString& message = wxFileSelectorPromptStr,
 
-                 const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = wxFLP_DEFAULT_STYLE,
 
-                 const wxValidator& validator = wxDefaultValidator,
 
-                 const wxString& name = wxFilePickerCtrlNameStr);
 
-     void SetFileName(const wxFileName &filename)
 
-         { SetPath(filename.GetFullPath()); }
 
-     wxFileName GetFileName() const
 
-         { return wxFileName(GetPath()); }
 
- public:     // overrides
 
-     // return the text control value in canonical form
 
-     wxString GetTextCtrlValue() const;
 
-     bool IsCwdToUpdate() const
 
-         { return HasFlag(wxFLP_CHANGE_DIR); }
 
-     wxEventType GetEventType() const
 
-         { return wxEVT_FILEPICKER_CHANGED; }
 
-     virtual void DoConnect( wxControl *sender, wxFileDirPickerCtrlBase *eventSink )
 
-     {
 
-         sender->Connect( wxEVT_FILEPICKER_CHANGED,
 
-             wxFileDirPickerEventHandler( wxFileDirPickerCtrlBase::OnFileDirChange ),
 
-             NULL, eventSink );
 
-     }
 
- protected:
 
-     virtual
 
-     wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
 
-                                             const wxString& path,
 
-                                             const wxString& message,
 
-                                             const wxString& wildcard)
 
-     {
 
-         return new wxFilePickerWidget(parent, wxID_ANY,
 
-                                       wxGetTranslation(wxFilePickerWidgetLabel),
 
-                                       path, message, wildcard,
 
-                                       wxDefaultPosition, wxDefaultSize,
 
-                                       GetPickerStyle(GetWindowStyle()));
 
-     }
 
-     // extracts the style for our picker from wxFileDirPickerCtrlBase's style
 
-     long GetPickerStyle(long style) const
 
-     {
 
-         return style & (wxFLP_OPEN |
 
-                         wxFLP_SAVE |
 
-                         wxFLP_OVERWRITE_PROMPT |
 
-                         wxFLP_FILE_MUST_EXIST |
 
-                         wxFLP_CHANGE_DIR |
 
-                         wxFLP_USE_TEXTCTRL |
 
-                         wxFLP_SMALL);
 
-     }
 
- private:
 
-     DECLARE_DYNAMIC_CLASS(wxFilePickerCtrl)
 
- };
 
- #endif      // wxUSE_FILEPICKERCTRL
 
- #if wxUSE_DIRPICKERCTRL
 
- // ----------------------------------------------------------------------------
 
- // wxDirPickerCtrl: platform-independent class which embeds the
 
- // platform-dependent wxDirPickerWidget and eventually a textctrl
 
- // (see wxDIRP_USE_TEXTCTRL) next to it.
 
- // ----------------------------------------------------------------------------
 
- #define wxDIRP_USE_TEXTCTRL            (wxPB_USE_TEXTCTRL)
 
- #ifdef __WXGTK__
 
-     // GTK apps usually don't have a textctrl next to the picker
 
-     #define wxDIRP_DEFAULT_STYLE       (wxDIRP_DIR_MUST_EXIST)
 
- #else
 
-     #define wxDIRP_DEFAULT_STYLE       (wxDIRP_USE_TEXTCTRL|wxDIRP_DIR_MUST_EXIST)
 
- #endif
 
- class WXDLLIMPEXP_CORE wxDirPickerCtrl : public wxFileDirPickerCtrlBase
 
- {
 
- public:
 
-     wxDirPickerCtrl() {}
 
-     wxDirPickerCtrl(wxWindow *parent, wxWindowID id,
 
-                     const wxString& path = wxEmptyString,
 
-                     const wxString& message = wxDirSelectorPromptStr,
 
-                     const wxPoint& pos = wxDefaultPosition,
 
-                     const wxSize& size = wxDefaultSize,
 
-                     long style = wxDIRP_DEFAULT_STYLE,
 
-                     const wxValidator& validator = wxDefaultValidator,
 
-                     const wxString& name = wxDirPickerCtrlNameStr)
 
-     {
 
-         Create(parent, id, path, message, pos, size, style, validator, name);
 
-     }
 
-     bool Create(wxWindow *parent, wxWindowID id,
 
-                 const wxString& path = wxEmptyString,
 
-                 const wxString& message = wxDirSelectorPromptStr,
 
-                 const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize,
 
-                 long style = wxDIRP_DEFAULT_STYLE,
 
-                 const wxValidator& validator = wxDefaultValidator,
 
-                 const wxString& name = wxDirPickerCtrlNameStr);
 
-     void SetDirName(const wxFileName &dirname)
 
-         { SetPath(dirname.GetPath()); }
 
-     wxFileName GetDirName() const
 
-         { return wxFileName::DirName(GetPath()); }
 
- public:     // overrides
 
-     wxString GetTextCtrlValue() const;
 
-     bool IsCwdToUpdate() const
 
-         { return HasFlag(wxDIRP_CHANGE_DIR); }
 
-     wxEventType GetEventType() const
 
-         { return wxEVT_DIRPICKER_CHANGED; }
 
-     virtual void DoConnect( wxControl *sender, wxFileDirPickerCtrlBase *eventSink )
 
-     {
 
-         sender->Connect( wxEVT_DIRPICKER_CHANGED,
 
-             wxFileDirPickerEventHandler( wxFileDirPickerCtrlBase::OnFileDirChange ),
 
-             NULL, eventSink );
 
-     }
 
- protected:
 
-     virtual
 
-     wxFileDirPickerWidgetBase *CreatePicker(wxWindow *parent,
 
-                                             const wxString& path,
 
-                                             const wxString& message,
 
-                                             const wxString& WXUNUSED(wildcard))
 
-     {
 
-         return new wxDirPickerWidget(parent, wxID_ANY,
 
-                                      wxGetTranslation(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 |
 
-                         wxDIRP_USE_TEXTCTRL |
 
-                         wxDIRP_SMALL);
 
-     }
 
- private:
 
-     DECLARE_DYNAMIC_CLASS(wxDirPickerCtrl)
 
- };
 
- #endif      // wxUSE_DIRPICKERCTRL
 
- // old wxEVT_COMMAND_* constants
 
- #define wxEVT_COMMAND_FILEPICKER_CHANGED   wxEVT_FILEPICKER_CHANGED
 
- #define wxEVT_COMMAND_DIRPICKER_CHANGED    wxEVT_DIRPICKER_CHANGED
 
- #endif // _WX_FILEDIRPICKER_H_BASE_
 
 
  |