]> git.saurik.com Git - wxWidgets.git/blame - samples/dialogs/dialogs.h
no real changes: just some cleanup, better error handling and (unsuccessful) attemps...
[wxWidgets.git] / samples / dialogs / dialogs.h
CommitLineData
457814b5
JS
1/////////////////////////////////////////////////////////////////////////////
2// Name: dialogs.h
3// Purpose: Common dialogs demo
4// Author: Julian Smart
13188def 5// Modified by: ABX (2004) - adjustementd for conditional building
457814b5
JS
6// Created: 04/01/98
7// RCS-ID: $Id$
6aa89a22 8// Copyright: (c) Julian Smart
c49245f8 9// Licence: wxWindows license
457814b5
JS
10/////////////////////////////////////////////////////////////////////////////
11
4c8fc4d6 12/*
08375332 13This sample shows how to use the common dialogs available from wxWidgets.
4c8fc4d6
WS
14It also shows that generic implementations of common dialogs can be exchanged
15with native dialogs and can coexist in one application. The need for generic
16dialogs addition is recognized thanks to setup of below USE_*** setting. Their
08375332
WS
17combinations reflects conditions of makefiles and project files to avoid unresolved
18references during linking. For now some generic dialogs are added in static builds
4c8fc4d6
WS
19of MSW, MAC and OS2
20*/
21
457814b5
JS
22#ifndef __DIALOGSH__
23#define __DIALOGSH__
24
da7a8602
WS
25#ifdef __WXUNIVERSAL__
26 #define USE_WXUNIVERSAL 1
27#else
28 #define USE_WXUNIVERSAL 0
29#endif
30
f50ff87b
WS
31#ifdef WXUSINGDLL
32 #define USE_DLL 1
33#else
34 #define USE_DLL 0
35#endif
36
684883e3
WS
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
da7a8602
WS
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
cea9c5b1 55#if defined(__WXMAC_OSX__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2) && USE_NATIVE_FONT_DIALOG_FOR_MACOSX
71622a68
RN
56 #define USE_WXMACFONTDLG 1
57#else
58 #define USE_WXMACFONTDLG 0
59#endif
60
da7a8602
WS
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
29e3d1f9 73#define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
13188def 74
29e3d1f9
VZ
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 \
684883e3 80 ((((USE_WXMSW || USE_WXMAC || USE_WXPM) && USE_GENERIC_DIALOGS) || USE_WXWINCE) && wxUSE_FILEDLG)
29e3d1f9 81#define USE_FONTDLG_GENERIC \
684883e3 82 ((USE_WXMSW || USE_WXMACFONTDLG || USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
4c8fc4d6 83
08375332
WS
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)
532d575b 86#if defined(__SMARTPHONE__) || !wxUSE_BOOKCTRL
08375332
WS
87 #define USE_MODAL_PRESENTATION 0
88#else
89 #define USE_MODAL_PRESENTATION 1
90#endif
4c8fc4d6 91
13188def 92
532d575b
WS
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
457814b5
JS
101// Define a new application type
102class MyApp: public wxApp
c49245f8
VZ
103{
104public:
105 bool OnInit();
457814b5
JS
106
107 wxFont m_canvasFont;
108 wxColour m_canvasTextColour;
109};
110
b4954d19
WS
111#if USE_MODAL_PRESENTATION
112
f6bcfd97 113// A custom modeless dialog
4c45f240
VZ
114class MyModelessDialog : public wxDialog
115{
116public:
117 MyModelessDialog(wxWindow *parent);
abceee76 118
5d987909 119 void OnButton(wxCommandEvent& event);
abceee76
VZ
120 void OnClose(wxCloseEvent& event);
121
122private:
123 DECLARE_EVENT_TABLE()
4c45f240
VZ
124};
125
f6bcfd97
BP
126// A custom modal dialog
127class MyModalDialog : public wxDialog
128{
129public:
130 MyModalDialog(wxWindow *parent);
131
132 void OnButton(wxCommandEvent& event);
133
134private:
5315ebfa
VZ
135 wxButton *m_btnModal,
136 *m_btnModeless,
137 *m_btnDelete;
f6bcfd97
BP
138
139 DECLARE_EVENT_TABLE()
140};
141
b4954d19
WS
142#endif // USE_MODAL_PRESENTATION
143
8e1dac82
VZ
144class StdButtonSizerDialog : public wxDialog
145{
146public:
147 StdButtonSizerDialog(wxWindow *parent);
148
149 void OnEvent(wxCommandEvent& event);
150
151private:
152 void EnableDisableControls();
153
154 wxCheckBox *m_chkboxAffirmativeButton;
155 wxRadioButton *m_radiobtnOk,
156 *m_radiobtnYes;
157
158 wxCheckBox *m_chkboxDismissButton;
159 wxRadioButton *m_radiobtnClose,
160 *m_radiobtnCancel;
161
162 wxCheckBox *m_chkboxApply,
163 *m_chkboxNo,
164 *m_chkboxHelp,
165 *m_chkboxNoDefault;
166
167 wxSizer *m_buttonsSizer;
168
169 DECLARE_EVENT_TABLE()
170};
171
532d575b 172#if USE_SETTINGS_DIALOG
0f5d8ecf
JS
173// Property sheet dialog
174class SettingsDialog: public wxPropertySheetDialog
175{
176DECLARE_CLASS(SettingsDialog)
177public:
64d3ed17 178 SettingsDialog(wxWindow* parent, int dialogType);
cc8bc5aa 179 ~SettingsDialog();
0f5d8ecf
JS
180
181 wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
182 wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
183
184protected:
185
186 enum {
187 ID_SHOW_TOOLTIPS = 100,
188 ID_AUTO_SAVE,
189 ID_AUTO_SAVE_MINS,
190 ID_LOAD_LAST_PROJECT,
191
192 ID_APPLY_SETTINGS_TO,
193 ID_BACKGROUND_STYLE,
194 ID_FONT_SIZE
195 };
196
cc8bc5aa
JS
197 wxImageList* m_imageList;
198
0f5d8ecf
JS
199DECLARE_EVENT_TABLE()
200};
201
532d575b
WS
202#endif // USE_SETTINGS_DIALOG
203
457814b5
JS
204// Define a new frame type
205class MyFrame: public wxFrame
c49245f8
VZ
206{
207public:
13188def
WS
208 MyFrame(wxWindow *parent, const wxString& title);
209
210 void MessageBox(wxCommandEvent& event);
457814b5 211
13188def 212#if wxUSE_COLOURDLG
329e86bf 213 void ChooseColour(wxCommandEvent& event);
13188def
WS
214#endif // wxUSE_COLOURDLG
215
216#if wxUSE_FONTDLG
329e86bf 217 void ChooseFont(wxCommandEvent& event);
13188def
WS
218#endif // wxUSE_FONTDLG
219
220#if wxUSE_LOG_DIALOG
d93c719a 221 void LogDialog(wxCommandEvent& event);
13188def
WS
222#endif // wxUSE_LOG_DIALOG
223
224#if wxUSE_CHOICEDLG
457814b5 225 void SingleChoice(wxCommandEvent& event);
d6c9c1b7 226 void MultiChoice(wxCommandEvent& event);
13188def
WS
227#endif // wxUSE_CHOICEDLG
228
229#if wxUSE_TEXTDLG
457814b5 230 void TextEntry(wxCommandEvent& event);
a294c6d5 231 void PasswordEntry(wxCommandEvent& event);
13188def
WS
232#endif // wxUSE_TEXTDLG
233
234#if wxUSE_NUMBERDLG
c49245f8 235 void NumericEntry(wxCommandEvent& event);
13188def
WS
236#endif // wxUSE_NUMBERDLG
237
238#if wxUSE_FILEDLG
457814b5 239 void FileOpen(wxCommandEvent& event);
35b45b33 240 void FileOpen2(wxCommandEvent& event);
c61f4f6d 241 void FilesOpen(wxCommandEvent& event);
457814b5 242 void FileSave(wxCommandEvent& event);
13188def
WS
243#endif // wxUSE_FILEDLG
244
695fe764
WS
245#if USE_FILEDLG_GENERIC
246 void FileOpenGeneric(wxCommandEvent& event);
247 void FilesOpenGeneric(wxCommandEvent& event);
248 void FileSaveGeneric(wxCommandEvent& event);
249#endif // USE_FILEDLG_GENERIC
250
13188def 251#if wxUSE_DIRDLG
457814b5 252 void DirChoose(wxCommandEvent& event);
f09c8393 253 void DirChooseNew(wxCommandEvent& event);
13188def
WS
254#endif // wxUSE_DIRDLG
255
256#if USE_DIRDLG_GENERIC
51a58d8b 257 void GenericDirChoose(wxCommandEvent& event);
13188def
WS
258#endif // USE_DIRDLG_GENERIC
259
260#if wxUSE_STARTUP_TIPS
c50f1fb9 261 void ShowTip(wxCommandEvent& event);
13188def
WS
262#endif // wxUSE_STARTUP_TIPS
263
264#if USE_MODAL_PRESENTATION
f6bcfd97 265 void ModalDlg(wxCommandEvent& event);
1baa0a9d 266#endif // USE_MODAL_PRESENTATION
4c45f240 267 void ModelessDlg(wxCommandEvent& event);
cae50e6b
VZ
268 void DlgCenteredScreen(wxCommandEvent& event);
269 void DlgCenteredParent(wxCommandEvent& event);
1baa0a9d 270 void MiniFrame(wxCommandEvent& event);
8e5dbcdd 271 void DlgOnTop(wxCommandEvent& event);
13188def 272
761989ff 273#if wxUSE_PROGRESSDLG
abceee76 274 void ShowProgress(wxCommandEvent& event);
761989ff 275#endif // wxUSE_PROGRESSDLG
13188def 276
ca7adbf8
VZ
277#if wxUSE_ABOUTDLG
278 void ShowSimpleAboutDialog(wxCommandEvent& event);
279 void ShowFancyAboutDialog(wxCommandEvent& event);
453c9e3b
VZ
280 void ShowFullAboutDialog(wxCommandEvent& event);
281 void ShowCustomAboutDialog(wxCommandEvent& event);
ca7adbf8
VZ
282#endif // wxUSE_ABOUTDLG
283
a62b0bcc
VZ
284#if wxUSE_BUSYINFO
285 void ShowBusyInfo(wxCommandEvent& event);
286#endif // wxUSE_BUSYINFO
13188def 287
761989ff
VZ
288#if wxUSE_FINDREPLDLG
289 void ShowFindDialog(wxCommandEvent& event);
290 void ShowReplaceDialog(wxCommandEvent& event);
761989ff
VZ
291 void OnFindDialog(wxFindDialogEvent& event);
292#endif // wxUSE_FINDREPLDLG
457814b5 293
13188def 294#if USE_COLOURDLG_GENERIC
329e86bf 295 void ChooseColourGeneric(wxCommandEvent& event);
13188def
WS
296#endif // USE_COLOURDLG_GENERIC
297
298#if USE_FONTDLG_GENERIC
329e86bf 299 void ChooseFontGeneric(wxCommandEvent& event);
13188def 300#endif // USE_FONTDLG_GENERIC
c49245f8 301
0f5d8ecf 302 void OnPropertySheet(wxCommandEvent& event);
29e3d1f9 303 void OnRequestUserAttention(wxCommandEvent& event);
8e1dac82 304 void OnStandardButtonsSizerDialog(wxCommandEvent& event);
329e86bf 305 void OnExit(wxCommandEvent& event);
c49245f8 306
4c45f240 307private:
13188def 308#if wxUSE_DIRDLG
f09c8393 309 void DoDirChoose(int style);
13188def 310#endif // wxUSE_DIRDLG
f09c8393 311
13188def 312#if USE_MODAL_PRESENTATION
4c45f240 313 MyModelessDialog *m_dialog;
13188def 314#endif // USE_MODAL_PRESENTATION
4c45f240 315
761989ff
VZ
316#if wxUSE_FINDREPLDLG
317 wxFindReplaceData m_findData;
14fca738
VZ
318
319 wxFindReplaceDialog *m_dlgFind,
320 *m_dlgReplace;
761989ff
VZ
321#endif // wxUSE_FINDREPLDLG
322
d33dd9ef
VS
323 wxColourData m_clrData;
324
4c45f240 325 DECLARE_EVENT_TABLE()
457814b5
JS
326};
327
328class MyCanvas: public wxScrolledWindow
329{
c49245f8 330public:
08375332 331 MyCanvas(wxWindow *parent) :
13188def 332 wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
c49245f8
VZ
333
334 void OnPaint(wxPaintEvent& event);
335
336 DECLARE_EVENT_TABLE()
457814b5
JS
337};
338
339
340// Menu IDs
a294c6d5
VZ
341enum
342{
13188def 343 DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
a294c6d5
VZ
344 DIALOGS_CHOOSE_COLOUR_GENERIC,
345 DIALOGS_CHOOSE_FONT,
346 DIALOGS_CHOOSE_FONT_GENERIC,
347 DIALOGS_MESSAGE_BOX,
348 DIALOGS_SINGLE_CHOICE,
d6c9c1b7 349 DIALOGS_MULTI_CHOICE,
a294c6d5
VZ
350 DIALOGS_TEXT_ENTRY,
351 DIALOGS_PASSWORD_ENTRY,
352 DIALOGS_FILE_OPEN,
35b45b33 353 DIALOGS_FILE_OPEN2,
a294c6d5
VZ
354 DIALOGS_FILES_OPEN,
355 DIALOGS_FILE_SAVE,
695fe764
WS
356 DIALOGS_FILE_OPEN_GENERIC,
357 DIALOGS_FILES_OPEN_GENERIC,
358 DIALOGS_FILE_SAVE_GENERIC,
a294c6d5 359 DIALOGS_DIR_CHOOSE,
f09c8393 360 DIALOGS_DIRNEW_CHOOSE,
51a58d8b 361 DIALOGS_GENERIC_DIR_CHOOSE,
a294c6d5
VZ
362 DIALOGS_TIP,
363 DIALOGS_NUM_ENTRY,
4c45f240 364 DIALOGS_LOG_DIALOG,
f6bcfd97 365 DIALOGS_MODAL,
4c45f240 366 DIALOGS_MODELESS,
cae50e6b
VZ
367 DIALOGS_CENTRE_SCREEN,
368 DIALOGS_CENTRE_PARENT,
1baa0a9d 369 DIALOGS_MINIFRAME,
8e5dbcdd 370 DIALOGS_ONTOP,
abceee76 371 DIALOGS_MODELESS_BTN,
761989ff 372 DIALOGS_PROGRESS,
ca7adbf8
VZ
373 DIALOGS_ABOUTDLG_SIMPLE,
374 DIALOGS_ABOUTDLG_FANCY,
453c9e3b
VZ
375 DIALOGS_ABOUTDLG_FULL,
376 DIALOGS_ABOUTDLG_CUSTOM,
a62b0bcc 377 DIALOGS_BUSYINFO,
761989ff 378 DIALOGS_FIND,
29e3d1f9 379 DIALOGS_REPLACE,
0f5d8ecf 380 DIALOGS_REQUEST,
cc8bc5aa 381 DIALOGS_PROPERTY_SHEET,
64d3ed17 382 DIALOGS_PROPERTY_SHEET_TOOLBOOK,
8e1dac82
VZ
383 DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK,
384 DIALOGS_STANDARD_BUTTON_SIZER_DIALOG
a294c6d5 385};
457814b5
JS
386
387#endif
388