1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Common dialogs demo
4 // Author: Julian Smart
5 // Modified by: ABX (2004) - adjustementd for conditional building
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
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
25 #ifdef __WXUNIVERSAL__
26 #define USE_WXUNIVERSAL 1
28 #define USE_WXUNIVERSAL 0
37 #if defined(__WXWINCE__)
43 #if defined(__WXMSW__) && !USE_WXWINCE
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
58 #define USE_WXMACFONTDLG 0
73 #define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
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_WXGTK) \
81 && USE_GENERIC_DIALOGS) || USE_WXWINCE) && wxUSE_FILEDLG)
82 #define USE_FONTDLG_GENERIC \
83 ((USE_WXMSW || USE_WXMACFONTDLG || USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
85 // Turn USE_MODAL_PRESENTATION to 0 if there is any reason for not presenting difference
86 // between modal and modeless dialogs (ie. not implemented it in your port yet)
87 #if defined(__SMARTPHONE__) || !wxUSE_BOOKCTRL
88 #define USE_MODAL_PRESENTATION 0
90 #define USE_MODAL_PRESENTATION 1
94 // Turn USE_SETTINGS_DIALOG to 0 if supported
96 #define USE_SETTINGS_DIALOG 1
98 #define USE_SETTINGS_DIALOG 0
102 // Define a new application type
103 class MyApp
: public wxApp
109 wxColour m_canvasTextColour
;
112 #if USE_MODAL_PRESENTATION
114 // A custom modeless dialog
115 class MyModelessDialog
: public wxDialog
118 MyModelessDialog(wxWindow
*parent
);
120 void OnButton(wxCommandEvent
& event
);
121 void OnClose(wxCloseEvent
& event
);
124 DECLARE_EVENT_TABLE()
127 // A custom modal dialog
128 class MyModalDialog
: public wxDialog
131 MyModalDialog(wxWindow
*parent
);
133 void OnButton(wxCommandEvent
& event
);
136 wxButton
*m_btnModal
,
140 DECLARE_EVENT_TABLE()
143 #endif // USE_MODAL_PRESENTATION
145 // A class demonstrating CreateStdDialogButtonSizer()
146 class StdButtonSizerDialog
: public wxDialog
149 StdButtonSizerDialog(wxWindow
*parent
);
151 void OnEvent(wxCommandEvent
& event
);
154 void EnableDisableControls();
156 wxCheckBox
*m_chkboxAffirmativeButton
;
157 wxRadioButton
*m_radiobtnOk
,
160 wxCheckBox
*m_chkboxDismissButton
;
161 wxRadioButton
*m_radiobtnClose
,
164 wxCheckBox
*m_chkboxApply
,
169 wxSizer
*m_buttonsSizer
;
171 DECLARE_EVENT_TABLE()
174 // Test harness for wxMessageDialog.
175 class TestMessageBoxDialog
: public wxDialog
178 TestMessageBoxDialog(wxWindow
*parent
);
181 void OnApply(wxCommandEvent
& event
);
182 void OnClose(wxCommandEvent
& event
);
183 void OnUpdateLabelUI(wxUpdateUIEvent
& event
);
184 void OnUpdateNoDefaultUI(wxUpdateUIEvent
& event
);
201 static BtnInfo ms_btnInfo
[Btn_Max
];
203 wxTextCtrl
*m_textMsg
,
206 wxCheckBox
*m_buttons
[Btn_Max
];
207 wxTextCtrl
*m_labels
[Btn_Max
];
211 wxCheckBox
*m_chkNoDefault
,
214 DECLARE_EVENT_TABLE()
215 DECLARE_NO_COPY_CLASS(TestMessageBoxDialog
)
218 class TestDefaultActionDialog
: public wxDialog
221 TestDefaultActionDialog( wxWindow
*parent
);
223 void OnListBoxDClick(wxCommandEvent
& event
);
224 void OnCatchListBoxDClick(wxCommandEvent
& event
);
227 bool m_catchListBoxDClick
;
230 DECLARE_EVENT_TABLE()
234 #if USE_SETTINGS_DIALOG
235 // Property sheet dialog
236 class SettingsDialog
: public wxPropertySheetDialog
238 DECLARE_CLASS(SettingsDialog
)
240 SettingsDialog(wxWindow
* parent
, int dialogType
);
243 wxPanel
* CreateGeneralSettingsPage(wxWindow
* parent
);
244 wxPanel
* CreateAestheticSettingsPage(wxWindow
* parent
);
249 ID_SHOW_TOOLTIPS
= 100,
252 ID_LOAD_LAST_PROJECT
,
254 ID_APPLY_SETTINGS_TO
,
259 wxImageList
* m_imageList
;
261 DECLARE_EVENT_TABLE()
264 #endif // USE_SETTINGS_DIALOG
266 // Define a new frame type
267 class MyFrame
: public wxFrame
270 MyFrame(wxWindow
*parent
, const wxString
& title
);
274 void MessageBox(wxCommandEvent
& event
);
275 void MessageBoxDialog(wxCommandEvent
& event
);
276 void MessageBoxInfo(wxCommandEvent
& event
);
277 #endif // wxUSE_MSGDLG
280 void ChooseColour(wxCommandEvent
& event
);
281 void GetColour(wxCommandEvent
& event
);
282 #endif // wxUSE_COLOURDLG
285 void ChooseFont(wxCommandEvent
& event
);
286 #endif // wxUSE_FONTDLG
289 void LogDialog(wxCommandEvent
& event
);
290 #endif // wxUSE_LOG_DIALOG
293 void SingleChoice(wxCommandEvent
& event
);
294 void MultiChoice(wxCommandEvent
& event
);
295 #endif // wxUSE_CHOICEDLG
298 void TextEntry(wxCommandEvent
& event
);
299 void PasswordEntry(wxCommandEvent
& event
);
300 #endif // wxUSE_TEXTDLG
303 void NumericEntry(wxCommandEvent
& event
);
304 #endif // wxUSE_NUMBERDLG
307 void FileOpen(wxCommandEvent
& event
);
308 void FileOpen2(wxCommandEvent
& event
);
309 void FilesOpen(wxCommandEvent
& event
);
310 void FileSave(wxCommandEvent
& event
);
311 #endif // wxUSE_FILEDLG
313 #if USE_FILEDLG_GENERIC
314 void FileOpenGeneric(wxCommandEvent
& event
);
315 void FilesOpenGeneric(wxCommandEvent
& event
);
316 void FileSaveGeneric(wxCommandEvent
& event
);
317 #endif // USE_FILEDLG_GENERIC
320 void DirChoose(wxCommandEvent
& event
);
321 void DirChooseNew(wxCommandEvent
& event
);
322 #endif // wxUSE_DIRDLG
324 #if USE_DIRDLG_GENERIC
325 void GenericDirChoose(wxCommandEvent
& event
);
326 #endif // USE_DIRDLG_GENERIC
328 #if wxUSE_STARTUP_TIPS
329 void ShowTip(wxCommandEvent
& event
);
330 #endif // wxUSE_STARTUP_TIPS
332 #if USE_MODAL_PRESENTATION
333 void ModalDlg(wxCommandEvent
& event
);
334 #endif // USE_MODAL_PRESENTATION
335 void ModelessDlg(wxCommandEvent
& event
);
336 void DlgCenteredScreen(wxCommandEvent
& event
);
337 void DlgCenteredParent(wxCommandEvent
& event
);
338 void MiniFrame(wxCommandEvent
& event
);
339 void DlgOnTop(wxCommandEvent
& event
);
341 #if wxUSE_PROGRESSDLG
342 void ShowProgress(wxCommandEvent
& event
);
343 #endif // wxUSE_PROGRESSDLG
346 void ShowSimpleAboutDialog(wxCommandEvent
& event
);
347 void ShowFancyAboutDialog(wxCommandEvent
& event
);
348 void ShowFullAboutDialog(wxCommandEvent
& event
);
349 void ShowCustomAboutDialog(wxCommandEvent
& event
);
350 #endif // wxUSE_ABOUTDLG
353 void ShowBusyInfo(wxCommandEvent
& event
);
354 #endif // wxUSE_BUSYINFO
356 #if wxUSE_FINDREPLDLG
357 void ShowFindDialog(wxCommandEvent
& event
);
358 void ShowReplaceDialog(wxCommandEvent
& event
);
359 void OnFindDialog(wxFindDialogEvent
& event
);
360 #endif // wxUSE_FINDREPLDLG
362 #if USE_COLOURDLG_GENERIC
363 void ChooseColourGeneric(wxCommandEvent
& event
);
364 #endif // USE_COLOURDLG_GENERIC
366 #if USE_FONTDLG_GENERIC
367 void ChooseFontGeneric(wxCommandEvent
& event
);
368 #endif // USE_FONTDLG_GENERIC
370 void OnPropertySheet(wxCommandEvent
& event
);
372 void OnRequestUserAttention(wxCommandEvent
& event
);
373 #if wxUSE_NOTIFICATION_MESSAGE
374 void OnNotifMsgAuto(wxCommandEvent
& event
);
375 void OnNotifMsgShow(wxCommandEvent
& event
);
376 void OnNotifMsgHide(wxCommandEvent
& event
);
377 #endif // wxUSE_NOTIFICATION_MESSAGE
379 void OnStandardButtonsSizerDialog(wxCommandEvent
& event
);
381 void OnTestDefaultActionDialog(wxCommandEvent
& event
);
383 void OnExit(wxCommandEvent
& event
);
387 void DoDirChoose(int style
);
388 #endif // wxUSE_DIRDLG
390 #if USE_MODAL_PRESENTATION
391 MyModelessDialog
*m_dialog
;
392 #endif // USE_MODAL_PRESENTATION
394 #if wxUSE_FINDREPLDLG
395 wxFindReplaceData m_findData
;
397 wxFindReplaceDialog
*m_dlgFind
,
399 #endif // wxUSE_FINDREPLDLG
401 #if wxUSE_NOTIFICATION_MESSAGE
402 wxNotificationMessage
*m_notifMsg
;
403 #endif // wxUSE_NOTIFICATION_MESSAGE
405 wxColourData m_clrData
;
407 DECLARE_EVENT_TABLE()
410 class MyCanvas
: public wxScrolledWindow
413 MyCanvas(wxWindow
*parent
) :
414 wxScrolledWindow(parent
,wxID_ANY
,wxDefaultPosition
,wxDefaultSize
,wxNO_FULL_REPAINT_ON_RESIZE
) { }
416 void OnPaint(wxPaintEvent
& event
);
418 DECLARE_EVENT_TABLE()
425 DIALOGS_CHOOSE_COLOUR
= wxID_HIGHEST
,
427 DIALOGS_CHOOSE_COLOUR_GENERIC
,
429 DIALOGS_CHOOSE_FONT_GENERIC
,
431 DIALOGS_MESSAGE_DIALOG
,
432 DIALOGS_MESSAGE_BOX_WXINFO
,
433 DIALOGS_SINGLE_CHOICE
,
434 DIALOGS_MULTI_CHOICE
,
436 DIALOGS_PASSWORD_ENTRY
,
441 DIALOGS_FILE_OPEN_GENERIC
,
442 DIALOGS_FILES_OPEN_GENERIC
,
443 DIALOGS_FILE_SAVE_GENERIC
,
445 DIALOGS_DIRNEW_CHOOSE
,
446 DIALOGS_GENERIC_DIR_CHOOSE
,
452 DIALOGS_CENTRE_SCREEN
,
453 DIALOGS_CENTRE_PARENT
,
456 DIALOGS_MODELESS_BTN
,
458 DIALOGS_ABOUTDLG_SIMPLE
,
459 DIALOGS_ABOUTDLG_FANCY
,
460 DIALOGS_ABOUTDLG_FULL
,
461 DIALOGS_ABOUTDLG_CUSTOM
,
469 DIALOGS_PROPERTY_SHEET
,
470 DIALOGS_PROPERTY_SHEET_TOOLBOOK
,
471 DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK
,
472 DIALOGS_STANDARD_BUTTON_SIZER_DIALOG
,
473 DIALOGS_TEST_DEFAULT_ACTION