X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9c8849722a71ee7139e035bca5fdb2ae7b0af570..3f7f284d555df50912037296c5d74a2911975bce:/include/wx/generic/filedlgg.h diff --git a/include/wx/generic/filedlgg.h b/include/wx/generic/filedlgg.h index 33ae126a67..f103a39c25 100644 --- a/include/wx/generic/filedlgg.h +++ b/include/wx/generic/filedlgg.h @@ -1,157 +1,85 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: filedlgg.h -// Purpose: wxFileDialog +// Name: wx/generic/filedlgg.h +// Purpose: wxGenericFileDialog // Author: Robert Roebling // Modified by: // Created: 8/17/99 // Copyright: (c) Robert Roebling // RCS-ID: $Id$ -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_FILEDLGG_H_ #define _WX_FILEDLGG_H_ -#ifdef __GNUG__ -#pragma interface "filedlgg.h" -#endif - -#include "wx/defs.h" - -#include "wx/dialog.h" -#include "wx/checkbox.h" #include "wx/listctrl.h" -#include "wx/textctrl.h" -#include "wx/choice.h" -#include "wx/checkbox.h" -#include "wx/stattext.h" - -//----------------------------------------------------------------------------- -// data -//----------------------------------------------------------------------------- - -WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorDefaultWildcardStr; +#include "wx/datetime.h" +#include "wx/filefn.h" +#include "wx/filedlg.h" //----------------------------------------------------------------------------- // classes //----------------------------------------------------------------------------- -class wxFileData; -class wxFileCtrl; -class wxFileDialog; +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; -//----------------------------------------------------------------------------- -// wxFileData -//----------------------------------------------------------------------------- +//------------------------------------------------------------------------- +// wxGenericFileDialog +//------------------------------------------------------------------------- -class wxFileData : public wxObject +class WXDLLEXPORT wxGenericFileDialog: public wxFileDialogBase { -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; - bool m_isDir; - bool m_isLink; - bool m_isExe; - public: - wxFileData() {} - wxFileData( const wxString &name, const wxString &fname ); - wxString GetName() const; - wxString GetFullName() const; - wxString GetHint() const; - wxString GetEntry( const int num ); - bool IsDir(); - bool IsLink(); - bool IsExe(); - long GetSize(); - void MakeItem( wxListItem &item ); - void SetNewName( const wxString &name, const wxString &fname ); - -private: - DECLARE_DYNAMIC_CLASS(wxFileData); -}; + wxGenericFileDialog() : wxFileDialogBase() { Init(); } -//----------------------------------------------------------------------------- -// wxFileCtrl -//----------------------------------------------------------------------------- + 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 ); -class wxFileCtrl : public wxListCtrl -{ -private: - wxString m_dirName; - bool m_showHidden; - wxString m_wild; + bool Create( 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 ); -public: - wxFileCtrl(); - wxFileCtrl( wxWindow *win, const wxWindowID id, - const wxString &dirName, const wxString &wild, - const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, - const long style = wxLC_LIST, const wxValidator &validator = wxDefaultValidator, - const wxString &name = _T("filelist") ); - void ChangeToListMode(); - void ChangeToReportMode(); - void ChangeToIconMode(); - void ShowHidden( bool show = TRUE ); - long Add( wxFileData *fd, wxListItem &item ); - void Update(); - virtual void StatusbarText( char *WXUNUSED(text) ) {}; - void MakeDir(); - void GoToParentDir(); - void GoToHomeDir(); - void GoToDir( const wxString &dir ); - void SetWild( const wxString &wild ); - void GetDir( wxString &dir ); - void OnListDeleteItem( wxListEvent &event ); - void OnListEndLabelEdit( wxListEvent &event ); + virtual ~wxGenericFileDialog(); -private: - DECLARE_DYNAMIC_CLASS(wxFileCtrl); - DECLARE_EVENT_TABLE() -}; + 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); -//------------------------------------------------------------------------- -// File selector -//------------------------------------------------------------------------- + // for multiple file selection + virtual void GetPaths(wxArrayString& paths) const; + virtual void GetFilenames(wxArrayString& files) const; -class wxFileDialog: public wxDialog -{ -public: - wxFileDialog() { } + // implementation only from now on + // ------------------------------- + + virtual int ShowModal(); + virtual bool Show( bool show = true ); - wxFileDialog(wxWindow *parent, - const wxString& message = wxFileSelectorPromptStr, - const wxString& defaultDir = "", - const wxString& defaultFile = "", - const wxString& wildCard = wxFileSelectorDefaultWildcardStr, - long style = 0, - const wxPoint& pos = wxDefaultPosition); - ~wxFileDialog(); - - void SetMessage(const wxString& message) { m_message = 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) { m_filterIndex = 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 ; } - void OnSelected( wxListEvent &event ); void OnActivated( wxListEvent &event ); void OnList( wxCommandEvent &event ); @@ -160,72 +88,220 @@ 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 ); - -protected: - wxString m_message; - long m_dialogStyle; - wxString m_dir; - wxString m_path; // Full path - wxString m_fileName; - wxString m_wildCard; - int m_filterIndex; + void OnTextChange( wxCommandEvent &event ); + void OnCheck( wxCommandEvent &event ); + + virtual void HandleAction( const wxString &fn ); + + virtual void UpdateControls(); + +private: + // Don't use this implementation at all :-) + bool m_bypassGenericImpl; + +protected: + // 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 wxGenericFileDialog calls + static long ms_lastViewStyle; // list or report? + static bool ms_lastShowHidden; // did we show hidden files? +}; + +#ifdef wxUSE_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 // wxUSE_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 ); + + // 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 + wxFileOffset GetSize() const { return m_size; } + // Get the type of file, either file extension or