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(__WXMSW__) && !defined(__WXWINCE__)
49 #if defined(__WXMAC_OSX__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2) && USE_NATIVE_FONT_DIALOG_FOR_MACOSX
50 #define USE_WXMACFONTDLG 1
52 #define USE_WXMACFONTDLG 0
67 #define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
69 #define USE_COLOURDLG_GENERIC \
70 ((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_COLOURDLG)
71 #define USE_DIRDLG_GENERIC \
72 ((USE_WXMSW || USE_WXMAC) && USE_GENERIC_DIALOGS && wxUSE_DIRDLG)
73 #define USE_FILEDLG_GENERIC \
74 ((USE_WXMSW || USE_WXMAC || USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FILEDLG)
75 #define USE_FONTDLG_GENERIC \
76 ((USE_WXMSW || USE_WXMACFONTDLG ||USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
79 // Turn USE_MODAL_PRESENTATION to 0 if there is any reason for not presenting difference
80 // between modal and modeless dialogs (ie. not implemented it in your port yet)
81 #if defined(__SMARTPHONE__) || !wxUSE_BOOKCTRL
82 #define USE_MODAL_PRESENTATION 0
84 #define USE_MODAL_PRESENTATION 1
88 // Turn USE_SETTINGS_DIALOG to 0 if supported
90 #define USE_SETTINGS_DIALOG 1
92 #define USE_SETTINGS_DIALOG 0
96 // Define a new application type
97 class MyApp
: public wxApp
103 wxColour m_canvasTextColour
;
106 #if USE_MODAL_PRESENTATION
108 // A custom modeless dialog
109 class MyModelessDialog
: public wxDialog
112 MyModelessDialog(wxWindow
*parent
);
114 void OnButton(wxCommandEvent
& event
);
115 void OnClose(wxCloseEvent
& event
);
118 DECLARE_EVENT_TABLE()
121 // A custom modal dialog
122 class MyModalDialog
: public wxDialog
125 MyModalDialog(wxWindow
*parent
);
127 void OnButton(wxCommandEvent
& event
);
130 wxButton
*m_btnModal
,
134 DECLARE_EVENT_TABLE()
137 #endif // USE_MODAL_PRESENTATION
139 #if USE_SETTINGS_DIALOG
140 // Property sheet dialog
141 class SettingsDialog
: public wxPropertySheetDialog
143 DECLARE_CLASS(SettingsDialog
)
145 SettingsDialog(wxWindow
* parent
);
147 wxPanel
* CreateGeneralSettingsPage(wxWindow
* parent
);
148 wxPanel
* CreateAestheticSettingsPage(wxWindow
* parent
);
153 ID_SHOW_TOOLTIPS
= 100,
156 ID_LOAD_LAST_PROJECT
,
158 ID_APPLY_SETTINGS_TO
,
163 DECLARE_EVENT_TABLE()
166 #endif // USE_SETTINGS_DIALOG
168 // Define a new frame type
169 class MyFrame
: public wxFrame
172 MyFrame(wxWindow
*parent
, const wxString
& title
);
174 void MessageBox(wxCommandEvent
& event
);
177 void ChooseColour(wxCommandEvent
& event
);
178 #endif // wxUSE_COLOURDLG
181 void ChooseFont(wxCommandEvent
& event
);
182 #endif // wxUSE_FONTDLG
185 void LogDialog(wxCommandEvent
& event
);
186 #endif // wxUSE_LOG_DIALOG
189 void SingleChoice(wxCommandEvent
& event
);
190 void MultiChoice(wxCommandEvent
& event
);
191 #endif // wxUSE_CHOICEDLG
194 void TextEntry(wxCommandEvent
& event
);
195 void PasswordEntry(wxCommandEvent
& event
);
196 #endif // wxUSE_TEXTDLG
199 void NumericEntry(wxCommandEvent
& event
);
200 #endif // wxUSE_NUMBERDLG
203 void FileOpen(wxCommandEvent
& event
);
204 void FileOpen2(wxCommandEvent
& event
);
205 void FilesOpen(wxCommandEvent
& event
);
206 void FileSave(wxCommandEvent
& event
);
207 #endif // wxUSE_FILEDLG
209 #if USE_FILEDLG_GENERIC
210 void FileOpenGeneric(wxCommandEvent
& event
);
211 void FilesOpenGeneric(wxCommandEvent
& event
);
212 void FileSaveGeneric(wxCommandEvent
& event
);
213 #endif // USE_FILEDLG_GENERIC
216 void DirChoose(wxCommandEvent
& event
);
217 void DirChooseNew(wxCommandEvent
& event
);
218 #endif // wxUSE_DIRDLG
220 #if USE_DIRDLG_GENERIC
221 void GenericDirChoose(wxCommandEvent
& event
);
222 #endif // USE_DIRDLG_GENERIC
224 #if wxUSE_STARTUP_TIPS
225 void ShowTip(wxCommandEvent
& event
);
226 #endif // wxUSE_STARTUP_TIPS
228 #if USE_MODAL_PRESENTATION
229 void ModalDlg(wxCommandEvent
& event
);
230 void ModelessDlg(wxCommandEvent
& event
);
231 #endif // USE_MODAL_PRESENTATION
233 #if wxUSE_PROGRESSDLG
234 void ShowProgress(wxCommandEvent
& event
);
235 #endif // wxUSE_PROGRESSDLG
238 void ShowBusyInfo(wxCommandEvent
& event
);
239 #endif // wxUSE_BUSYINFO
241 #if wxUSE_FINDREPLDLG
242 void ShowFindDialog(wxCommandEvent
& event
);
243 void ShowReplaceDialog(wxCommandEvent
& event
);
244 void OnFindDialog(wxFindDialogEvent
& event
);
245 #endif // wxUSE_FINDREPLDLG
247 #if USE_COLOURDLG_GENERIC
248 void ChooseColourGeneric(wxCommandEvent
& event
);
249 #endif // USE_COLOURDLG_GENERIC
251 #if USE_FONTDLG_GENERIC
252 void ChooseFontGeneric(wxCommandEvent
& event
);
253 #endif // USE_FONTDLG_GENERIC
255 void OnPropertySheet(wxCommandEvent
& event
);
256 void OnRequestUserAttention(wxCommandEvent
& event
);
257 void OnExit(wxCommandEvent
& event
);
261 void DoDirChoose(int style
);
262 #endif // wxUSE_DIRDLG
264 #if USE_MODAL_PRESENTATION
265 MyModelessDialog
*m_dialog
;
266 #endif // USE_MODAL_PRESENTATION
268 #if wxUSE_FINDREPLDLG
269 wxFindReplaceData m_findData
;
271 wxFindReplaceDialog
*m_dlgFind
,
273 #endif // wxUSE_FINDREPLDLG
275 wxColourData m_clrData
;
277 DECLARE_EVENT_TABLE()
280 class MyCanvas
: public wxScrolledWindow
283 MyCanvas(wxWindow
*parent
) :
284 wxScrolledWindow(parent
,wxID_ANY
,wxDefaultPosition
,wxDefaultSize
,wxNO_FULL_REPAINT_ON_RESIZE
) { }
286 void OnPaint(wxPaintEvent
& event
);
288 DECLARE_EVENT_TABLE()
295 DIALOGS_CHOOSE_COLOUR
= wxID_HIGHEST
,
296 DIALOGS_CHOOSE_COLOUR_GENERIC
,
298 DIALOGS_CHOOSE_FONT_GENERIC
,
300 DIALOGS_SINGLE_CHOICE
,
301 DIALOGS_MULTI_CHOICE
,
303 DIALOGS_PASSWORD_ENTRY
,
308 DIALOGS_FILE_OPEN_GENERIC
,
309 DIALOGS_FILES_OPEN_GENERIC
,
310 DIALOGS_FILE_SAVE_GENERIC
,
312 DIALOGS_DIRNEW_CHOOSE
,
313 DIALOGS_GENERIC_DIR_CHOOSE
,
319 DIALOGS_MODELESS_BTN
,
325 DIALOGS_PROPERTY_SHEET