1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        dialogs.h
3 // Purpose:     Common dialogs demo
4 // Author:      Julian Smart
5 // Modified by: ABX (2004) - adjustementd for conditional building
6 // Created:     04/01/98
7 // RCS-ID:      $Id: dialogs.h 41713 2006-10-08 14:12:59Z VZ $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11 
12 /*
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
19 of MSW, MAC and OS2
20 */
21 
22 #ifndef __DIALOGSH__
23 #define __DIALOGSH__
24 
25 #ifdef __WXUNIVERSAL__
26     #define USE_WXUNIVERSAL 1
27 #else
28     #define USE_WXUNIVERSAL 0
29 #endif
30 
31 #ifdef WXUSINGDLL
32     #define USE_DLL 1
33 #else
34     #define USE_DLL 0
35 #endif
36 
37 #if defined(__WXWINCE__)
38     #define USE_WXWINCE 1
39 #else
40     #define USE_WXWINCE 0
41 #endif
42 
43 #if defined(__WXMSW__) && !USE_WXWINCE
44     #define USE_WXMSW 1
45 #else
46     #define USE_WXMSW 0
47 #endif
48 
49 #ifdef __WXMAC__
50     #define USE_WXMAC 1
51 #else
52     #define USE_WXMAC 0
53 #endif
54 
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
57 #else
58     #define USE_WXMACFONTDLG 0
59 #endif
60 
61 #ifdef __WXGTK__
62     #define USE_WXGTK 1
63 #else
64     #define USE_WXGTK 0
65 #endif
66 
67 #ifdef __WXPM__
68     #define USE_WXPM 1
69 #else
70     #define USE_WXPM 0
71 #endif
72 
73 #define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
74 
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_GENERIC_DIALOGS) || USE_WXWINCE) && wxUSE_FILEDLG)
81 #define USE_FONTDLG_GENERIC \
82     ((USE_WXMSW || USE_WXMACFONTDLG || USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
83 
84 // Turn USE_MODAL_PRESENTATION to 0 if there is any reason for not presenting difference
85 // between modal and modeless dialogs (ie. not implemented it in your port yet)
86 #if defined(__SMARTPHONE__) || !wxUSE_BOOKCTRL
87     #define USE_MODAL_PRESENTATION 0
88 #else
89     #define USE_MODAL_PRESENTATION 1
90 #endif
91 
92 
93 // Turn USE_SETTINGS_DIALOG to 0 if supported
94 #if wxUSE_BOOKCTRL
95     #define USE_SETTINGS_DIALOG 1
96 #else
97     #define USE_SETTINGS_DIALOG 0
98 #endif
99 
100 
101 // Define a new application type
102 class MyApp: public wxApp
103 {
104 public:
105     bool OnInit();
106 
107     wxFont       m_canvasFont;
108     wxColour     m_canvasTextColour;
109 };
110 
111 #if USE_MODAL_PRESENTATION
112 
113 // A custom modeless dialog
114 class MyModelessDialog : public wxDialog
115 {
116 public:
117     MyModelessDialog(wxWindow *parent);
118 
119     void OnButton(wxCommandEvent& event);
120     void OnClose(wxCloseEvent& event);
121 
122 private:
123     DECLARE_EVENT_TABLE()
124 };
125 
126 // A custom modal dialog
127 class MyModalDialog : public wxDialog
128 {
129 public:
130     MyModalDialog(wxWindow *parent);
131 
132     void OnButton(wxCommandEvent& event);
133 
134 private:
135     wxButton *m_btnModal,
136              *m_btnModeless,
137              *m_btnDelete;
138 
139     DECLARE_EVENT_TABLE()
140 };
141 
142 #endif // USE_MODAL_PRESENTATION
143 
144 #if USE_SETTINGS_DIALOG
145 // Property sheet dialog
146 class SettingsDialog: public wxPropertySheetDialog
147 {
148 DECLARE_CLASS(SettingsDialog)
149 public:
150     SettingsDialog(wxWindow* parent, int dialogType);
151     ~SettingsDialog();
152 
153     wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
154     wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
155 
156 protected:
157 
158     enum {
159         ID_SHOW_TOOLTIPS = 100,
160         ID_AUTO_SAVE,
161         ID_AUTO_SAVE_MINS,
162         ID_LOAD_LAST_PROJECT,
163 
164         ID_APPLY_SETTINGS_TO,
165         ID_BACKGROUND_STYLE,
166         ID_FONT_SIZE
167     };
168 
169     wxImageList*    m_imageList;
170 
171 DECLARE_EVENT_TABLE()
172 };
173 
174 #endif // USE_SETTINGS_DIALOG
175 
176 // Define a new frame type
177 class MyFrame: public wxFrame
178 {
179 public:
180     MyFrame(wxWindow *parent, const wxString& title);
181 
182     void MessageBox(wxCommandEvent& event);
183 
184 #if wxUSE_COLOURDLG
185     void ChooseColour(wxCommandEvent& event);
186 #endif // wxUSE_COLOURDLG
187 
188 #if wxUSE_FONTDLG
189     void ChooseFont(wxCommandEvent& event);
190 #endif // wxUSE_FONTDLG
191 
192 #if wxUSE_LOG_DIALOG
193     void LogDialog(wxCommandEvent& event);
194 #endif // wxUSE_LOG_DIALOG
195 
196 #if wxUSE_CHOICEDLG
197     void SingleChoice(wxCommandEvent& event);
198     void MultiChoice(wxCommandEvent& event);
199 #endif // wxUSE_CHOICEDLG
200 
201 #if wxUSE_TEXTDLG
202     void TextEntry(wxCommandEvent& event);
203     void PasswordEntry(wxCommandEvent& event);
204 #endif // wxUSE_TEXTDLG
205 
206 #if wxUSE_NUMBERDLG
207     void NumericEntry(wxCommandEvent& event);
208 #endif // wxUSE_NUMBERDLG
209 
210 #if wxUSE_FILEDLG
211     void FileOpen(wxCommandEvent& event);
212     void FileOpen2(wxCommandEvent& event);
213     void FilesOpen(wxCommandEvent& event);
214     void FileSave(wxCommandEvent& event);
215 #endif // wxUSE_FILEDLG
216 
217 #if USE_FILEDLG_GENERIC
218     void FileOpenGeneric(wxCommandEvent& event);
219     void FilesOpenGeneric(wxCommandEvent& event);
220     void FileSaveGeneric(wxCommandEvent& event);
221 #endif // USE_FILEDLG_GENERIC
222 
223 #if wxUSE_DIRDLG
224     void DirChoose(wxCommandEvent& event);
225     void DirChooseNew(wxCommandEvent& event);
226 #endif // wxUSE_DIRDLG
227 
228 #if USE_DIRDLG_GENERIC
229     void GenericDirChoose(wxCommandEvent& event);
230 #endif // USE_DIRDLG_GENERIC
231 
232 #if wxUSE_STARTUP_TIPS
233     void ShowTip(wxCommandEvent& event);
234 #endif // wxUSE_STARTUP_TIPS
235 
236 #if USE_MODAL_PRESENTATION
237     void ModalDlg(wxCommandEvent& event);
238     void ModelessDlg(wxCommandEvent& event);
239     void DlgCenteredScreen(wxCommandEvent& event);
240     void DlgCenteredParent(wxCommandEvent& event);
241 #endif // USE_MODAL_PRESENTATION
242 
243 #if wxUSE_PROGRESSDLG
244     void ShowProgress(wxCommandEvent& event);
245 #endif // wxUSE_PROGRESSDLG
246 
247 #if wxUSE_ABOUTDLG
248     void ShowSimpleAboutDialog(wxCommandEvent& event);
249     void ShowFancyAboutDialog(wxCommandEvent& event);
250     void ShowFullAboutDialog(wxCommandEvent& event);
251     void ShowCustomAboutDialog(wxCommandEvent& event);
252 #endif // wxUSE_ABOUTDLG
253 
254 #if wxUSE_BUSYINFO
255     void ShowBusyInfo(wxCommandEvent& event);
256 #endif // wxUSE_BUSYINFO
257 
258 #if wxUSE_FINDREPLDLG
259     void ShowFindDialog(wxCommandEvent& event);
260     void ShowReplaceDialog(wxCommandEvent& event);
261     void OnFindDialog(wxFindDialogEvent& event);
262 #endif // wxUSE_FINDREPLDLG
263 
264 #if USE_COLOURDLG_GENERIC
265     void ChooseColourGeneric(wxCommandEvent& event);
266 #endif // USE_COLOURDLG_GENERIC
267 
268 #if USE_FONTDLG_GENERIC
269     void ChooseFontGeneric(wxCommandEvent& event);
270 #endif // USE_FONTDLG_GENERIC
271 
272     void OnPropertySheet(wxCommandEvent& event);
273     void OnRequestUserAttention(wxCommandEvent& event);
274     void OnExit(wxCommandEvent& event);
275 
276 private:
277 #if wxUSE_DIRDLG
278     void DoDirChoose(int style);
279 #endif // wxUSE_DIRDLG
280 
281 #if USE_MODAL_PRESENTATION
282     MyModelessDialog *m_dialog;
283 #endif // USE_MODAL_PRESENTATION
284 
285 #if wxUSE_FINDREPLDLG
286     wxFindReplaceData m_findData;
287 
288     wxFindReplaceDialog *m_dlgFind,
289                         *m_dlgReplace;
290 #endif // wxUSE_FINDREPLDLG
291 
292     wxColourData m_clrData;
293 
294     DECLARE_EVENT_TABLE()
295 };
296 
297 class MyCanvas: public wxScrolledWindow
298 {
299 public:
MyCanvas(wxWindow * parent)300     MyCanvas(wxWindow *parent) :
301        wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
302 
303     void OnPaint(wxPaintEvent& event);
304 
305     DECLARE_EVENT_TABLE()
306 };
307 
308 
309 // Menu IDs
310 enum
311 {
312     DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
313     DIALOGS_CHOOSE_COLOUR_GENERIC,
314     DIALOGS_CHOOSE_FONT,
315     DIALOGS_CHOOSE_FONT_GENERIC,
316     DIALOGS_MESSAGE_BOX,
317     DIALOGS_SINGLE_CHOICE,
318     DIALOGS_MULTI_CHOICE,
319     DIALOGS_TEXT_ENTRY,
320     DIALOGS_PASSWORD_ENTRY,
321     DIALOGS_FILE_OPEN,
322     DIALOGS_FILE_OPEN2,
323     DIALOGS_FILES_OPEN,
324     DIALOGS_FILE_SAVE,
325     DIALOGS_FILE_OPEN_GENERIC,
326     DIALOGS_FILES_OPEN_GENERIC,
327     DIALOGS_FILE_SAVE_GENERIC,
328     DIALOGS_DIR_CHOOSE,
329     DIALOGS_DIRNEW_CHOOSE,
330     DIALOGS_GENERIC_DIR_CHOOSE,
331     DIALOGS_TIP,
332     DIALOGS_NUM_ENTRY,
333     DIALOGS_LOG_DIALOG,
334     DIALOGS_MODAL,
335     DIALOGS_MODELESS,
336     DIALOGS_CENTRE_SCREEN,
337     DIALOGS_CENTRE_PARENT,
338     DIALOGS_MODELESS_BTN,
339     DIALOGS_PROGRESS,
340     DIALOGS_ABOUTDLG_SIMPLE,
341     DIALOGS_ABOUTDLG_FANCY,
342     DIALOGS_ABOUTDLG_FULL,
343     DIALOGS_ABOUTDLG_CUSTOM,
344     DIALOGS_BUSYINFO,
345     DIALOGS_FIND,
346     DIALOGS_REPLACE,
347     DIALOGS_REQUEST,
348     DIALOGS_PROPERTY_SHEET,
349     DIALOGS_PROPERTY_SHEET_TOOLBOOK,
350     DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK
351 };
352 
353 #endif
354 
355