]> git.saurik.com Git - wxWidgets.git/blob - samples/dialogs/dialogs.h
include VC++ version in build compatibility string
[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 class StdButtonSizerDialog : public wxDialog
145 {
146 public:
147 StdButtonSizerDialog(wxWindow *parent);
148
149 void OnEvent(wxCommandEvent& event);
150
151 private:
152 void EnableDisableControls();
153
154 wxCheckBox *m_chkboxAffirmativeButton;
155 wxRadioButton *m_radiobtnOk,
156 *m_radiobtnYes;
157
158 wxCheckBox *m_chkboxDismissButton;
159 wxRadioButton *m_radiobtnClose,
160 *m_radiobtnCancel;
161
162 wxCheckBox *m_chkboxApply,
163 *m_chkboxNo,
164 *m_chkboxHelp,
165 *m_chkboxNoDefault;
166
167 wxSizer *m_buttonsSizer;
168
169 DECLARE_EVENT_TABLE()
170 };
171
172 class TestDefaultActionDialog: public wxDialog
173 {
174 public:
175 TestDefaultActionDialog( wxWindow *parent );
176
177 void OnListBoxDClick(wxCommandEvent& event);
178 void OnCatchListBoxDClick(wxCommandEvent& event);
179
180 private:
181 bool m_catchListBoxDClick;
182
183 private:
184 DECLARE_EVENT_TABLE()
185 };
186
187
188 #if USE_SETTINGS_DIALOG
189 // Property sheet dialog
190 class SettingsDialog: public wxPropertySheetDialog
191 {
192 DECLARE_CLASS(SettingsDialog)
193 public:
194 SettingsDialog(wxWindow* parent, int dialogType);
195 ~SettingsDialog();
196
197 wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
198 wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
199
200 protected:
201
202 enum {
203 ID_SHOW_TOOLTIPS = 100,
204 ID_AUTO_SAVE,
205 ID_AUTO_SAVE_MINS,
206 ID_LOAD_LAST_PROJECT,
207
208 ID_APPLY_SETTINGS_TO,
209 ID_BACKGROUND_STYLE,
210 ID_FONT_SIZE
211 };
212
213 wxImageList* m_imageList;
214
215 DECLARE_EVENT_TABLE()
216 };
217
218 #endif // USE_SETTINGS_DIALOG
219
220 // Define a new frame type
221 class MyFrame: public wxFrame
222 {
223 public:
224 MyFrame(wxWindow *parent, const wxString& title);
225 virtual ~MyFrame();
226
227 #if wxUSE_MSGDLG
228 void MessageBox(wxCommandEvent& event);
229 void MessageBoxInfo(wxCommandEvent& event);
230 #endif // wxUSE_MSGDLG
231
232 #if wxUSE_COLOURDLG
233 void ChooseColour(wxCommandEvent& event);
234 void GetColour(wxCommandEvent& event);
235 #endif // wxUSE_COLOURDLG
236
237 #if wxUSE_FONTDLG
238 void ChooseFont(wxCommandEvent& event);
239 #endif // wxUSE_FONTDLG
240
241 #if wxUSE_LOG_DIALOG
242 void LogDialog(wxCommandEvent& event);
243 #endif // wxUSE_LOG_DIALOG
244
245 #if wxUSE_CHOICEDLG
246 void SingleChoice(wxCommandEvent& event);
247 void MultiChoice(wxCommandEvent& event);
248 #endif // wxUSE_CHOICEDLG
249
250 #if wxUSE_TEXTDLG
251 void TextEntry(wxCommandEvent& event);
252 void PasswordEntry(wxCommandEvent& event);
253 #endif // wxUSE_TEXTDLG
254
255 #if wxUSE_NUMBERDLG
256 void NumericEntry(wxCommandEvent& event);
257 #endif // wxUSE_NUMBERDLG
258
259 #if wxUSE_FILEDLG
260 void FileOpen(wxCommandEvent& event);
261 void FileOpen2(wxCommandEvent& event);
262 void FilesOpen(wxCommandEvent& event);
263 void FileSave(wxCommandEvent& event);
264 #endif // wxUSE_FILEDLG
265
266 #if USE_FILEDLG_GENERIC
267 void FileOpenGeneric(wxCommandEvent& event);
268 void FilesOpenGeneric(wxCommandEvent& event);
269 void FileSaveGeneric(wxCommandEvent& event);
270 #endif // USE_FILEDLG_GENERIC
271
272 #if wxUSE_DIRDLG
273 void DirChoose(wxCommandEvent& event);
274 void DirChooseNew(wxCommandEvent& event);
275 #endif // wxUSE_DIRDLG
276
277 #if USE_DIRDLG_GENERIC
278 void GenericDirChoose(wxCommandEvent& event);
279 #endif // USE_DIRDLG_GENERIC
280
281 #if wxUSE_STARTUP_TIPS
282 void ShowTip(wxCommandEvent& event);
283 #endif // wxUSE_STARTUP_TIPS
284
285 #if USE_MODAL_PRESENTATION
286 void ModalDlg(wxCommandEvent& event);
287 #endif // USE_MODAL_PRESENTATION
288 void ModelessDlg(wxCommandEvent& event);
289 void DlgCenteredScreen(wxCommandEvent& event);
290 void DlgCenteredParent(wxCommandEvent& event);
291 void MiniFrame(wxCommandEvent& event);
292 void DlgOnTop(wxCommandEvent& event);
293
294 #if wxUSE_PROGRESSDLG
295 void ShowProgress(wxCommandEvent& event);
296 #endif // wxUSE_PROGRESSDLG
297
298 #if wxUSE_ABOUTDLG
299 void ShowSimpleAboutDialog(wxCommandEvent& event);
300 void ShowFancyAboutDialog(wxCommandEvent& event);
301 void ShowFullAboutDialog(wxCommandEvent& event);
302 void ShowCustomAboutDialog(wxCommandEvent& event);
303 #endif // wxUSE_ABOUTDLG
304
305 #if wxUSE_BUSYINFO
306 void ShowBusyInfo(wxCommandEvent& event);
307 #endif // wxUSE_BUSYINFO
308
309 #if wxUSE_FINDREPLDLG
310 void ShowFindDialog(wxCommandEvent& event);
311 void ShowReplaceDialog(wxCommandEvent& event);
312 void OnFindDialog(wxFindDialogEvent& event);
313 #endif // wxUSE_FINDREPLDLG
314
315 #if USE_COLOURDLG_GENERIC
316 void ChooseColourGeneric(wxCommandEvent& event);
317 #endif // USE_COLOURDLG_GENERIC
318
319 #if USE_FONTDLG_GENERIC
320 void ChooseFontGeneric(wxCommandEvent& event);
321 #endif // USE_FONTDLG_GENERIC
322
323 void OnPropertySheet(wxCommandEvent& event);
324
325 void OnRequestUserAttention(wxCommandEvent& event);
326 #if wxUSE_NOTIFICATION_MESSAGE
327 void OnNotifMsgAuto(wxCommandEvent& event);
328 void OnNotifMsgShow(wxCommandEvent& event);
329 void OnNotifMsgHide(wxCommandEvent& event);
330 #endif // wxUSE_NOTIFICATION_MESSAGE
331
332 void OnStandardButtonsSizerDialog(wxCommandEvent& event);
333
334 void OnTestDefaultActionDialog(wxCommandEvent& event);
335
336 void OnExit(wxCommandEvent& event);
337
338 private:
339 #if wxUSE_DIRDLG
340 void DoDirChoose(int style);
341 #endif // wxUSE_DIRDLG
342
343 #if USE_MODAL_PRESENTATION
344 MyModelessDialog *m_dialog;
345 #endif // USE_MODAL_PRESENTATION
346
347 #if wxUSE_FINDREPLDLG
348 wxFindReplaceData m_findData;
349
350 wxFindReplaceDialog *m_dlgFind,
351 *m_dlgReplace;
352 #endif // wxUSE_FINDREPLDLG
353
354 #if wxUSE_NOTIFICATION_MESSAGE
355 wxNotificationMessage *m_notifMsg;
356 #endif // wxUSE_NOTIFICATION_MESSAGE
357
358 wxColourData m_clrData;
359
360 DECLARE_EVENT_TABLE()
361 };
362
363 class MyCanvas: public wxScrolledWindow
364 {
365 public:
366 MyCanvas(wxWindow *parent) :
367 wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
368
369 void OnPaint(wxPaintEvent& event);
370
371 DECLARE_EVENT_TABLE()
372 };
373
374
375 // Menu IDs
376 enum
377 {
378 DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
379 DIALOGS_GET_COLOUR,
380 DIALOGS_CHOOSE_COLOUR_GENERIC,
381 DIALOGS_CHOOSE_FONT,
382 DIALOGS_CHOOSE_FONT_GENERIC,
383 DIALOGS_MESSAGE_BOX,
384 DIALOGS_MESSAGE_BOX_WXINFO,
385 DIALOGS_SINGLE_CHOICE,
386 DIALOGS_MULTI_CHOICE,
387 DIALOGS_TEXT_ENTRY,
388 DIALOGS_PASSWORD_ENTRY,
389 DIALOGS_FILE_OPEN,
390 DIALOGS_FILE_OPEN2,
391 DIALOGS_FILES_OPEN,
392 DIALOGS_FILE_SAVE,
393 DIALOGS_FILE_OPEN_GENERIC,
394 DIALOGS_FILES_OPEN_GENERIC,
395 DIALOGS_FILE_SAVE_GENERIC,
396 DIALOGS_DIR_CHOOSE,
397 DIALOGS_DIRNEW_CHOOSE,
398 DIALOGS_GENERIC_DIR_CHOOSE,
399 DIALOGS_TIP,
400 DIALOGS_NUM_ENTRY,
401 DIALOGS_LOG_DIALOG,
402 DIALOGS_MODAL,
403 DIALOGS_MODELESS,
404 DIALOGS_CENTRE_SCREEN,
405 DIALOGS_CENTRE_PARENT,
406 DIALOGS_MINIFRAME,
407 DIALOGS_ONTOP,
408 DIALOGS_MODELESS_BTN,
409 DIALOGS_PROGRESS,
410 DIALOGS_ABOUTDLG_SIMPLE,
411 DIALOGS_ABOUTDLG_FANCY,
412 DIALOGS_ABOUTDLG_FULL,
413 DIALOGS_ABOUTDLG_CUSTOM,
414 DIALOGS_BUSYINFO,
415 DIALOGS_FIND,
416 DIALOGS_REPLACE,
417 DIALOGS_REQUEST,
418 DIALOGS_NOTIFY_AUTO,
419 DIALOGS_NOTIFY_SHOW,
420 DIALOGS_NOTIFY_HIDE,
421 DIALOGS_PROPERTY_SHEET,
422 DIALOGS_PROPERTY_SHEET_TOOLBOOK,
423 DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK,
424 DIALOGS_STANDARD_BUTTON_SIZER_DIALOG,
425 DIALOGS_TEST_DEFAULT_ACTION
426 };
427
428 #endif
429