]> git.saurik.com Git - wxWidgets.git/blame - samples/dialogs/dialogs.h
Artwork replacement (c) Julian Smart
[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
b6352c09 37#if defined(__WXMSW__) && !defined(__WXWINCE__)
da7a8602
WS
38 #define USE_WXMSW 1
39#else
40 #define USE_WXMSW 0
41#endif
42
43#ifdef __WXMAC__
44 #define USE_WXMAC 1
45#else
46 #define USE_WXMAC 0
47#endif
48
cea9c5b1 49#if defined(__WXMAC_OSX__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2) && USE_NATIVE_FONT_DIALOG_FOR_MACOSX
71622a68
RN
50 #define USE_WXMACFONTDLG 1
51#else
52 #define USE_WXMACFONTDLG 0
53#endif
54
da7a8602
WS
55#ifdef __WXGTK__
56 #define USE_WXGTK 1
57#else
58 #define USE_WXGTK 0
59#endif
60
61#ifdef __WXPM__
62 #define USE_WXPM 1
63#else
64 #define USE_WXPM 0
65#endif
66
29e3d1f9 67#define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
13188def 68
29e3d1f9
VZ
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 \
71622a68 76 ((USE_WXMSW || USE_WXMACFONTDLG ||USE_WXPM) && USE_GENERIC_DIALOGS && wxUSE_FONTDLG)
13188def 77
4c8fc4d6 78
08375332
WS
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
83#else
84 #define USE_MODAL_PRESENTATION 1
85#endif
4c8fc4d6 86
13188def 87
457814b5
JS
88// Define a new application type
89class MyApp: public wxApp
c49245f8
VZ
90{
91public:
92 bool OnInit();
457814b5
JS
93
94 wxFont m_canvasFont;
95 wxColour m_canvasTextColour;
96};
97
b4954d19
WS
98#if USE_MODAL_PRESENTATION
99
f6bcfd97 100// A custom modeless dialog
4c45f240
VZ
101class MyModelessDialog : public wxDialog
102{
103public:
104 MyModelessDialog(wxWindow *parent);
abceee76 105
5d987909 106 void OnButton(wxCommandEvent& event);
abceee76
VZ
107 void OnClose(wxCloseEvent& event);
108
109private:
110 DECLARE_EVENT_TABLE()
4c45f240
VZ
111};
112
f6bcfd97
BP
113// A custom modal dialog
114class MyModalDialog : public wxDialog
115{
116public:
117 MyModalDialog(wxWindow *parent);
118
119 void OnButton(wxCommandEvent& event);
120
121private:
5315ebfa
VZ
122 wxButton *m_btnModal,
123 *m_btnModeless,
124 *m_btnDelete;
f6bcfd97
BP
125
126 DECLARE_EVENT_TABLE()
127};
128
b4954d19
WS
129#endif // USE_MODAL_PRESENTATION
130
0f5d8ecf
JS
131// Property sheet dialog
132class SettingsDialog: public wxPropertySheetDialog
133{
134DECLARE_CLASS(SettingsDialog)
135public:
136 SettingsDialog(wxWindow* parent);
137
138 wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
139 wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
140
141protected:
142
143 enum {
144 ID_SHOW_TOOLTIPS = 100,
145 ID_AUTO_SAVE,
146 ID_AUTO_SAVE_MINS,
147 ID_LOAD_LAST_PROJECT,
148
149 ID_APPLY_SETTINGS_TO,
150 ID_BACKGROUND_STYLE,
151 ID_FONT_SIZE
152 };
153
154DECLARE_EVENT_TABLE()
155};
156
457814b5
JS
157// Define a new frame type
158class MyFrame: public wxFrame
c49245f8
VZ
159{
160public:
13188def
WS
161 MyFrame(wxWindow *parent, const wxString& title);
162
163 void MessageBox(wxCommandEvent& event);
457814b5 164
13188def 165#if wxUSE_COLOURDLG
329e86bf 166 void ChooseColour(wxCommandEvent& event);
13188def
WS
167#endif // wxUSE_COLOURDLG
168
169#if wxUSE_FONTDLG
329e86bf 170 void ChooseFont(wxCommandEvent& event);
13188def
WS
171#endif // wxUSE_FONTDLG
172
173#if wxUSE_LOG_DIALOG
d93c719a 174 void LogDialog(wxCommandEvent& event);
13188def
WS
175#endif // wxUSE_LOG_DIALOG
176
177#if wxUSE_CHOICEDLG
457814b5 178 void SingleChoice(wxCommandEvent& event);
d6c9c1b7 179 void MultiChoice(wxCommandEvent& event);
13188def
WS
180#endif // wxUSE_CHOICEDLG
181
182#if wxUSE_TEXTDLG
457814b5 183 void TextEntry(wxCommandEvent& event);
a294c6d5 184 void PasswordEntry(wxCommandEvent& event);
13188def
WS
185#endif // wxUSE_TEXTDLG
186
187#if wxUSE_NUMBERDLG
c49245f8 188 void NumericEntry(wxCommandEvent& event);
13188def
WS
189#endif // wxUSE_NUMBERDLG
190
191#if wxUSE_FILEDLG
457814b5 192 void FileOpen(wxCommandEvent& event);
35b45b33 193 void FileOpen2(wxCommandEvent& event);
c61f4f6d 194 void FilesOpen(wxCommandEvent& event);
457814b5 195 void FileSave(wxCommandEvent& event);
13188def
WS
196#endif // wxUSE_FILEDLG
197
695fe764
WS
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
203
13188def 204#if wxUSE_DIRDLG
457814b5 205 void DirChoose(wxCommandEvent& event);
f09c8393 206 void DirChooseNew(wxCommandEvent& event);
13188def
WS
207#endif // wxUSE_DIRDLG
208
209#if USE_DIRDLG_GENERIC
51a58d8b 210 void GenericDirChoose(wxCommandEvent& event);
13188def
WS
211#endif // USE_DIRDLG_GENERIC
212
213#if wxUSE_STARTUP_TIPS
c50f1fb9 214 void ShowTip(wxCommandEvent& event);
13188def
WS
215#endif // wxUSE_STARTUP_TIPS
216
217#if USE_MODAL_PRESENTATION
f6bcfd97 218 void ModalDlg(wxCommandEvent& event);
4c45f240 219 void ModelessDlg(wxCommandEvent& event);
13188def
WS
220#endif // USE_MODAL_PRESENTATION
221
761989ff 222#if wxUSE_PROGRESSDLG
abceee76 223 void ShowProgress(wxCommandEvent& event);
761989ff 224#endif // wxUSE_PROGRESSDLG
13188def 225
a62b0bcc
VZ
226#if wxUSE_BUSYINFO
227 void ShowBusyInfo(wxCommandEvent& event);
228#endif // wxUSE_BUSYINFO
13188def 229
761989ff
VZ
230#if wxUSE_FINDREPLDLG
231 void ShowFindDialog(wxCommandEvent& event);
232 void ShowReplaceDialog(wxCommandEvent& event);
761989ff
VZ
233 void OnFindDialog(wxFindDialogEvent& event);
234#endif // wxUSE_FINDREPLDLG
457814b5 235
13188def 236#if USE_COLOURDLG_GENERIC
329e86bf 237 void ChooseColourGeneric(wxCommandEvent& event);
13188def
WS
238#endif // USE_COLOURDLG_GENERIC
239
240#if USE_FONTDLG_GENERIC
329e86bf 241 void ChooseFontGeneric(wxCommandEvent& event);
13188def 242#endif // USE_FONTDLG_GENERIC
c49245f8 243
0f5d8ecf 244 void OnPropertySheet(wxCommandEvent& event);
29e3d1f9 245 void OnRequestUserAttention(wxCommandEvent& event);
329e86bf 246 void OnExit(wxCommandEvent& event);
c49245f8 247
4c45f240 248private:
13188def 249#if wxUSE_DIRDLG
f09c8393 250 void DoDirChoose(int style);
13188def 251#endif // wxUSE_DIRDLG
f09c8393 252
13188def 253#if USE_MODAL_PRESENTATION
4c45f240 254 MyModelessDialog *m_dialog;
13188def 255#endif // USE_MODAL_PRESENTATION
4c45f240 256
761989ff
VZ
257#if wxUSE_FINDREPLDLG
258 wxFindReplaceData m_findData;
14fca738
VZ
259
260 wxFindReplaceDialog *m_dlgFind,
261 *m_dlgReplace;
761989ff
VZ
262#endif // wxUSE_FINDREPLDLG
263
d33dd9ef
VS
264 wxColourData m_clrData;
265
4c45f240 266 DECLARE_EVENT_TABLE()
457814b5
JS
267};
268
269class MyCanvas: public wxScrolledWindow
270{
c49245f8 271public:
08375332 272 MyCanvas(wxWindow *parent) :
13188def 273 wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
c49245f8
VZ
274
275 void OnPaint(wxPaintEvent& event);
276
277 DECLARE_EVENT_TABLE()
457814b5
JS
278};
279
280
281// Menu IDs
a294c6d5
VZ
282enum
283{
13188def 284 DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
a294c6d5
VZ
285 DIALOGS_CHOOSE_COLOUR_GENERIC,
286 DIALOGS_CHOOSE_FONT,
287 DIALOGS_CHOOSE_FONT_GENERIC,
288 DIALOGS_MESSAGE_BOX,
289 DIALOGS_SINGLE_CHOICE,
d6c9c1b7 290 DIALOGS_MULTI_CHOICE,
a294c6d5
VZ
291 DIALOGS_TEXT_ENTRY,
292 DIALOGS_PASSWORD_ENTRY,
293 DIALOGS_FILE_OPEN,
35b45b33 294 DIALOGS_FILE_OPEN2,
a294c6d5
VZ
295 DIALOGS_FILES_OPEN,
296 DIALOGS_FILE_SAVE,
695fe764
WS
297 DIALOGS_FILE_OPEN_GENERIC,
298 DIALOGS_FILES_OPEN_GENERIC,
299 DIALOGS_FILE_SAVE_GENERIC,
a294c6d5 300 DIALOGS_DIR_CHOOSE,
f09c8393 301 DIALOGS_DIRNEW_CHOOSE,
51a58d8b 302 DIALOGS_GENERIC_DIR_CHOOSE,
a294c6d5
VZ
303 DIALOGS_TIP,
304 DIALOGS_NUM_ENTRY,
4c45f240 305 DIALOGS_LOG_DIALOG,
f6bcfd97 306 DIALOGS_MODAL,
4c45f240 307 DIALOGS_MODELESS,
abceee76 308 DIALOGS_MODELESS_BTN,
761989ff 309 DIALOGS_PROGRESS,
a62b0bcc 310 DIALOGS_BUSYINFO,
761989ff 311 DIALOGS_FIND,
29e3d1f9 312 DIALOGS_REPLACE,
0f5d8ecf
JS
313 DIALOGS_REQUEST,
314 DIALOGS_PROPERTY_SHEET
a294c6d5 315};
457814b5
JS
316
317#endif
318