1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/generic/filedlgg.h
3 // Purpose:     wxGenericFileDialog
4 // Author:      Robert Roebling
5 // Modified by:
6 // Created:     8/17/99
7 // Copyright:   (c) Robert Roebling
8 // Licence:     wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_FILEDLGG_H_
12 #define _WX_FILEDLGG_H_
13 
14 #include "wx/listctrl.h"
15 #include "wx/datetime.h"
16 #include "wx/filefn.h"
17 #include "wx/artprov.h"
18 #include "wx/filedlg.h"
19 #include "wx/generic/filectrlg.h"
20 
21 //-----------------------------------------------------------------------------
22 // classes
23 //-----------------------------------------------------------------------------
24 
25 class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
26 class WXDLLIMPEXP_FWD_CORE wxGenericFileCtrl;
27 class WXDLLIMPEXP_FWD_CORE wxGenericFileDialog;
28 class WXDLLIMPEXP_FWD_CORE wxFileCtrlEvent;
29 
30 //-------------------------------------------------------------------------
31 // wxGenericFileDialog
32 //-------------------------------------------------------------------------
33 
34 class WXDLLIMPEXP_CORE wxGenericFileDialog: public wxFileDialogBase
35 {
36 public:
wxGenericFileDialog()37     wxGenericFileDialog() : wxFileDialogBase() { Init(); }
38 
39     wxGenericFileDialog(wxWindow *parent,
40                         const wxString& message = wxFileSelectorPromptStr,
41                         const wxString& defaultDir = wxEmptyString,
42                         const wxString& defaultFile = wxEmptyString,
43                         const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
44                         long style = wxFD_DEFAULT_STYLE,
45                         const wxPoint& pos = wxDefaultPosition,
46                         const wxSize& sz = wxDefaultSize,
47                         const wxString& name = wxFileDialogNameStr,
48                         bool bypassGenericImpl = false );
49 
50     bool Create( wxWindow *parent,
51                  const wxString& message = wxFileSelectorPromptStr,
52                  const wxString& defaultDir = wxEmptyString,
53                  const wxString& defaultFile = wxEmptyString,
54                  const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
55                  long style = wxFD_DEFAULT_STYLE,
56                  const wxPoint& pos = wxDefaultPosition,
57                  const wxSize& sz = wxDefaultSize,
58                  const wxString& name = wxFileDialogNameStr,
59                  bool bypassGenericImpl = false );
60 
61     virtual ~wxGenericFileDialog();
62 
SetDirectory(const wxString & dir)63     virtual void SetDirectory(const wxString& dir)
64         { m_filectrl->SetDirectory(dir); }
SetFilename(const wxString & name)65     virtual void SetFilename(const wxString& name)
66         { m_filectrl->SetFilename(name); }
SetMessage(const wxString & message)67     virtual void SetMessage(const wxString& message) { SetTitle(message); }
SetPath(const wxString & path)68     virtual void SetPath(const wxString& path)
69         { m_filectrl->SetPath(path); }
SetFilterIndex(int filterIndex)70     virtual void SetFilterIndex(int filterIndex)
71         { m_filectrl->SetFilterIndex(filterIndex); }
SetWildcard(const wxString & wildCard)72     virtual void SetWildcard(const wxString& wildCard)
73         { m_filectrl->SetWildcard(wildCard); }
74 
GetPath()75     virtual wxString GetPath() const
76         { return m_filectrl->GetPath(); }
GetPaths(wxArrayString & paths)77     virtual void GetPaths(wxArrayString& paths) const
78         { m_filectrl->GetPaths(paths); }
GetDirectory()79     virtual wxString GetDirectory() const
80         { return m_filectrl->GetDirectory(); }
GetFilename()81     virtual wxString GetFilename() const
82         { return m_filectrl->GetFilename(); }
GetFilenames(wxArrayString & files)83     virtual void GetFilenames(wxArrayString& files) const
84         { m_filectrl->GetFilenames(files); }
GetWildcard()85     virtual wxString GetWildcard() const
86         { return m_filectrl->GetWildcard(); }
GetFilterIndex()87     virtual int GetFilterIndex() const
88         { return m_filectrl->GetFilterIndex(); }
SupportsExtraControl()89     virtual bool SupportsExtraControl() const { return true; }
90 
91     // implementation only from now on
92     // -------------------------------
93 
94     virtual int ShowModal();
95     virtual bool Show( bool show = true );
96 
97     void OnList( wxCommandEvent &event );
98     void OnReport( wxCommandEvent &event );
99     void OnUp( wxCommandEvent &event );
100     void OnHome( wxCommandEvent &event );
101     void OnOk( wxCommandEvent &event );
102     void OnNew( wxCommandEvent &event );
103     void OnFileActivated( wxFileCtrlEvent &event);
104 
105 private:
106     // if true, don't use this implementation at all
107     bool m_bypassGenericImpl;
108 
109 protected:
110     // update the state of m_upDirButton and m_newDirButton depending on the
111     // currently selected directory
112     void OnUpdateButtonsUI(wxUpdateUIEvent& event);
113 
114     wxString               m_filterExtension;
115     wxGenericFileCtrl     *m_filectrl;
116     wxBitmapButton        *m_upDirButton;
117     wxBitmapButton        *m_newDirButton;
118 
119 private:
120     void Init();
121     wxBitmapButton* AddBitmapButton( wxWindowID winId, const wxArtID& artId,
122                                      const wxString& tip, wxSizer *sizer );
123 
124     DECLARE_DYNAMIC_CLASS(wxGenericFileDialog)
125     DECLARE_EVENT_TABLE()
126 
127     // these variables are preserved between wxGenericFileDialog calls
128     static long ms_lastViewStyle;     // list or report?
129     static bool ms_lastShowHidden;    // did we show hidden files?
130 };
131 
132 #ifdef wxHAS_GENERIC_FILEDIALOG
133 
134 class WXDLLIMPEXP_CORE wxFileDialog: public wxGenericFileDialog
135 {
136 public:
wxFileDialog()137     wxFileDialog() {}
138 
139     wxFileDialog(wxWindow *parent,
140                  const wxString& message = wxFileSelectorPromptStr,
141                  const wxString& defaultDir = wxEmptyString,
142                  const wxString& defaultFile = wxEmptyString,
143                  const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
144                  long style = 0,
145                  const wxPoint& pos = wxDefaultPosition,
146                  const wxSize& size = wxDefaultSize)
wxGenericFileDialog(parent,message,defaultDir,defaultFile,wildCard,style,pos,size)147           :wxGenericFileDialog(parent, message,
148                                defaultDir, defaultFile, wildCard,
149                                style,
150                                pos, size)
151      {
152      }
153 
154 private:
155      DECLARE_DYNAMIC_CLASS(wxFileDialog)
156 };
157 
158 #endif // wxHAS_GENERIC_FILEDIALOG
159 
160 #endif // _WX_FILEDLGG_H_
161