fix dialogs sample after change to generic on OSX
[wxWidgets.git] / samples / dialogs / dialogs.h
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 /*
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(__WXMSW__) && !defined(__WXWINCE__)
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
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
51 #else
52 #define USE_WXMACFONTDLG 0
53 #endif
54
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
67 #define USE_GENERIC_DIALOGS (!USE_WXUNIVERSAL && !USE_DLL)
68
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)
77
78
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
86
87
88 // Define a new application type
89 class MyApp: public wxApp
90 {
91 public:
92 bool OnInit();
93
94 wxFont m_canvasFont;
95 wxColour m_canvasTextColour;
96 };
97
98 #if USE_MODAL_PRESENTATION
99
100 // A custom modeless dialog
101 class MyModelessDialog : public wxDialog
102 {
103 public:
104 MyModelessDialog(wxWindow *parent);
105
106 void OnButton(wxCommandEvent& event);
107 void OnClose(wxCloseEvent& event);
108
109 private:
110 DECLARE_EVENT_TABLE()
111 };
112
113 // A custom modal dialog
114 class MyModalDialog : public wxDialog
115 {
116 public:
117 MyModalDialog(wxWindow *parent);
118
119 void OnButton(wxCommandEvent& event);
120
121 private:
122 wxButton *m_btnModal,
123 *m_btnModeless,
124 *m_btnDelete;
125
126 DECLARE_EVENT_TABLE()
127 };
128
129 #endif // USE_MODAL_PRESENTATION
130
131 // Define a new frame type
132 class MyFrame: public wxFrame
133 {
134 public:
135 MyFrame(wxWindow *parent, const wxString& title);
136
137 void MessageBox(wxCommandEvent& event);
138
139 #if wxUSE_COLOURDLG
140 void ChooseColour(wxCommandEvent& event);
141 #endif // wxUSE_COLOURDLG
142
143 #if wxUSE_FONTDLG
144 void ChooseFont(wxCommandEvent& event);
145 #endif // wxUSE_FONTDLG
146
147 #if wxUSE_LOG_DIALOG
148 void LogDialog(wxCommandEvent& event);
149 #endif // wxUSE_LOG_DIALOG
150
151 #if wxUSE_CHOICEDLG
152 void SingleChoice(wxCommandEvent& event);
153 void MultiChoice(wxCommandEvent& event);
154 #endif // wxUSE_CHOICEDLG
155
156 #if wxUSE_TEXTDLG
157 void TextEntry(wxCommandEvent& event);
158 void PasswordEntry(wxCommandEvent& event);
159 #endif // wxUSE_TEXTDLG
160
161 #if wxUSE_NUMBERDLG
162 void NumericEntry(wxCommandEvent& event);
163 #endif // wxUSE_NUMBERDLG
164
165 #if wxUSE_FILEDLG
166 void FileOpen(wxCommandEvent& event);
167 void FileOpen2(wxCommandEvent& event);
168 void FilesOpen(wxCommandEvent& event);
169 void FileSave(wxCommandEvent& event);
170 #endif // wxUSE_FILEDLG
171
172 #if USE_FILEDLG_GENERIC
173 void FileOpenGeneric(wxCommandEvent& event);
174 void FilesOpenGeneric(wxCommandEvent& event);
175 void FileSaveGeneric(wxCommandEvent& event);
176 #endif // USE_FILEDLG_GENERIC
177
178 #if wxUSE_DIRDLG
179 void DirChoose(wxCommandEvent& event);
180 void DirChooseNew(wxCommandEvent& event);
181 #endif // wxUSE_DIRDLG
182
183 #if USE_DIRDLG_GENERIC
184 void GenericDirChoose(wxCommandEvent& event);
185 #endif // USE_DIRDLG_GENERIC
186
187 #if wxUSE_STARTUP_TIPS
188 void ShowTip(wxCommandEvent& event);
189 #endif // wxUSE_STARTUP_TIPS
190
191 #if USE_MODAL_PRESENTATION
192 void ModalDlg(wxCommandEvent& event);
193 void ModelessDlg(wxCommandEvent& event);
194 #endif // USE_MODAL_PRESENTATION
195
196 #if wxUSE_PROGRESSDLG
197 void ShowProgress(wxCommandEvent& event);
198 #endif // wxUSE_PROGRESSDLG
199
200 #if wxUSE_BUSYINFO
201 void ShowBusyInfo(wxCommandEvent& event);
202 #endif // wxUSE_BUSYINFO
203
204 #if wxUSE_FINDREPLDLG
205 void ShowFindDialog(wxCommandEvent& event);
206 void ShowReplaceDialog(wxCommandEvent& event);
207 void OnFindDialog(wxFindDialogEvent& event);
208 #endif // wxUSE_FINDREPLDLG
209
210 #if USE_COLOURDLG_GENERIC
211 void ChooseColourGeneric(wxCommandEvent& event);
212 #endif // USE_COLOURDLG_GENERIC
213
214 #if USE_FONTDLG_GENERIC
215 void ChooseFontGeneric(wxCommandEvent& event);
216 #endif // USE_FONTDLG_GENERIC
217
218 void OnRequestUserAttention(wxCommandEvent& event);
219 void OnExit(wxCommandEvent& event);
220
221 private:
222 #if wxUSE_DIRDLG
223 void DoDirChoose(int style);
224 #endif // wxUSE_DIRDLG
225
226 #if USE_MODAL_PRESENTATION
227 MyModelessDialog *m_dialog;
228 #endif // USE_MODAL_PRESENTATION
229
230 #if wxUSE_FINDREPLDLG
231 wxFindReplaceData m_findData;
232
233 wxFindReplaceDialog *m_dlgFind,
234 *m_dlgReplace;
235 #endif // wxUSE_FINDREPLDLG
236
237 wxColourData m_clrData;
238
239 DECLARE_EVENT_TABLE()
240 };
241
242 class MyCanvas: public wxScrolledWindow
243 {
244 public:
245 MyCanvas(wxWindow *parent) :
246 wxScrolledWindow(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxNO_FULL_REPAINT_ON_RESIZE) { }
247
248 void OnPaint(wxPaintEvent& event);
249
250 DECLARE_EVENT_TABLE()
251 };
252
253
254 // Menu IDs
255 enum
256 {
257 DIALOGS_CHOOSE_COLOUR = wxID_HIGHEST,
258 DIALOGS_CHOOSE_COLOUR_GENERIC,
259 DIALOGS_CHOOSE_FONT,
260 DIALOGS_CHOOSE_FONT_GENERIC,
261 DIALOGS_MESSAGE_BOX,
262 DIALOGS_SINGLE_CHOICE,
263 DIALOGS_MULTI_CHOICE,
264 DIALOGS_TEXT_ENTRY,
265 DIALOGS_PASSWORD_ENTRY,
266 DIALOGS_FILE_OPEN,
267 DIALOGS_FILE_OPEN2,
268 DIALOGS_FILES_OPEN,
269 DIALOGS_FILE_SAVE,
270 DIALOGS_FILE_OPEN_GENERIC,
271 DIALOGS_FILES_OPEN_GENERIC,
272 DIALOGS_FILE_SAVE_GENERIC,
273 DIALOGS_DIR_CHOOSE,
274 DIALOGS_DIRNEW_CHOOSE,
275 DIALOGS_GENERIC_DIR_CHOOSE,
276 DIALOGS_TIP,
277 DIALOGS_NUM_ENTRY,
278 DIALOGS_LOG_DIALOG,
279 DIALOGS_MODAL,
280 DIALOGS_MODELESS,
281 DIALOGS_MODELESS_BTN,
282 DIALOGS_PROGRESS,
283 DIALOGS_BUSYINFO,
284 DIALOGS_FIND,
285 DIALOGS_REPLACE,
286 DIALOGS_REQUEST
287 };
288
289 #endif
290