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
);
200 static BtnInfo ms_btnInfo
[Btn_Max
];
202 wxTextCtrl
*m_textMsg
,
205 wxCheckBox
*m_buttons
[Btn_Max
];
206 wxTextCtrl
*m_labels
[Btn_Max
];
210 DECLARE_EVENT_TABLE()
211 DECLARE_NO_COPY_CLASS(TestMessageBoxDialog
)
214 class TestDefaultActionDialog
: public wxDialog
217 TestDefaultActionDialog( wxWindow
*parent
);
219 void OnListBoxDClick(wxCommandEvent
& event
);
220 void OnCatchListBoxDClick(wxCommandEvent
& event
);
223 bool m_catchListBoxDClick
;
226 DECLARE_EVENT_TABLE()
230 #if USE_SETTINGS_DIALOG
231 // Property sheet dialog
232 class SettingsDialog
: public wxPropertySheetDialog
234 DECLARE_CLASS(SettingsDialog
)
236 SettingsDialog(wxWindow
* parent
, int dialogType
);
239 wxPanel
* CreateGeneralSettingsPage(wxWindow
* parent
);
240 wxPanel
* CreateAestheticSettingsPage(wxWindow
* parent
);
245 ID_SHOW_TOOLTIPS
= 100,
248 ID_LOAD_LAST_PROJECT
,
250 ID_APPLY_SETTINGS_TO
,
255 wxImageList
* m_imageList
;
257 DECLARE_EVENT_TABLE()
260 #endif // USE_SETTINGS_DIALOG
262 // Define a new frame type
263 class MyFrame
: public wxFrame
266 MyFrame(wxWindow
*parent
, const wxString
& title
);
270 void MessageBox(wxCommandEvent
& event
);
271 void MessageBoxDialog(wxCommandEvent
& event
);
272 void MessageBoxInfo(wxCommandEvent
& event
);
273 #endif // wxUSE_MSGDLG
276 void ChooseColour(wxCommandEvent
& event
);
277 void GetColour(wxCommandEvent
& event
);
278 #endif // wxUSE_COLOURDLG
281 void ChooseFont(wxCommandEvent
& event
);
282 #endif // wxUSE_FONTDLG
285 void LogDialog(wxCommandEvent
& event
);
286 #endif // wxUSE_LOG_DIALOG
289 void SingleChoice(wxCommandEvent
& event
);
290 void MultiChoice(wxCommandEvent
& event
);
291 #endif // wxUSE_CHOICEDLG
294 void TextEntry(wxCommandEvent
& event
);
295 void PasswordEntry(wxCommandEvent
& event
);
296 #endif // wxUSE_TEXTDLG
299 void NumericEntry(wxCommandEvent
& event
);
300 #endif // wxUSE_NUMBERDLG
303 void FileOpen(wxCommandEvent
& event
);
304 void FileOpen2(wxCommandEvent
& event
);
305 void FilesOpen(wxCommandEvent
& event
);
306 void FileSave(wxCommandEvent
& event
);
307 #endif // wxUSE_FILEDLG
309 #if USE_FILEDLG_GENERIC
310 void FileOpenGeneric(wxCommandEvent
& event
);
311 void FilesOpenGeneric(wxCommandEvent
& event
);
312 void FileSaveGeneric(wxCommandEvent
& event
);
313 #endif // USE_FILEDLG_GENERIC
316 void DirChoose(wxCommandEvent
& event
);
317 void DirChooseNew(wxCommandEvent
& event
);
318 #endif // wxUSE_DIRDLG
320 #if USE_DIRDLG_GENERIC
321 void GenericDirChoose(wxCommandEvent
& event
);
322 #endif // USE_DIRDLG_GENERIC
324 #if wxUSE_STARTUP_TIPS
325 void ShowTip(wxCommandEvent
& event
);
326 #endif // wxUSE_STARTUP_TIPS
328 #if USE_MODAL_PRESENTATION
329 void ModalDlg(wxCommandEvent
& event
);
330 #endif // USE_MODAL_PRESENTATION
331 void ModelessDlg(wxCommandEvent
& event
);
332 void DlgCenteredScreen(wxCommandEvent
& event
);
333 void DlgCenteredParent(wxCommandEvent
& event
);
334 void MiniFrame(wxCommandEvent
& event
);
335 void DlgOnTop(wxCommandEvent
& event
);
337 #if wxUSE_PROGRESSDLG
338 void ShowProgress(wxCommandEvent
& event
);
339 #endif // wxUSE_PROGRESSDLG
342 void ShowSimpleAboutDialog(wxCommandEvent
& event
);
343 void ShowFancyAboutDialog(wxCommandEvent
& event
);
344 void ShowFullAboutDialog(wxCommandEvent
& event
);
345 void ShowCustomAboutDialog(wxCommandEvent
& event
);
346 #endif // wxUSE_ABOUTDLG
349 void ShowBusyInfo(wxCommandEvent
& event
);
350 #endif // wxUSE_BUSYINFO
352 #if wxUSE_FINDREPLDLG
353 void ShowFindDialog(wxCommandEvent
& event
);
354 void ShowReplaceDialog(wxCommandEvent
& event
);
355 void OnFindDialog(wxFindDialogEvent
& event
);
356 #endif // wxUSE_FINDREPLDLG
358 #if USE_COLOURDLG_GENERIC
359 void ChooseColourGeneric(wxCommandEvent
& event
);
360 #endif // USE_COLOURDLG_GENERIC
362 #if USE_FONTDLG_GENERIC
363 void ChooseFontGeneric(wxCommandEvent
& event
);
364 #endif // USE_FONTDLG_GENERIC
366 void OnPropertySheet(wxCommandEvent
& event
);
368 void OnRequestUserAttention(wxCommandEvent
& event
);
369 #if wxUSE_NOTIFICATION_MESSAGE
370 void OnNotifMsgAuto(wxCommandEvent
& event
);
371 void OnNotifMsgShow(wxCommandEvent
& event
);
372 void OnNotifMsgHide(wxCommandEvent
& event
);
373 #endif // wxUSE_NOTIFICATION_MESSAGE
375 void OnStandardButtonsSizerDialog(wxCommandEvent
& event
);
377 void OnTestDefaultActionDialog(wxCommandEvent
& event
);
379 void OnExit(wxCommandEvent
& event
);
383 void DoDirChoose(int style
);
384 #endif // wxUSE_DIRDLG
386 #if USE_MODAL_PRESENTATION
387 MyModelessDialog
*m_dialog
;
388 #endif // USE_MODAL_PRESENTATION
390 #if wxUSE_FINDREPLDLG
391 wxFindReplaceData m_findData
;
393 wxFindReplaceDialog
*m_dlgFind
,
395 #endif // wxUSE_FINDREPLDLG
397 #if wxUSE_NOTIFICATION_MESSAGE
398 wxNotificationMessage
*m_notifMsg
;
399 #endif // wxUSE_NOTIFICATION_MESSAGE
401 wxColourData m_clrData
;
403 DECLARE_EVENT_TABLE()
406 class MyCanvas
: public wxScrolledWindow
409 MyCanvas(wxWindow
*parent
) :
410 wxScrolledWindow(parent
,wxID_ANY
,wxDefaultPosition
,wxDefaultSize
,wxNO_FULL_REPAINT_ON_RESIZE
) { }
412 void OnPaint(wxPaintEvent
& event
);
414 DECLARE_EVENT_TABLE()
421 DIALOGS_CHOOSE_COLOUR
= wxID_HIGHEST
,
423 DIALOGS_CHOOSE_COLOUR_GENERIC
,
425 DIALOGS_CHOOSE_FONT_GENERIC
,
427 DIALOGS_MESSAGE_DIALOG
,
428 DIALOGS_MESSAGE_BOX_WXINFO
,
429 DIALOGS_SINGLE_CHOICE
,
430 DIALOGS_MULTI_CHOICE
,
432 DIALOGS_PASSWORD_ENTRY
,
437 DIALOGS_FILE_OPEN_GENERIC
,
438 DIALOGS_FILES_OPEN_GENERIC
,
439 DIALOGS_FILE_SAVE_GENERIC
,
441 DIALOGS_DIRNEW_CHOOSE
,
442 DIALOGS_GENERIC_DIR_CHOOSE
,
448 DIALOGS_CENTRE_SCREEN
,
449 DIALOGS_CENTRE_PARENT
,
452 DIALOGS_MODELESS_BTN
,
454 DIALOGS_ABOUTDLG_SIMPLE
,
455 DIALOGS_ABOUTDLG_FANCY
,
456 DIALOGS_ABOUTDLG_FULL
,
457 DIALOGS_ABOUTDLG_CUSTOM
,
465 DIALOGS_PROPERTY_SHEET
,
466 DIALOGS_PROPERTY_SHEET_TOOLBOOK
,
467 DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK
,
468 DIALOGS_STANDARD_BUTTON_SIZER_DIALOG
,
469 DIALOGS_TEST_DEFAULT_ACTION