X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/23254b138af4bf224b07a9c577db6208742f1c4c..d642db66a5efc82d374b813022c72ba88bc50839:/include/wx/generic/filedlgg.h diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h index 72e095c46e..b4f35b3afd 100644 --- a/include/wx/generic/filedlgg.h +++ b/include/wx/generic/filedlgg.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: filedlgg.h +// Name: wx/generic/filedlgg.h // Purpose: wxGenericFileDialog // Author: Robert Roebling // Modified by: @@ -12,119 +12,116 @@ #ifndef _WX_FILEDLGG_H_ #define _WX_FILEDLGG_H_ -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "filedlgg.h" -#endif - -#include "wx/dialog.h" #include "wx/listctrl.h" +#include "wx/datetime.h" +#include "wx/filefn.h" +#include "wx/artprov.h" +#include "wx/filedlg.h" +#include "wx/generic/filectrlg.h" //----------------------------------------------------------------------------- // classes //----------------------------------------------------------------------------- -class wxCheckBox; -class wxChoice; -class wxFileData; -class wxFileCtrl; -class wxGenericFileDialog; -class wxListEvent; -class wxListItem; -class wxStaticText; -class wxTextCtrl; - -#if defined(__WXUNIVERSAL__)||defined(__WXGTK__)||defined(__WXX11__)||defined(__WXMGL__) - #define USE_GENERIC_FILEDIALOG -#endif - -#ifdef USE_GENERIC_FILEDIALOG - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorDefaultWildcardStr; - -#endif // USE_GENERIC_FILEDIALOG +class WXDLLIMPEXP_FWD_CORE wxBitmapButton; +class WXDLLIMPEXP_FWD_CORE wxGenericFileCtrl; +class WXDLLIMPEXP_FWD_CORE wxGenericFileDialog; +class WXDLLIMPEXP_FWD_CORE wxFileCtrlEvent; //------------------------------------------------------------------------- -// File selector +// wxGenericFileDialog //------------------------------------------------------------------------- -class WXDLLEXPORT wxGenericFileDialog: public wxDialog +class WXDLLIMPEXP_CORE wxGenericFileDialog: public wxFileDialogBase { public: - wxGenericFileDialog() { } + wxGenericFileDialog() : wxFileDialogBase() { Init(); } wxGenericFileDialog(wxWindow *parent, + const wxString& message = wxFileSelectorPromptStr, + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, + const wxString& wildCard = wxFileSelectorDefaultWildcardStr, + long style = wxFD_DEFAULT_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize, + const wxString& name = wxFileDialogNameStr, + bool bypassGenericImpl = false ); + + bool Create( wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = _T(""), - const wxString& defaultFile = _T(""), + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, - const wxPoint& pos = wxDefaultPosition); - virtual ~wxGenericFileDialog(); - - void SetMessage(const wxString& message) { SetTitle(message); } - void SetPath(const wxString& path); - void SetDirectory(const wxString& dir) { m_dir = dir; } - void SetFilename(const wxString& name) { m_fileName = name; } - void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } - void SetStyle(long style) { m_dialogStyle = style; } - void SetFilterIndex(int filterIndex); + long style = wxFD_DEFAULT_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize, + const wxString& name = wxFileDialogNameStr, + bool bypassGenericImpl = false ); - wxString GetMessage() const { return m_message; } - wxString GetPath() const { return m_path; } - wxString GetDirectory() const { return m_dir; } - wxString GetFilename() const { return m_fileName; } - wxString GetWildcard() const { return m_wildCard; } - long GetStyle() const { return m_dialogStyle; } - int GetFilterIndex() const { return m_filterIndex; } + virtual ~wxGenericFileDialog(); - // for multiple file selection - void GetPaths(wxArrayString& paths) const; - void GetFilenames(wxArrayString& files) const; + virtual void SetDirectory(const wxString& dir) + { m_filectrl->SetDirectory(dir); } + virtual void SetFilename(const wxString& name) + { m_filectrl->SetFilename(name); } + virtual void SetMessage(const wxString& message) { SetTitle(message); } + virtual void SetPath(const wxString& path) + { m_filectrl->SetPath(path); } + virtual void SetFilterIndex(int filterIndex) + { m_filectrl->SetFilterIndex(filterIndex); } + virtual void SetWildcard(const wxString& wildCard) + { m_filectrl->SetWildcard(wildCard); } + + virtual wxString GetPath() const + { return m_filectrl->GetPath(); } + virtual void GetPaths(wxArrayString& paths) const + { m_filectrl->GetPaths(paths); } + virtual wxString GetDirectory() const + { return m_filectrl->GetDirectory(); } + virtual wxString GetFilename() const + { return m_filectrl->GetFilename(); } + virtual void GetFilenames(wxArrayString& files) const + { m_filectrl->GetFilenames(files); } + virtual wxString GetWildcard() const + { return m_filectrl->GetWildcard(); } + virtual int GetFilterIndex() const + { return m_filectrl->GetFilterIndex(); } + virtual bool SupportsExtraControl() const { return true; } // implementation only from now on // ------------------------------- virtual int ShowModal(); + virtual bool Show( bool show = true ); - void OnSelected( wxListEvent &event ); - void OnActivated( wxListEvent &event ); void OnList( wxCommandEvent &event ); void OnReport( wxCommandEvent &event ); void OnUp( wxCommandEvent &event ); void OnHome( wxCommandEvent &event ); - void OnListOk( wxCommandEvent &event ); + void OnOk( wxCommandEvent &event ); void OnNew( wxCommandEvent &event ); - void OnChoiceFilter( wxCommandEvent &event ); - void OnTextEnter( wxCommandEvent &event ); - void OnTextChange( wxCommandEvent &event ); - void OnCheck( wxCommandEvent &event ); + void OnFileActivated( wxFileCtrlEvent &event); - void HandleAction( const wxString &fn ); +private: + // if true, don't use this implementation at all + bool m_bypassGenericImpl; protected: - // use the filter with the given index - void DoSetFilterIndex(int filterindex); + // update the state of m_upDirButton and m_newDirButton depending on the + // currently selected directory + void OnUpdateButtonsUI(wxUpdateUIEvent& event); - wxString m_message; - long m_dialogStyle; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; - wxString m_filterExtension; - wxChoice *m_choice; - wxTextCtrl *m_text; - wxFileCtrl *m_list; - wxCheckBox *m_check; - wxStaticText *m_static; + wxString m_filterExtension; + wxGenericFileCtrl *m_filectrl; + wxBitmapButton *m_upDirButton; + wxBitmapButton *m_newDirButton; private: + void Init(); + wxBitmapButton* AddBitmapButton( wxWindowID winId, const wxArtID& artId, + const wxString& tip, wxSizer *sizer ); + DECLARE_DYNAMIC_CLASS(wxGenericFileDialog) DECLARE_EVENT_TABLE() @@ -133,198 +130,32 @@ private: static bool ms_lastShowHidden; // did we show hidden files? }; -#ifdef USE_GENERIC_FILEDIALOG +#ifdef wxHAS_GENERIC_FILEDIALOG -class WXDLLEXPORT wxFileDialog: public wxGenericFileDialog +class WXDLLIMPEXP_CORE wxFileDialog: public wxGenericFileDialog { - DECLARE_DYNAMIC_CLASS(wxFileDialog) - public: - wxFileDialog() {} + wxFileDialog() {} wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = _T(""), - const wxString& defaultFile = _T(""), + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, const wxString& wildCard = wxFileSelectorDefaultWildcardStr, long style = 0, - const wxPoint& pos = wxDefaultPosition) - :wxGenericFileDialog(parent, message, defaultDir, defaultFile, wildCard, style, pos) + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize) + :wxGenericFileDialog(parent, message, + defaultDir, defaultFile, wildCard, + style, + pos, size) { } -}; - -// File selector - backward compatibility -WXDLLEXPORT wxString -wxFileSelector(const wxChar *message = wxFileSelectorPromptStr, - const wxChar *default_path = NULL, - const wxChar *default_filename = NULL, - const wxChar *default_extension = NULL, - const wxChar *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// An extended version of wxFileSelector -WXDLLEXPORT wxString -wxFileSelectorEx(const wxChar *message = wxFileSelectorPromptStr, - const wxChar *default_path = NULL, - const wxChar *default_filename = NULL, - int *indexDefaultExtension = NULL, - const wxChar *wildcard = wxFileSelectorDefaultWildcardStr, - int flags = 0, - wxWindow *parent = NULL, - int x = -1, int y = -1); - -// Ask for filename to load -WXDLLEXPORT wxString -wxLoadFileSelector(const wxChar *what, - const wxChar *extension, - const wxChar *default_name = (const wxChar *)NULL, - wxWindow *parent = (wxWindow *) NULL); - -// Ask for filename to save -WXDLLEXPORT wxString -wxSaveFileSelector(const wxChar *what, - const wxChar *extension, - const wxChar *default_name = (const wxChar *) NULL, - wxWindow *parent = (wxWindow *) NULL); - -#endif // USE_GENERIC_FILEDIALOG - -//----------------------------------------------------------------------------- -// wxFileData -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileData -{ -public: - enum fileType - { - is_file = 0, - is_dir = 0x0001, - is_link = 0x0002, - is_exe = 0x0004, - is_drive = 0x0008 - }; - - wxFileData( const wxString &name, const wxString &fname, fileType type ); - wxString GetName() const; - wxString GetFullName() const; - wxString GetHint() const; - - // the wxFileCtrl fields in report view - enum fileListFieldType - { - FileList_Name, - FileList_Type, - FileList_Date, - FileList_Time, -#ifdef __UNIX__ - FileList_Perm, -#endif // __UNIX__ - FileList_Max - }; - - wxString GetEntry( fileListFieldType num ) const; - - bool IsDir() const; - bool IsLink() const; - bool IsExe() const; - bool IsDrive() const; - long GetSize() const { return m_size; } - int GetHour() const { return m_hour; } - int GetMinute() const { return m_minute; } - int GetYear() const { return m_year; } - int GetMonth() const { return m_month; } - int GetDay() const { return m_day; } - - void MakeItem( wxListItem &item ); - void SetNewName( const wxString &name, const wxString &fname ); private: - wxString m_name; - wxString m_fileName; - long m_size; - int m_hour; - int m_minute; - int m_year; - int m_month; - int m_day; - wxString m_permissions; - int m_type; -}; - -//----------------------------------------------------------------------------- -// wxFileCtrl -//----------------------------------------------------------------------------- - -class WXDLLEXPORT wxFileCtrl : public wxListCtrl -{ -public: - wxFileCtrl(); - wxFileCtrl( wxWindow *win, - wxWindowID id, - const wxString &wild, - bool showHidden, - const wxPoint &pos = wxDefaultPosition, - const wxSize &size = wxDefaultSize, - long style = wxLC_LIST, - const wxValidator &validator = wxDefaultValidator, - const wxString &name = wxT("filelist") ); - virtual ~wxFileCtrl(); - - void ChangeToListMode(); - void ChangeToReportMode(); - void ChangeToIconMode(); - void ShowHidden( bool show = TRUE ); - bool GetShowHidden() const { return m_showHidden; } - - long Add( wxFileData *fd, wxListItem &item ); - void UpdateFiles(); - virtual void StatusbarText( wxChar *WXUNUSED(text) ) {}; - void MakeDir(); - void GoToParentDir(); - void GoToHomeDir(); - void GoToDir( const wxString &dir ); - void SetWild( const wxString &wild ); - wxString GetWild() const { return m_wild; } - void GetDir( wxString &dir ); - wxString GetDir() const { return m_dirName; } - - void OnListDeleteItem( wxListEvent &event ); - void OnListEndLabelEdit( wxListEvent &event ); - void OnListColClick( wxListEvent &event ); - - // Associate commonly used UI controls with wxFileCtrl so that they can be - // disabled when they cannot be used (e.g. can't go to parent directory - // if wxFileCtrl already is in the root dir): - void SetGoToParentControl(wxWindow *ctrl) { m_goToParentControl = ctrl; } - void SetNewDirControl(wxWindow *ctrl) { m_newDirControl = ctrl; } - - void SortItems(wxFileData::fileListFieldType field, bool foward); - bool GetSortDirection() const { return m_sort_foward > 0; } - wxFileData::fileListFieldType GetSortField() const { return m_sort_field; } - -private: - void FreeItemData(const wxListItem& item); - void FreeAllItemsData(); - - wxString m_dirName; - bool m_showHidden; - wxString m_wild; - - wxWindow *m_goToParentControl; - wxWindow *m_newDirControl; - - int m_sort_foward; - wxFileData::fileListFieldType m_sort_field; - - DECLARE_DYNAMIC_CLASS(wxFileCtrl); - DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(wxFileDialog) }; -#endif - // _WX_FILEDLGG_H_ - +#endif // wxHAS_GENERIC_FILEDIALOG +#endif // _WX_FILEDLGG_H_