]> git.saurik.com Git - wxWidgets.git/blame_incremental - samples/dialogs/dialogs.h
changed wxFFileOutput/InputStream ctor 'mode' argument to wxString
[wxWidgets.git] / samples / dialogs / dialogs.h
... / ...
CommitLineData
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$
8// Copyright: (c) Julian Smart
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11
12/*
13This sample shows how to use the common dialogs available from wxWidgets.
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
17combinations reflects conditions of makefiles and project files to avoid unresolved
18references during linking. For now some generic dialogs are added in static builds
19of 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
102class MyApp: public wxApp
103{
104public:
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
114class MyModelessDialog : public wxDialog
115{
116public:
117 MyModelessDialog(wxWindow *parent);
118
119 void OnButton(wxCommandEvent& event);
120 void OnClose(wxCloseEvent& event);
121
122private:
123 DECLARE_EVENT_TABLE()
124};
125
126// A custom modal dialog
127class MyModalDialog : public wxDialog
128{
129public:
130 MyModalDialog(wxWindow *parent);
131
132 void OnButton(wxCommandEvent& event);
133
134private:
135 wxButton *m_btnModal,
136 *m_btnModeless,
137 *m_btnDelete;
138
139 DECLARE_EVENT_TABLE()
140};
141
142#endif // USE_MODAL_PRESENTATION
143
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
172#if USE_SETTINGS_DIALOG
173// Property sheet dialog
174class SettingsDialog: public wxPropertySheetDialog
175{
176DECLARE_CLASS(SettingsDialog)
177public:
178 SettingsDialog(wxWindow* parent, int dialogType);
179 ~SettingsDialog();
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
197 wxImageList* m_imageList;
198
199DECLARE_EVENT_TABLE()
200};
201
202#endif // USE_SETTINGS_DIALOG
203
204// Define a new frame type
205class MyFrame: public wxFrame
206{
207public:
208 MyFrame(wxWindow *parent, const wxString& title);
209
210 void MessageBox(wxCommandEvent& event);
211
212#if wxUSE_COLOURDLG
213 void ChooseColour(wxCommandEvent& event);
214#endif // wxUSE_COLOURDLG
215
216#if wxUSE_FONTDLG
217 void ChooseFont(wxCommandEvent& event);
218#endif // wxUSE_FONTDLG
219
220#if wxUSE_LOG_DIALOG
221 void LogDialog(wxCommandEvent& event);
222#endif // wxUSE_LOG_DIALOG
223
224#if wxUSE_CHOICEDLG
225 void SingleChoice(wxCommandEvent& event);
226 void MultiChoice(wxCommandEvent& event);
227#endif // wxUSE_CHOICEDLG
228
229#if wxUSE_TEXTDLG
230 void TextEntry(wxCommandEvent& event);
231 void PasswordEntry(wxCommandEvent& event);
232#endif // wxUSE_TEXTDLG
233
234#if wxUSE_NUMBERDLG
235 void NumericEntry(wxCommandEvent& event);
236#endif // wxUSE_NUMBERDLG
237
238#if wxUSE_FILEDLG
239 void FileOpen(wxCommandEvent& event);
240 void FileOpen2(wxCommandEvent& event);
241 void FilesOpen(wxCommandEvent& event);
242 void FileSave(wxCommandEvent& event);
243#endif // wxUSE_FILEDLG
244
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
251#if wxUSE_DIRDLG
252 void DirChoose(wxCommandEvent& event);
253 void DirChooseNew(wxCommandEvent& event);
254#endif // wxUSE_DIRDLG
255
256#if USE_DIRDLG_GENERIC
257 void GenericDirChoose(wxCommandEvent& event);
258#endif // USE_DIRDLG_GENERIC
259
260#if wxUSE_STARTUP_TIPS
261 void ShowTip(wxCommandEvent& event);
262#endif // wxUSE_STARTUP_TIPS
263
264#if USE_MODAL_PRESENTATION
265 void ModalDlg(wxCommandEvent& event);
266 void ModelessDlg(wxCommandEvent& event);
267 void DlgCenteredScreen(wxCommandEvent& event);
268 void DlgCenteredParent(wxCommandEvent& event);
269#endif // USE_MODAL_PRESENTATION
270
271#if wxUSE_PROGRESSDLG
272 void ShowProgress(wxCommandEvent& event);
273#endif // wxUSE_PROGRESSDLG
274
275#if wxUSE_ABOUTDLG
276 void ShowSimpleAboutDialog(wxCommandEvent& event);
277 void ShowFancyAboutDialog(wxCommandEvent& event);
278 void ShowFullAboutDialog(wxCommandEvent& event);
279 void ShowCustomAboutDialog(wxCommandEvent& event);
280#endif // wxUSE_ABOUTDLG
281
282#if wxUSE_BUSYINFO
283 void ShowBusyInfo(wxCommandEvent& event);
284#endif // wxUSE_BUSYINFO
285
286#if wxUSE_FINDREPLDLG
287 void ShowFindDialog(wxCommandEvent& event);
288 void ShowReplaceDialog(wxCommandEvent& event);
289 void OnFindDialog(wxFindDialogEvent& event);
290#endif // wxUSE_FINDREPLDLG
291
292#if USE_COLOURDLG_GENERIC
293 void ChooseColourGeneric(wxCommandEvent& event);
294#endif // USE_COLOURDLG_GENERIC
295
296#if USE_FONTDLG_GENERIC
297 void ChooseFontGeneric(wxCommandEvent& event);
298#endif // USE_FONTDLG_GENERIC
299
300 void OnPropertySheet(wxCommandEvent& event);
301 void OnRequestUserAttention(wxCommandEvent& event);
302 void OnStandardButtonsSizerDialog(wxCommandEvent& event);
303 void OnExit(wxCommandEvent& event);
304
305private:
306#if wxUSE_DIRDLG
307 void DoDirChoose(int style);
308#endif // wxUSE_DIRDLG
309
310#if USE_MODAL_PRESENTATION
311 MyModelessDialog *m_dialog;
312#endif // USE_MODAL_PRESENTATION
313
314#if wxUSE_FINDREPLDLG
315 wxFindReplaceData m_findData;
316
317 wxFindReplaceDialog *m_dlgFind,
318 *m_dlgReplace;
319#endif // wxUSE_FINDREPLDLG
320
321 wxColourData m_clrData;
322
323 DECLARE_EVENT_TABLE()
324};
325
326class MyCanvas: public wxScrolledWindow
327{
328public:
329 MyCanvas(wxWindow *parent) :
330 wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
331
332 void OnPaint(wxPaintEvent& event);
333
334 DECLARE_EVENT_TABLE()
335};
336
337
338// Menu IDs
339enum
340{
341 DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
342 DIALOGS_CHOOSE_COLOUR_GENERIC,
343 DIALOGS_CHOOSE_FONT,
344 DIALOGS_CHOOSE_FONT_GENERIC,
345 DIALOGS_MESSAGE_BOX,
346 DIALOGS_SINGLE_CHOICE,
347 DIALOGS_MULTI_CHOICE,
348 DIALOGS_TEXT_ENTRY,
349 DIALOGS_PASSWORD_ENTRY,
350 DIALOGS_FILE_OPEN,
351 DIALOGS_FILE_OPEN2,
352 DIALOGS_FILES_OPEN,
353 DIALOGS_FILE_SAVE,
354 DIALOGS_FILE_OPEN_GENERIC,
355 DIALOGS_FILES_OPEN_GENERIC,
356 DIALOGS_FILE_SAVE_GENERIC,
357 DIALOGS_DIR_CHOOSE,
358 DIALOGS_DIRNEW_CHOOSE,
359 DIALOGS_GENERIC_DIR_CHOOSE,
360 DIALOGS_TIP,
361 DIALOGS_NUM_ENTRY,
362 DIALOGS_LOG_DIALOG,
363 DIALOGS_MODAL,
364 DIALOGS_MODELESS,
365 DIALOGS_CENTRE_SCREEN,
366 DIALOGS_CENTRE_PARENT,
367 DIALOGS_MODELESS_BTN,
368 DIALOGS_PROGRESS,
369 DIALOGS_ABOUTDLG_SIMPLE,
370 DIALOGS_ABOUTDLG_FANCY,
371 DIALOGS_ABOUTDLG_FULL,
372 DIALOGS_ABOUTDLG_CUSTOM,
373 DIALOGS_BUSYINFO,
374 DIALOGS_FIND,
375 DIALOGS_REPLACE,
376 DIALOGS_REQUEST,
377 DIALOGS_PROPERTY_SHEET,
378 DIALOGS_PROPERTY_SHEET_TOOLBOOK,
379 DIALOGS_PROPERTY_SHEET_BUTTONTOOLBOOK,
380 DIALOGS_STANDARD_BUTTON_SIZER_DIALOG
381};
382
383#endif
384