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__)
82 #define USE_MODAL_PRESENTATION 0
84 #define USE_MODAL_PRESENTATION 1
88 // Define a new application type
89 class MyApp
: public wxApp
95 wxColour m_canvasTextColour
;
98 #if USE_MODAL_PRESENTATION
100 // A custom modeless dialog
101 class MyModelessDialog
: public wxDialog
104 MyModelessDialog(wxWindow
*parent
);
106 void OnButton(wxCommandEvent
& event
);
107 void OnClose(wxCloseEvent
& event
);
110 DECLARE_EVENT_TABLE()
113 // A custom modal dialog
114 class MyModalDialog
: public wxDialog
117 MyModalDialog(wxWindow
*parent
);
119 void OnButton(wxCommandEvent
& event
);
122 wxButton
*m_btnModal
,
126 DECLARE_EVENT_TABLE()
129 #endif // USE_MODAL_PRESENTATION
131 // Property sheet dialog
132 class SettingsDialog
: public wxPropertySheetDialog
134 DECLARE_CLASS(SettingsDialog
)
136 SettingsDialog(wxWindow
* parent
);
138 wxPanel
* CreateGeneralSettingsPage(wxWindow
* parent
);
139 wxPanel
* CreateAestheticSettingsPage(wxWindow
* parent
);
144 ID_SHOW_TOOLTIPS
= 100,
147 ID_LOAD_LAST_PROJECT
,
149 ID_APPLY_SETTINGS_TO
,
154 DECLARE_EVENT_TABLE()
157 // Define a new frame type
158 class MyFrame
: public wxFrame
161 MyFrame(wxWindow
*parent
, const wxString
& title
);
163 void MessageBox(wxCommandEvent
& event
);
166 void ChooseColour(wxCommandEvent
& event
);
167 #endif // wxUSE_COLOURDLG
170 void ChooseFont(wxCommandEvent
& event
);
171 #endif // wxUSE_FONTDLG
174 void LogDialog(wxCommandEvent
& event
);
175 #endif // wxUSE_LOG_DIALOG
178 void SingleChoice(wxCommandEvent
& event
);
179 void MultiChoice(wxCommandEvent
& event
);
180 #endif // wxUSE_CHOICEDLG
183 void TextEntry(wxCommandEvent
& event
);
184 void PasswordEntry(wxCommandEvent
& event
);
185 #endif // wxUSE_TEXTDLG
188 void NumericEntry(wxCommandEvent
& event
);
189 #endif // wxUSE_NUMBERDLG
192 void FileOpen(wxCommandEvent
& event
);
193 void FileOpen2(wxCommandEvent
& event
);
194 void FilesOpen(wxCommandEvent
& event
);
195 void FileSave(wxCommandEvent
& event
);
196 #endif // wxUSE_FILEDLG
198 #if USE_FILEDLG_GENERIC
199 void FileOpenGeneric(wxCommandEvent
& event
);
200 void FilesOpenGeneric(wxCommandEvent
& event
);
201 void FileSaveGeneric(wxCommandEvent
& event
);
202 #endif // USE_FILEDLG_GENERIC
205 void DirChoose(wxCommandEvent
& event
);
206 void DirChooseNew(wxCommandEvent
& event
);
207 #endif // wxUSE_DIRDLG
209 #if USE_DIRDLG_GENERIC
210 void GenericDirChoose(wxCommandEvent
& event
);
211 #endif // USE_DIRDLG_GENERIC
213 #if wxUSE_STARTUP_TIPS
214 void ShowTip(wxCommandEvent
& event
);
215 #endif // wxUSE_STARTUP_TIPS
217 #if USE_MODAL_PRESENTATION
218 void ModalDlg(wxCommandEvent
& event
);
219 void ModelessDlg(wxCommandEvent
& event
);
220 #endif // USE_MODAL_PRESENTATION
222 #if wxUSE_PROGRESSDLG
223 void ShowProgress(wxCommandEvent
& event
);
224 #endif // wxUSE_PROGRESSDLG
227 void ShowBusyInfo(wxCommandEvent
& event
);
228 #endif // wxUSE_BUSYINFO
230 #if wxUSE_FINDREPLDLG
231 void ShowFindDialog(wxCommandEvent
& event
);
232 void ShowReplaceDialog(wxCommandEvent
& event
);
233 void OnFindDialog(wxFindDialogEvent
& event
);
234 #endif // wxUSE_FINDREPLDLG
236 #if USE_COLOURDLG_GENERIC
237 void ChooseColourGeneric(wxCommandEvent
& event
);
238 #endif // USE_COLOURDLG_GENERIC
240 #if USE_FONTDLG_GENERIC
241 void ChooseFontGeneric(wxCommandEvent
& event
);
242 #endif // USE_FONTDLG_GENERIC
244 void OnPropertySheet(wxCommandEvent
& event
);
245 void OnRequestUserAttention(wxCommandEvent
& event
);
246 void OnExit(wxCommandEvent
& event
);
250 void DoDirChoose(int style
);
251 #endif // wxUSE_DIRDLG
253 #if USE_MODAL_PRESENTATION
254 MyModelessDialog
*m_dialog
;
255 #endif // USE_MODAL_PRESENTATION
257 #if wxUSE_FINDREPLDLG
258 wxFindReplaceData m_findData
;
260 wxFindReplaceDialog
*m_dlgFind
,
262 #endif // wxUSE_FINDREPLDLG
264 wxColourData m_clrData
;
266 DECLARE_EVENT_TABLE()
269 class MyCanvas
: public wxScrolledWindow
272 MyCanvas(wxWindow
*parent
) :
273 wxScrolledWindow(parent
,wxID_ANY
,wxDefaultPosition
,wxDefaultSize
,wxNO_FULL_REPAINT_ON_RESIZE
) { }
275 void OnPaint(wxPaintEvent
& event
);
277 DECLARE_EVENT_TABLE()
284 DIALOGS_CHOOSE_COLOUR
= wxID_HIGHEST
,
285 DIALOGS_CHOOSE_COLOUR_GENERIC
,
287 DIALOGS_CHOOSE_FONT_GENERIC
,
289 DIALOGS_SINGLE_CHOICE
,
290 DIALOGS_MULTI_CHOICE
,
292 DIALOGS_PASSWORD_ENTRY
,
297 DIALOGS_FILE_OPEN_GENERIC
,
298 DIALOGS_FILES_OPEN_GENERIC
,
299 DIALOGS_FILE_SAVE_GENERIC
,
301 DIALOGS_DIRNEW_CHOOSE
,
302 DIALOGS_GENERIC_DIR_CHOOSE
,
308 DIALOGS_MODELESS_BTN
,
314 DIALOGS_PROPERTY_SHEET