Tried to prevent scrollbars from scrolling as
[wxWidgets.git] / include / wx / generic / filedlgg.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: filedlgg.h
3 // Purpose: wxFileDialog
4 // Author: Robert Roebling
5 // Modified by:
6 // Created: 8/17/99
7 // Copyright: (c) Robert Roebling
8 // RCS-ID: $Id$
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_FILEDLGG_H_
13 #define _WX_FILEDLGG_H_
14
15 #ifdef __GNUG__
16 #pragma interface "filedlgg.h"
17 #endif
18
19 #include "wx/defs.h"
20
21 #include "wx/dialog.h"
22 #include "wx/checkbox.h"
23 #include "wx/listctrl.h"
24 #include "wx/textctrl.h"
25 #include "wx/choice.h"
26 #include "wx/checkbox.h"
27 #include "wx/stattext.h"
28
29 //-----------------------------------------------------------------------------
30 // data
31 //-----------------------------------------------------------------------------
32
33 WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorPromptStr;
34 WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorDefaultWildcardStr;
35
36 //-----------------------------------------------------------------------------
37 // classes
38 //-----------------------------------------------------------------------------
39
40 class wxFileData;
41 class wxFileCtrl;
42 class wxFileDialog;
43
44 //-----------------------------------------------------------------------------
45 // wxFileData
46 //-----------------------------------------------------------------------------
47
48 class wxFileData : public wxObject
49 {
50 private:
51 wxString m_name;
52 wxString m_fileName;
53 long m_size;
54 int m_hour;
55 int m_minute;
56 int m_year;
57 int m_month;
58 int m_day;
59 wxString m_permissions;
60 bool m_isDir;
61 bool m_isLink;
62 bool m_isExe;
63
64 public:
65 wxFileData() { }
66 wxFileData( const wxString &name, const wxString &fname );
67 wxString GetName() const;
68 wxString GetFullName() const;
69 wxString GetHint() const;
70 wxString GetEntry( int num );
71 bool IsDir();
72 bool IsLink();
73 bool IsExe();
74 long GetSize();
75 void MakeItem( wxListItem &item );
76 void SetNewName( const wxString &name, const wxString &fname );
77
78 private:
79 DECLARE_DYNAMIC_CLASS(wxFileData);
80 };
81
82 //-----------------------------------------------------------------------------
83 // wxFileCtrl
84 //-----------------------------------------------------------------------------
85
86 class wxFileCtrl : public wxListCtrl
87 {
88 private:
89 wxString m_dirName;
90 bool m_showHidden;
91 wxString m_wild;
92
93 public:
94 wxFileCtrl();
95 wxFileCtrl( wxWindow *win,
96 wxWindowID id,
97 const wxString &dirName,
98 const wxString &wild,
99 const wxPoint &pos = wxDefaultPosition,
100 const wxSize &size = wxDefaultSize,
101 long style = wxLC_LIST,
102 const wxValidator &validator = wxDefaultValidator,
103 const wxString &name = wxT("filelist") );
104 void ChangeToListMode();
105 void ChangeToReportMode();
106 void ChangeToIconMode();
107 void ShowHidden( bool show = TRUE );
108 long Add( wxFileData *fd, wxListItem &item );
109 void Update();
110 virtual void StatusbarText( wxChar *WXUNUSED(text) ) {};
111 void MakeDir();
112 void GoToParentDir();
113 void GoToHomeDir();
114 void GoToDir( const wxString &dir );
115 void SetWild( const wxString &wild );
116 void GetDir( wxString &dir );
117 void OnListDeleteItem( wxListEvent &event );
118 void OnListDeleteAllItems( wxListEvent &event );
119 void OnListEndLabelEdit( wxListEvent &event );
120
121 private:
122 DECLARE_DYNAMIC_CLASS(wxFileCtrl);
123 DECLARE_EVENT_TABLE()
124 };
125
126 //-------------------------------------------------------------------------
127 // File selector
128 //-------------------------------------------------------------------------
129
130 class wxFileDialog: public wxDialog
131 {
132 public:
133 wxFileDialog() { }
134
135 wxFileDialog(wxWindow *parent,
136 const wxString& message = wxFileSelectorPromptStr,
137 const wxString& defaultDir = "",
138 const wxString& defaultFile = "",
139 const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
140 long style = 0,
141 const wxPoint& pos = wxDefaultPosition);
142 ~wxFileDialog();
143
144 void SetMessage(const wxString& message) { m_message = message; }
145 void SetPath(const wxString& path);
146 void SetDirectory(const wxString& dir) { m_dir = dir; }
147 void SetFilename(const wxString& name) { m_fileName = name; }
148 void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; }
149 void SetStyle(long style) { m_dialogStyle = style; }
150 void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; }
151
152 wxString GetMessage() const { return m_message; }
153 wxString GetPath() const { return m_path; }
154 wxString GetDirectory() const { return m_dir; }
155 wxString GetFilename() const { return m_fileName; }
156 wxString GetWildcard() const { return m_wildCard; }
157 long GetStyle() const { return m_dialogStyle; }
158 int GetFilterIndex() const { return m_filterIndex; }
159
160 // for multiple file selection
161 void GetPaths(wxArrayString& paths) const;
162 void GetFilenames(wxArrayString& files) const;
163
164 void OnSelected( wxListEvent &event );
165 void OnActivated( wxListEvent &event );
166 void OnList( wxCommandEvent &event );
167 void OnReport( wxCommandEvent &event );
168 void OnUp( wxCommandEvent &event );
169 void OnHome( wxCommandEvent &event );
170 void OnListOk( wxCommandEvent &event );
171 void OnNew( wxCommandEvent &event );
172 void OnChoice( wxCommandEvent &event );
173 void OnTextEnter( wxCommandEvent &event );
174 void OnCheck( wxCommandEvent &event );
175
176 void HandleAction( const wxString &fn );
177
178 protected:
179 wxString m_message;
180 long m_dialogStyle;
181 wxString m_dir;
182 wxString m_path; // Full path
183 wxString m_fileName;
184 wxString m_wildCard;
185 int m_filterIndex;
186 wxString m_filterExtension;
187 wxChoice *m_choice;
188 wxTextCtrl *m_text;
189 wxFileCtrl *m_list;
190 wxCheckBox *m_check;
191 wxStaticText *m_static;
192
193 private:
194 DECLARE_DYNAMIC_CLASS(wxFileDialog)
195 DECLARE_EVENT_TABLE()
196
197 static long s_lastViewStyle; // list or report?
198 static bool s_lastShowHidden;
199 };
200
201 // File selector - backward compatibility
202 WXDLLEXPORT wxString
203 wxFileSelector(const wxChar *message = wxFileSelectorPromptStr,
204 const wxChar *default_path = NULL,
205 const wxChar *default_filename = NULL,
206 const wxChar *default_extension = NULL,
207 const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
208 int flags = 0,
209 wxWindow *parent = NULL,
210 int x = -1, int y = -1);
211
212 // An extended version of wxFileSelector
213 WXDLLEXPORT wxString
214 wxFileSelectorEx(const wxChar *message = wxFileSelectorPromptStr,
215 const wxChar *default_path = NULL,
216 const wxChar *default_filename = NULL,
217 int *indexDefaultExtension = NULL,
218 const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
219 int flags = 0,
220 wxWindow *parent = NULL,
221 int x = -1, int y = -1);
222
223 // Ask for filename to load
224 WXDLLEXPORT wxString
225 wxLoadFileSelector(const wxChar *what,
226 const wxChar *extension,
227 const wxChar *default_name = (const wxChar *)NULL,
228 wxWindow *parent = (wxWindow *) NULL);
229
230 // Ask for filename to save
231 WXDLLEXPORT wxString
232 wxSaveFileSelector(const wxChar *what,
233 const wxChar *extension,
234 const wxChar *default_name = (const wxChar *) NULL,
235 wxWindow *parent = (wxWindow *) NULL);
236
237
238
239 #endif
240 // _WX_DIRDLGG_H_
241