X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9cedab372ea48d9f5fd7423646f6d51d8b3f906f..8c9f8f91cd62335261ee29762747218f28d129de:/include/wx/generic/filedlgg.h diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h index 452a01cf6a..b942af6d6e 100644 --- a/include/wx/generic/filedlgg.h +++ b/include/wx/generic/filedlgg.h @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: filedlgg.h -// Purpose: wxFileDialog +// Purpose: wxGenericFileDialog // Author: Robert Roebling // Modified by: // Created: 8/17/99 @@ -12,74 +12,75 @@ #ifndef _WX_FILEDLGG_H_ #define _WX_FILEDLGG_H_ -#if defined(__GNUG__) && !defined(__APPLE__) +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "filedlgg.h" #endif -#include "wx/dialog.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorDefaultWildcardStr; +#include "wx/listctrl.h" +#include "wx/datetime.h" //----------------------------------------------------------------------------- // classes //----------------------------------------------------------------------------- -class wxCheckBox; -class wxChoice; -class wxFileData; -class wxFileCtrl; -class wxFileDialog; -class wxListEvent; -class wxStaticText; -class wxTextCtrl; +class WXDLLEXPORT wxBitmapButton; +class WXDLLEXPORT wxCheckBox; +class WXDLLEXPORT wxChoice; +class WXDLLEXPORT wxFileData; +class WXDLLEXPORT wxFileCtrl; +class WXDLLEXPORT wxGenericFileDialog; +class WXDLLEXPORT wxListEvent; +class WXDLLEXPORT wxListItem; +class WXDLLEXPORT wxStaticText; +class WXDLLEXPORT wxTextCtrl; + +#if defined(__WXUNIVERSAL__)||defined(__WXX11__)||defined(__WXMGL__)||defined(__WXCOCOA__) + #define USE_GENERIC_FILEDIALOG +#endif //------------------------------------------------------------------------- -// File selector +// wxGenericFileDialog //------------------------------------------------------------------------- -class wxFileDialog: public wxDialog +class WXDLLEXPORT wxGenericFileDialog: public wxFileDialogBase { public: - wxFileDialog() { } + wxGenericFileDialog() : wxFileDialogBase() { Init(); } - wxFileDialog(wxWindow *parent, + wxGenericFileDialog(wxWindow *parent, + const wxString& message = wxFileSelectorPromptStr, + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, + const wxString& wildCard = wxFileSelectorDefaultWildcardStr, + long style = 0, + const wxPoint& pos = wxDefaultPosition, + 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 ~wxFileDialog(); - - 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); - - 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; } + const wxPoint& pos = wxDefaultPosition, + bool bypassGenericImpl = false ); + + virtual ~wxGenericFileDialog(); + + virtual void SetMessage(const wxString& message) { SetTitle(message); } + virtual void SetPath(const wxString& path); + virtual void SetFilterIndex(int filterIndex); + virtual void SetWildcard(const wxString& wildCard); // for multiple file selection - void GetPaths(wxArrayString& paths) const; - void GetFilenames(wxArrayString& files) const; + virtual void GetPaths(wxArrayString& paths) const; + virtual void GetFilenames(wxArrayString& files) const; // implementation only from now on // ------------------------------- virtual int ShowModal(); + virtual bool Show( bool show = true ); void OnSelected( wxListEvent &event ); void OnActivated( wxListEvent &event ); @@ -89,75 +90,221 @@ public: void OnHome( wxCommandEvent &event ); void OnListOk( wxCommandEvent &event ); void OnNew( wxCommandEvent &event ); - void OnChoice( wxCommandEvent &event ); + void OnChoiceFilter( wxCommandEvent &event ); void OnTextEnter( wxCommandEvent &event ); + void OnTextChange( wxCommandEvent &event ); void OnCheck( wxCommandEvent &event ); - void HandleAction( const wxString &fn ); + virtual void HandleAction( const wxString &fn ); + + virtual void UpdateControls(); + +private: + // Don't use this implementation at all :-) + bool m_bypassGenericImpl; protected: - wxString m_message; - long m_dialogStyle; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; + // use the filter with the given index + void DoSetFilterIndex(int filterindex); + wxString m_filterExtension; wxChoice *m_choice; wxTextCtrl *m_text; wxFileCtrl *m_list; wxCheckBox *m_check; wxStaticText *m_static; + wxBitmapButton *m_upDirButton; + wxBitmapButton *m_newDirButton; private: - DECLARE_DYNAMIC_CLASS(wxFileDialog) + void Init(); + DECLARE_DYNAMIC_CLASS(wxGenericFileDialog) DECLARE_EVENT_TABLE() - // these variables are preserved between wxFileDialog calls + // these variables are preserved between wxGenericFileDialog calls static long ms_lastViewStyle; // list or report? static bool ms_lastShowHidden; // did we show hidden files? }; -// 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); +#ifdef USE_GENERIC_FILEDIALOG + +class WXDLLEXPORT wxFileDialog: public wxGenericFileDialog +{ +public: + wxFileDialog() {} + + wxFileDialog(wxWindow *parent, + const wxString& message = wxFileSelectorPromptStr, + 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) + { + } + +private: + DECLARE_DYNAMIC_CLASS(wxFileDialog) +}; + +#endif // USE_GENERIC_FILEDIALOG + +//----------------------------------------------------------------------------- +// wxFileData - a class to hold the file info for the wxFileCtrl +//----------------------------------------------------------------------------- +class WXDLLEXPORT wxFileData +{ +public: + enum fileType + { + is_file = 0x0000, + is_dir = 0x0001, + is_link = 0x0002, + is_exe = 0x0004, + is_drive = 0x0008 + }; + wxFileData() { Init(); } + // Full copy constructor + wxFileData( const wxFileData& fileData ) { Copy(fileData); } + // Create a filedata from this information + wxFileData( const wxString &filePath, const wxString &fileName, + fileType type, int image_id ); -#endif - // _WX_DIRDLGG_H_ + // make a full copy of the other wxFileData + void Copy( const wxFileData &other ); + + // (re)read the extra data about the file from the system + void ReadData(); + + // get the name of the file, dir, drive + wxString GetFileName() const { return m_fileName; } + // get the full path + name of the file, dir, path + wxString GetFilePath() const { return m_filePath; } + // Set the path + name and name of the item + void SetNewName( const wxString &filePath, const wxString &fileName ); + + // Get the size of the file in bytes + long GetSize() const { return m_size; } + // Get the type of file, either file extension or