]> git.saurik.com Git - wxWidgets.git/blame - samples/dialogs/dialogs.h
Regenerated makefiles after removing USE_GDIPLUS.
[wxWidgets.git] / samples / dialogs / dialogs.h
CommitLineData
457814b5
JS
1/////////////////////////////////////////////////////////////////////////////
2// Name: dialogs.h
3// Purpose: Common dialogs demo
5b05ce47 4// Author: Julian Smart, Vadim Zeitlin, ABX
457814b5
JS
5// Created: 04/01/98
6// RCS-ID: $Id$
6aa89a22 7// Copyright: (c) Julian Smart
5b05ce47
VZ
8// (c) 2004 ABX
9// (c) Vadim Zeitlin
c49245f8 10// Licence: wxWindows license
457814b5
JS
11/////////////////////////////////////////////////////////////////////////////
12
4c8fc4d6 13/*
08375332 14This sample shows how to use the common dialogs available from wxWidgets.
4c8fc4d6
WS
15It also shows that generic implementations of common dialogs can be exchanged
16with native dialogs and can coexist in one application. The need for generic
17dialogs addition is recognized thanks to setup of below USE_*** setting. Their
08375332
WS
18combinations reflects conditions of makefiles and project files to avoid unresolved
19references during linking. For now some generic dialogs are added in static builds
4c8fc4d6
WS
20of MSW, MAC and OS2
21*/
22
457814b5
JS
23#ifndef __DIALOGSH__
24#define __DIALOGSH__
25
da7a8602
WS
26#ifdef __WXUNIVERSAL__
27 #define USE_WXUNIVERSAL 1
28#else
29 #define USE_WXUNIVERSAL 0
30#endif
31
f50ff87b
WS
32#ifdef WXUSINGDLL
33 #define USE_DLL 1
34#else
35 #define USE_DLL 0
36#endif
37
684883e3
WS
38#if defined(__WXWINCE__)
39 #define USE_WXWINCE 1
40#else
41 #define USE_WXWINCE 0
42#endif
43
44#if defined(__WXMSW__) && !USE_WXWINCE
da7a8602
WS
45 #define USE_WXMSW 1
46#else
47 #define USE_WXMSW 0
48#endif
49
50#ifdef __WXMAC__
51 #define USE_WXMAC 1
52#else
53 #define USE_WXMAC 0
54#endif
55
cea9c5b1 56#if defined(__WXMAC_OSX__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2) && USE_NATIVE_FONT_DIALOG_FOR_MACOSX
71622a68
RN
57 #define USE_WXMACFONTDLG 1
58#else
59 #define USE_WXMACFONTDLG 0
60#endif
61
da7a8602
WS
62#ifdef __WXGTK__
63 #define USE_WXGTK 1
64#else
65 #define USE_WXGTK 0
66#endif
67
68#ifdef __WXPM__
69 #define USE_WXPM 1
70#else
71 #define USE_WXPM 0
72#endif
73
29e3d1f9 74#define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
13188def 75
29e3d1f9
VZ
76#define USE_COLOURDLG_GENERIC \
77 ((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_COLOURDLG)
78#define USE_DIRDLG_GENERIC \
79 ((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_DIRDLG)
80#define USE_FILEDLG_GENERIC \
8ce68f7f
VZ
81 ((((USE_WXMSW || USE_WXMAC || USE_WXPM || USE_WXGTK) \
82 && USE_GENERIC_DIALOGS) || USE_WXWINCE) && wxUSE_FILEDLG)
29e3d1f9 83#define USE_FONTDLG_GENERIC \
684883e3 84 ((USE_WXMSW || USE_WXMACFONTDLG || USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
4c8fc4d6 85
08375332
WS
86// Turn USE_MODAL_PRESENTATION to 0 if there is any reason for not presenting difference
87// between modal and modeless dialogs (ie. not implemented it in your port yet)
532d575b 88#if defined(__SMARTPHONE__) || !wxUSE_BOOKCTRL
08375332
WS
89 #define USE_MODAL_PRESENTATION 0
90#else
91 #define USE_MODAL_PRESENTATION 1
92#endif
4c8fc4d6 93
13188def 94
532d575b
WS
95// Turn USE_SETTINGS_DIALOG to 0 if supported
96#if wxUSE_BOOKCTRL
97 #define USE_SETTINGS_DIALOG 1
98#else
99 #define USE_SETTINGS_DIALOG 0
100#endif
101
9ad2fe62
VZ
102#if wxUSE_LOG
103
104// Custom application traits class which we use to override the default log
105// target creation
106class MyAppTraits : public wxGUIAppTraits
107{
108public:
109 virtual wxLog *CreateLogTarget();
110};
111
112#endif // wxUSE_LOG
532d575b 113
457814b5
JS
114// Define a new application type
115class MyApp: public wxApp
c49245f8
VZ
116{
117public:
9ad2fe62 118 virtual bool OnInit();
457814b5 119
9ad2fe62
VZ
120protected:
121#if wxUSE_LOG
122 virtual wxAppTraits *CreateTraits() { return new MyAppTraits; }
123#endif // wxUSE_LOG
457814b5
JS
124};
125
b4954d19
WS
126#if USE_MODAL_PRESENTATION
127
f6bcfd97 128// A custom modeless dialog
4c45f240
VZ
129class MyModelessDialog : public wxDialog
130{
131public:
132 MyModelessDialog(wxWindow *parent);
abceee76 133
5d987909 134 void OnButton(wxCommandEvent& event);
abceee76
VZ
135 void OnClose(wxCloseEvent& event);
136
137private:
138 DECLARE_EVENT_TABLE()
4c45f240
VZ
139};
140
f6bcfd97
BP
141// A custom modal dialog
142class MyModalDialog : public wxDialog
143{
144public:
145 MyModalDialog(wxWindow *parent);
146
147 void OnButton(wxCommandEvent& event);
148
149private:
5315ebfa
VZ
150 wxButton *m_btnModal,
151 *m_btnModeless,
152 *m_btnDelete;
f6bcfd97
BP
153
154 DECLARE_EVENT_TABLE()
155};
156
b4954d19
WS
157#endif // USE_MODAL_PRESENTATION
158
44b25eac 159// A class demonstrating CreateStdDialogButtonSizer()
8e1dac82
VZ
160class StdButtonSizerDialog : public wxDialog
161{
162public:
163 StdButtonSizerDialog(wxWindow *parent);
164
165 void OnEvent(wxCommandEvent& event);
166
167private:
168 void EnableDisableControls();
169
170 wxCheckBox *m_chkboxAffirmativeButton;
171 wxRadioButton *m_radiobtnOk,
172 *m_radiobtnYes;
173
174 wxCheckBox *m_chkboxDismissButton;
175 wxRadioButton *m_radiobtnClose,
176 *m_radiobtnCancel;
177
178 wxCheckBox *m_chkboxApply,
179 *m_chkboxNo,
180 *m_chkboxHelp,
181 *m_chkboxNoDefault;
182
183 wxSizer *m_buttonsSizer;
184
185 DECLARE_EVENT_TABLE()
186};
187
44b25eac
VZ
188// Test harness for wxMessageDialog.
189class TestMessageBoxDialog : public wxDialog
190{
191public:
192 TestMessageBoxDialog(wxWindow *parent);
193
194private:
195 void OnApply(wxCommandEvent& event);
196 void OnClose(wxCommandEvent& event);
197 void OnUpdateLabelUI(wxUpdateUIEvent& event);
4e2dc789 198 void OnUpdateNoDefaultUI(wxUpdateUIEvent& event);
44b25eac
VZ
199
200 enum
201 {
202 Btn_Yes,
203 Btn_No,
204 Btn_Ok,
205 Btn_Cancel,
206 Btn_Max
207 };
208
209 struct BtnInfo
210 {
211 int flag;
b3ca7c85 212 const char *name;
44b25eac
VZ
213 };
214
b3ca7c85 215 static const BtnInfo ms_btnInfo[Btn_Max];
44b25eac 216
8783d72f
VZ
217 enum
218 {
219 MsgDlgIcon_No,
220 MsgDlgIcon_None,
221 MsgDlgIcon_Info,
222 MsgDlgIcon_Question,
223 MsgDlgIcon_Warning,
224 MsgDlgIcon_Error,
225 MsgDlgIcon_Max
226 };
227
44b25eac
VZ
228 wxTextCtrl *m_textMsg,
229 *m_textExtMsg;
230
231 wxCheckBox *m_buttons[Btn_Max];
232 wxTextCtrl *m_labels[Btn_Max];
233
234 wxRadioBox *m_icons;
235
4e2dc789
VZ
236 wxCheckBox *m_chkNoDefault,
237 *m_chkCentre;
238
44b25eac 239 DECLARE_EVENT_TABLE()
c0c133e1 240 wxDECLARE_NO_COPY_CLASS(TestMessageBoxDialog);
44b25eac
VZ
241};
242
a625c5b6
RR
243class TestDefaultActionDialog: public wxDialog
244{
245public:
246 TestDefaultActionDialog( wxWindow *parent );
44b25eac 247
a625c5b6
RR
248 void OnListBoxDClick(wxCommandEvent& event);
249 void OnCatchListBoxDClick(wxCommandEvent& event);
44b25eac 250
a625c5b6
RR
251private:
252 bool m_catchListBoxDClick;
253
254private:
255 DECLARE_EVENT_TABLE()
256};
257
258
532d575b 259#if USE_SETTINGS_DIALOG
0f5d8ecf
JS
260// Property sheet dialog
261class SettingsDialog: public wxPropertySheetDialog
262{
263DECLARE_CLASS(SettingsDialog)
264public:
64d3ed17 265 SettingsDialog(wxWindow* parent, int dialogType);
cc8bc5aa 266 ~SettingsDialog();
0f5d8ecf
JS
267
268 wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
269 wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
270
271protected:
272
273 enum {
274 ID_SHOW_TOOLTIPS = 100,
275 ID_AUTO_SAVE,
276 ID_AUTO_SAVE_MINS,
277 ID_LOAD_LAST_PROJECT,
278
279 ID_APPLY_SETTINGS_TO,
280 ID_BACKGROUND_STYLE,
281 ID_FONT_SIZE
282 };
283
cc8bc5aa
JS
284 wxImageList* m_imageList;
285
0f5d8ecf
JS
286DECLARE_EVENT_TABLE()
287};
288
532d575b
WS
289#endif // USE_SETTINGS_DIALOG
290
457814b5
JS
291// Define a new frame type
292class MyFrame: public wxFrame
c49245f8
VZ
293{
294public:
5b05ce47 295 MyFrame(const wxString& title);
e36a1739 296 virtual ~MyFrame();
13188def 297
8cf304f8 298#if wxUSE_MSGDLG
13188def 299 void MessageBox(wxCommandEvent& event);
44b25eac 300 void MessageBoxDialog(wxCommandEvent& event);
8cf304f8 301 void MessageBoxInfo(wxCommandEvent& event);
86c3808c
SC
302 void MessageBoxWindowModal(wxCommandEvent& event);
303 void MessageBoxWindowModalClosed(wxWindowModalDialogEvent& event);
8cf304f8 304#endif // wxUSE_MSGDLG
457814b5 305
13188def 306#if wxUSE_COLOURDLG
329e86bf 307 void ChooseColour(wxCommandEvent& event);
e6ef9ea4 308 void GetColour(wxCommandEvent& event);
13188def
WS
309#endif // wxUSE_COLOURDLG
310
311#if wxUSE_FONTDLG
329e86bf 312 void ChooseFont(wxCommandEvent& event);
13188def
WS
313#endif // wxUSE_FONTDLG
314
315#if wxUSE_LOG_DIALOG
d93c719a 316 void LogDialog(wxCommandEvent& event);
13188def
WS
317#endif // wxUSE_LOG_DIALOG
318
a92b5dfe
VZ
319#if wxUSE_INFOBAR
320 void InfoBarSimple(wxCommandEvent& event);
321 void InfoBarAdvanced(wxCommandEvent& event);
322#endif // wxUSE_INFOBAR
323
13188def 324#if wxUSE_CHOICEDLG
457814b5 325 void SingleChoice(wxCommandEvent& event);
d6c9c1b7 326 void MultiChoice(wxCommandEvent& event);
13188def
WS
327#endif // wxUSE_CHOICEDLG
328
5a5f305a
VZ
329 void Rearrange(wxCommandEvent& event);
330
13188def 331#if wxUSE_TEXTDLG
457814b5 332 void TextEntry(wxCommandEvent& event);
a294c6d5 333 void PasswordEntry(wxCommandEvent& event);
13188def
WS
334#endif // wxUSE_TEXTDLG
335
336#if wxUSE_NUMBERDLG
c49245f8 337 void NumericEntry(wxCommandEvent& event);
13188def
WS
338#endif // wxUSE_NUMBERDLG
339
340#if wxUSE_FILEDLG
457814b5 341 void FileOpen(wxCommandEvent& event);
35b45b33 342 void FileOpen2(wxCommandEvent& event);
c61f4f6d 343 void FilesOpen(wxCommandEvent& event);
457814b5 344 void FileSave(wxCommandEvent& event);
13188def
WS
345#endif // wxUSE_FILEDLG
346
695fe764
WS
347#if USE_FILEDLG_GENERIC
348 void FileOpenGeneric(wxCommandEvent& event);
349 void FilesOpenGeneric(wxCommandEvent& event);
350 void FileSaveGeneric(wxCommandEvent& event);
351#endif // USE_FILEDLG_GENERIC
352
13188def 353#if wxUSE_DIRDLG
457814b5 354 void DirChoose(wxCommandEvent& event);
f09c8393 355 void DirChooseNew(wxCommandEvent& event);
13188def
WS
356#endif // wxUSE_DIRDLG
357
358#if USE_DIRDLG_GENERIC
51a58d8b 359 void GenericDirChoose(wxCommandEvent& event);
13188def
WS
360#endif // USE_DIRDLG_GENERIC
361
362#if wxUSE_STARTUP_TIPS
c50f1fb9 363 void ShowTip(wxCommandEvent& event);
13188def
WS
364#endif // wxUSE_STARTUP_TIPS
365
366#if USE_MODAL_PRESENTATION
f6bcfd97 367 void ModalDlg(wxCommandEvent& event);
1baa0a9d 368#endif // USE_MODAL_PRESENTATION
4c45f240 369 void ModelessDlg(wxCommandEvent& event);
cae50e6b
VZ
370 void DlgCenteredScreen(wxCommandEvent& event);
371 void DlgCenteredParent(wxCommandEvent& event);
1baa0a9d 372 void MiniFrame(wxCommandEvent& event);
8e5dbcdd 373 void DlgOnTop(wxCommandEvent& event);
13188def 374
761989ff 375#if wxUSE_PROGRESSDLG
abceee76 376 void ShowProgress(wxCommandEvent& event);
761989ff 377#endif // wxUSE_PROGRESSDLG
13188def 378
ca7adbf8
VZ
379#if wxUSE_ABOUTDLG
380 void ShowSimpleAboutDialog(wxCommandEvent& event);
381 void ShowFancyAboutDialog(wxCommandEvent& event);
453c9e3b
VZ
382 void ShowFullAboutDialog(wxCommandEvent& event);
383 void ShowCustomAboutDialog(wxCommandEvent& event);
ca7adbf8
VZ
384#endif // wxUSE_ABOUTDLG
385
a62b0bcc
VZ
386#if wxUSE_BUSYINFO
387 void ShowBusyInfo(wxCommandEvent& event);
388#endif // wxUSE_BUSYINFO
13188def 389
761989ff
VZ
390#if wxUSE_FINDREPLDLG
391 void ShowFindDialog(wxCommandEvent& event);
392 void ShowReplaceDialog(wxCommandEvent& event);
761989ff
VZ
393 void OnFindDialog(wxFindDialogEvent& event);
394#endif // wxUSE_FINDREPLDLG
457814b5 395
13188def 396#if USE_COLOURDLG_GENERIC
329e86bf 397 void ChooseColourGeneric(wxCommandEvent& event);
13188def
WS
398#endif // USE_COLOURDLG_GENERIC
399
400#if USE_FONTDLG_GENERIC
329e86bf 401 void ChooseFontGeneric(wxCommandEvent& event);
13188def 402#endif // USE_FONTDLG_GENERIC
c49245f8 403
0f5d8ecf 404 void OnPropertySheet(wxCommandEvent& event);
e36a1739 405
29e3d1f9 406 void OnRequestUserAttention(wxCommandEvent& event);
e36a1739
VZ
407#if wxUSE_NOTIFICATION_MESSAGE
408 void OnNotifMsgAuto(wxCommandEvent& event);
409 void OnNotifMsgShow(wxCommandEvent& event);
410 void OnNotifMsgHide(wxCommandEvent& event);
411#endif // wxUSE_NOTIFICATION_MESSAGE
412
8e1dac82 413 void OnStandardButtonsSizerDialog(wxCommandEvent& event);
44b25eac 414
a625c5b6 415 void OnTestDefaultActionDialog(wxCommandEvent& event);
44b25eac 416
329e86bf 417 void OnExit(wxCommandEvent& event);
c49245f8 418
4c45f240 419private:
13188def 420#if wxUSE_DIRDLG
f09c8393 421 void DoDirChoose(int style);
13188def 422#endif // wxUSE_DIRDLG
f09c8393 423
13188def 424#if USE_MODAL_PRESENTATION
4c45f240 425 MyModelessDialog *m_dialog;
13188def 426#endif // USE_MODAL_PRESENTATION
4c45f240 427
761989ff
VZ
428#if wxUSE_FINDREPLDLG
429 wxFindReplaceData m_findData;
14fca738
VZ
430
431 wxFindReplaceDialog *m_dlgFind,
432 *m_dlgReplace;
761989ff
VZ
433#endif // wxUSE_FINDREPLDLG
434
e36a1739
VZ
435#if wxUSE_NOTIFICATION_MESSAGE
436 wxNotificationMessage *m_notifMsg;
437#endif // wxUSE_NOTIFICATION_MESSAGE
438
d33dd9ef
VS
439 wxColourData m_clrData;
440
87a18679
VZ
441 // just a window which we use to show the effect of font/colours selection
442 wxWindow *m_canvas;
443
a92b5dfe 444#if wxUSE_INFOBAR
c0945eb2
VZ
445 void OnInfoBarRedo(wxCommandEvent& event);
446
a92b5dfe
VZ
447 wxInfoBar *m_infoBarSimple,
448 *m_infoBarAdvanced;
449#endif // wxUSE_INFOBAR
450
4c45f240 451 DECLARE_EVENT_TABLE()
457814b5
JS
452};
453
454class MyCanvas: public wxScrolledWindow
455{
c49245f8 456public:
87a18679
VZ
457 MyCanvas(wxWindow *parent) : wxScrolledWindow(parent, wxID_ANY)
458 {
3406ebd4 459 SetForegroundColour(*wxBLACK);
87a18679 460 SetBackgroundColour(*wxWHITE);
3406ebd4 461 SetFont(*wxNORMAL_FONT);
87a18679 462 }
c49245f8 463
87a18679 464private:
c49245f8
VZ
465 void OnPaint(wxPaintEvent& event);
466
467 DECLARE_EVENT_TABLE()
457814b5
JS
468};
469
470
471// Menu IDs
a294c6d5
VZ
472enum
473{
13188def 474 DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
e6ef9ea4 475 DIALOGS_GET_COLOUR,
a294c6d5
VZ
476 DIALOGS_CHOOSE_COLOUR_GENERIC,
477 DIALOGS_CHOOSE_FONT,
478 DIALOGS_CHOOSE_FONT_GENERIC,
479 DIALOGS_MESSAGE_BOX,
86c3808c 480 DIALOGS_MESSAGE_BOX_WINDOW_MODAL,
44b25eac 481 DIALOGS_MESSAGE_DIALOG,
8cf304f8 482 DIALOGS_MESSAGE_BOX_WXINFO,
a294c6d5 483 DIALOGS_SINGLE_CHOICE,
d6c9c1b7 484 DIALOGS_MULTI_CHOICE,
5a5f305a 485 DIALOGS_REARRANGE,
a294c6d5
VZ
486 DIALOGS_TEXT_ENTRY,
487 DIALOGS_PASSWORD_ENTRY,
488 DIALOGS_FILE_OPEN,
35b45b33 489 DIALOGS_FILE_OPEN2,
a294c6d5
VZ
490 DIALOGS_FILES_OPEN,
491 DIALOGS_FILE_SAVE,
695fe764
WS
492 DIALOGS_FILE_OPEN_GENERIC,
493 DIALOGS_FILES_OPEN_GENERIC,
494 DIALOGS_FILE_SAVE_GENERIC,
a294c6d5 495 DIALOGS_DIR_CHOOSE,
f09c8393 496 DIALOGS_DIRNEW_CHOOSE,
51a58d8b 497 DIALOGS_GENERIC_DIR_CHOOSE,
a294c6d5
VZ
498 DIALOGS_TIP,
499 DIALOGS_NUM_ENTRY,
4c45f240 500 DIALOGS_LOG_DIALOG,
a92b5dfe
VZ
501 DIALOGS_INFOBAR_SIMPLE,
502 DIALOGS_INFOBAR_ADVANCED,
f6bcfd97 503 DIALOGS_MODAL,
4c45f240 504 DIALOGS_MODELESS,
cae50e6b
VZ
505 DIALOGS_CENTRE_SCREEN,
506 DIALOGS_CENTRE_PARENT,
1baa0a9d 507 DIALOGS_MINIFRAME,
8e5dbcdd 508 DIALOGS_ONTOP,
abceee76 509 DIALOGS_MODELESS_BTN,
761989ff 510 DIALOGS_PROGRESS,
ca7adbf8
VZ
511 DIALOGS_ABOUTDLG_SIMPLE,
512 DIALOGS_ABOUTDLG_FANCY,
453c9e3b
VZ
513 DIALOGS_ABOUTDLG_FULL,
514 DIALOGS_ABOUTDLG_CUSTOM,
a62b0bcc 515 DIALOGS_BUSYINFO,
761989ff 516 DIALOGS_FIND,
29e3d1f9 517 DIALOGS_REPLACE,
0f5d8ecf 518 DIALOGS_REQUEST,
e36a1739
VZ
519 DIALOGS_NOTIFY_AUTO,
520 DIALOGS_NOTIFY_SHOW,
521 DIALOGS_NOTIFY_HIDE,
cc8bc5aa 522 DIALOGS_PROPERTY_SHEET,
64d3ed17 523 DIALOGS_PROPERTY_SHEET_TOOLBOOK,
8e1dac82 524 DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK,
a625c5b6
RR
525 DIALOGS_STANDARD_BUTTON_SIZER_DIALOG,
526 DIALOGS_TEST_DEFAULT_ACTION
a294c6d5 527};
457814b5
JS
528
529#endif
530