added example of customizing the generic about dialog and renamed wxAboutDialog to...
[wxWidgets.git] / samples / dialogs / dialogs.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dialogs.h
3 // Purpose: Common dialogs demo
4 // Author: Julian Smart
5 // Modified by: ABX (2004) - adjustementd for conditional building
6 // Created: 04/01/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 /*
13 This sample shows how to use the common dialogs available from wxWidgets.
14 It also shows that generic implementations of common dialogs can be exchanged
15 with native dialogs and can coexist in one application. The need for generic
16 dialogs addition is recognized thanks to setup of below USE_*** setting. Their
17 combinations reflects conditions of makefiles and project files to avoid unresolved
18 references during linking. For now some generic dialogs are added in static builds
19 of MSW, MAC and OS2
20 */
21
22 #ifndef __DIALOGSH__
23 #define __DIALOGSH__
24
25 #ifdef __WXUNIVERSAL__
26 #define USE_WXUNIVERSAL 1
27 #else
28 #define USE_WXUNIVERSAL 0
29 #endif
30
31 #ifdef WXUSINGDLL
32 #define USE_DLL 1
33 #else
34 #define USE_DLL 0
35 #endif
36
37 #if defined(__WXWINCE__)
38 #define USE_WXWINCE 1
39 #else
40 #define USE_WXWINCE 0
41 #endif
42
43 #if defined(__WXMSW__) && !USE_WXWINCE
44 #define USE_WXMSW 1
45 #else
46 #define USE_WXMSW 0
47 #endif
48
49 #ifdef __WXMAC__
50 #define USE_WXMAC 1
51 #else
52 #define USE_WXMAC 0
53 #endif
54
55 #if defined(__WXMAC_OSX__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2) && USE_NATIVE_FONT_DIALOG_FOR_MACOSX
56 #define USE_WXMACFONTDLG 1
57 #else
58 #define USE_WXMACFONTDLG 0
59 #endif
60
61 #ifdef __WXGTK__
62 #define USE_WXGTK 1
63 #else
64 #define USE_WXGTK 0
65 #endif
66
67 #ifdef __WXPM__
68 #define USE_WXPM 1
69 #else
70 #define USE_WXPM 0
71 #endif
72
73 #define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
74
75 #define USE_COLOURDLG_GENERIC \
76 ((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_COLOURDLG)
77 #define USE_DIRDLG_GENERIC \
78 ((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_DIRDLG)
79 #define USE_FILEDLG_GENERIC \
80 ((((USE_WXMSW || USE_WXMAC || USE_WXPM) && USE_GENERIC_DIALOGS) || USE_WXWINCE) && wxUSE_FILEDLG)
81 #define USE_FONTDLG_GENERIC \
82 ((USE_WXMSW || USE_WXMACFONTDLG || USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
83
84 // Turn USE_MODAL_PRESENTATION to 0 if there is any reason for not presenting difference
85 // between modal and modeless dialogs (ie. not implemented it in your port yet)
86 #if defined(__SMARTPHONE__) || !wxUSE_BOOKCTRL
87 #define USE_MODAL_PRESENTATION 0
88 #else
89 #define USE_MODAL_PRESENTATION 1
90 #endif
91
92
93 // Turn USE_SETTINGS_DIALOG to 0 if supported
94 #if wxUSE_BOOKCTRL
95 #define USE_SETTINGS_DIALOG 1
96 #else
97 #define USE_SETTINGS_DIALOG 0
98 #endif
99
100
101 // Define a new application type
102 class MyApp: public wxApp
103 {
104 public:
105 bool OnInit();
106
107 wxFont m_canvasFont;
108 wxColour m_canvasTextColour;
109 };
110
111 #if USE_MODAL_PRESENTATION
112
113 // A custom modeless dialog
114 class MyModelessDialog : public wxDialog
115 {
116 public:
117 MyModelessDialog(wxWindow *parent);
118
119 void OnButton(wxCommandEvent& event);
120 void OnClose(wxCloseEvent& event);
121
122 private:
123 DECLARE_EVENT_TABLE()
124 };
125
126 // A custom modal dialog
127 class MyModalDialog : public wxDialog
128 {
129 public:
130 MyModalDialog(wxWindow *parent);
131
132 void OnButton(wxCommandEvent& event);
133
134 private:
135 wxButton *m_btnModal,
136 *m_btnModeless,
137 *m_btnDelete;
138
139 DECLARE_EVENT_TABLE()
140 };
141
142 #endif // USE_MODAL_PRESENTATION
143
144 #if USE_SETTINGS_DIALOG
145 // Property sheet dialog
146 class SettingsDialog: public wxPropertySheetDialog
147 {
148 DECLARE_CLASS(SettingsDialog)
149 public:
150 SettingsDialog(wxWindow* parent, int dialogType);
151 ~SettingsDialog();
152
153 wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
154 wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
155
156 protected:
157
158 enum {
159 ID_SHOW_TOOLTIPS = 100,
160 ID_AUTO_SAVE,
161 ID_AUTO_SAVE_MINS,
162 ID_LOAD_LAST_PROJECT,
163
164 ID_APPLY_SETTINGS_TO,
165 ID_BACKGROUND_STYLE,
166 ID_FONT_SIZE
167 };
168
169 wxImageList* m_imageList;
170
171 DECLARE_EVENT_TABLE()
172 };
173
174 #endif // USE_SETTINGS_DIALOG
175
176 // Define a new frame type
177 class MyFrame: public wxFrame
178 {
179 public:
180 MyFrame(wxWindow *parent, const wxString& title);
181
182 void MessageBox(wxCommandEvent& event);
183
184 #if wxUSE_COLOURDLG
185 void ChooseColour(wxCommandEvent& event);
186 #endif // wxUSE_COLOURDLG
187
188 #if wxUSE_FONTDLG
189 void ChooseFont(wxCommandEvent& event);
190 #endif // wxUSE_FONTDLG
191
192 #if wxUSE_LOG_DIALOG
193 void LogDialog(wxCommandEvent& event);
194 #endif // wxUSE_LOG_DIALOG
195
196 #if wxUSE_CHOICEDLG
197 void SingleChoice(wxCommandEvent& event);
198 void MultiChoice(wxCommandEvent& event);
199 #endif // wxUSE_CHOICEDLG
200
201 #if wxUSE_TEXTDLG
202 void TextEntry(wxCommandEvent& event);
203 void PasswordEntry(wxCommandEvent& event);
204 #endif // wxUSE_TEXTDLG
205
206 #if wxUSE_NUMBERDLG
207 void NumericEntry(wxCommandEvent& event);
208 #endif // wxUSE_NUMBERDLG
209
210 #if wxUSE_FILEDLG
211 void FileOpen(wxCommandEvent& event);
212 void FileOpen2(wxCommandEvent& event);
213 void FilesOpen(wxCommandEvent& event);
214 void FileSave(wxCommandEvent& event);
215 #endif // wxUSE_FILEDLG
216
217 #if USE_FILEDLG_GENERIC
218 void FileOpenGeneric(wxCommandEvent& event);
219 void FilesOpenGeneric(wxCommandEvent& event);
220 void FileSaveGeneric(wxCommandEvent& event);
221 #endif // USE_FILEDLG_GENERIC
222
223 #if wxUSE_DIRDLG
224 void DirChoose(wxCommandEvent& event);
225 void DirChooseNew(wxCommandEvent& event);
226 #endif // wxUSE_DIRDLG
227
228 #if USE_DIRDLG_GENERIC
229 void GenericDirChoose(wxCommandEvent& event);
230 #endif // USE_DIRDLG_GENERIC
231
232 #if wxUSE_STARTUP_TIPS
233 void ShowTip(wxCommandEvent& event);
234 #endif // wxUSE_STARTUP_TIPS
235
236 #if USE_MODAL_PRESENTATION
237 void ModalDlg(wxCommandEvent& event);
238 void ModelessDlg(wxCommandEvent& event);
239 void DlgCenteredScreen(wxCommandEvent& event);
240 void DlgCenteredParent(wxCommandEvent& event);
241 #endif // USE_MODAL_PRESENTATION
242
243 #if wxUSE_PROGRESSDLG
244 void ShowProgress(wxCommandEvent& event);
245 #endif // wxUSE_PROGRESSDLG
246
247 #if wxUSE_ABOUTDLG
248 void ShowSimpleAboutDialog(wxCommandEvent& event);
249 void ShowFancyAboutDialog(wxCommandEvent& event);
250 void ShowFullAboutDialog(wxCommandEvent& event);
251 void ShowCustomAboutDialog(wxCommandEvent& event);
252 #endif // wxUSE_ABOUTDLG
253
254 #if wxUSE_BUSYINFO
255 void ShowBusyInfo(wxCommandEvent& event);
256 #endif // wxUSE_BUSYINFO
257
258 #if wxUSE_FINDREPLDLG
259 void ShowFindDialog(wxCommandEvent& event);
260 void ShowReplaceDialog(wxCommandEvent& event);
261 void OnFindDialog(wxFindDialogEvent& event);
262 #endif // wxUSE_FINDREPLDLG
263
264 #if USE_COLOURDLG_GENERIC
265 void ChooseColourGeneric(wxCommandEvent& event);
266 #endif // USE_COLOURDLG_GENERIC
267
268 #if USE_FONTDLG_GENERIC
269 void ChooseFontGeneric(wxCommandEvent& event);
270 #endif // USE_FONTDLG_GENERIC
271
272 void OnPropertySheet(wxCommandEvent& event);
273 void OnRequestUserAttention(wxCommandEvent& event);
274 void OnExit(wxCommandEvent& event);
275
276 private:
277 #if wxUSE_DIRDLG
278 void DoDirChoose(int style);
279 #endif // wxUSE_DIRDLG
280
281 #if USE_MODAL_PRESENTATION
282 MyModelessDialog *m_dialog;
283 #endif // USE_MODAL_PRESENTATION
284
285 #if wxUSE_FINDREPLDLG
286 wxFindReplaceData m_findData;
287
288 wxFindReplaceDialog *m_dlgFind,
289 *m_dlgReplace;
290 #endif // wxUSE_FINDREPLDLG
291
292 wxColourData m_clrData;
293
294 DECLARE_EVENT_TABLE()
295 };
296
297 class MyCanvas: public wxScrolledWindow
298 {
299 public:
300 MyCanvas(wxWindow *parent) :
301 wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
302
303 void OnPaint(wxPaintEvent& event);
304
305 DECLARE_EVENT_TABLE()
306 };
307
308
309 // Menu IDs
310 enum
311 {
312 DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
313 DIALOGS_CHOOSE_COLOUR_GENERIC,
314 DIALOGS_CHOOSE_FONT,
315 DIALOGS_CHOOSE_FONT_GENERIC,
316 DIALOGS_MESSAGE_BOX,
317 DIALOGS_SINGLE_CHOICE,
318 DIALOGS_MULTI_CHOICE,
319 DIALOGS_TEXT_ENTRY,
320 DIALOGS_PASSWORD_ENTRY,
321 DIALOGS_FILE_OPEN,
322 DIALOGS_FILE_OPEN2,
323 DIALOGS_FILES_OPEN,
324 DIALOGS_FILE_SAVE,
325 DIALOGS_FILE_OPEN_GENERIC,
326 DIALOGS_FILES_OPEN_GENERIC,
327 DIALOGS_FILE_SAVE_GENERIC,
328 DIALOGS_DIR_CHOOSE,
329 DIALOGS_DIRNEW_CHOOSE,
330 DIALOGS_GENERIC_DIR_CHOOSE,
331 DIALOGS_TIP,
332 DIALOGS_NUM_ENTRY,
333 DIALOGS_LOG_DIALOG,
334 DIALOGS_MODAL,
335 DIALOGS_MODELESS,
336 DIALOGS_CENTRE_SCREEN,
337 DIALOGS_CENTRE_PARENT,
338 DIALOGS_MODELESS_BTN,
339 DIALOGS_PROGRESS,
340 DIALOGS_ABOUTDLG_SIMPLE,
341 DIALOGS_ABOUTDLG_FANCY,
342 DIALOGS_ABOUTDLG_FULL,
343 DIALOGS_ABOUTDLG_CUSTOM,
344 DIALOGS_BUSYINFO,
345 DIALOGS_FIND,
346 DIALOGS_REPLACE,
347 DIALOGS_REQUEST,
348 DIALOGS_PROPERTY_SHEET,
349 DIALOGS_PROPERTY_SHEET_TOOLBOOK,
350 DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK
351 };
352
353 #endif
354