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/*
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
144#if USE_SETTINGS_DIALOG
145// Property sheet dialog
146class SettingsDialog: public wxPropertySheetDialog
147{
148DECLARE_CLASS(SettingsDialog)
149public:
150    SettingsDialog(wxWindow* parent, int dialogType);
151    ~SettingsDialog();
152
153    wxPanel* CreateGeneralSettingsPage(wxWindow* parent);
154    wxPanel* CreateAestheticSettingsPage(wxWindow* parent);
155
156protected:
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
171DECLARE_EVENT_TABLE()
172};
173
174#endif // USE_SETTINGS_DIALOG
175
176// Define a new frame type
177class MyFrame: public wxFrame
178{
179public:
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
276private:
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
297class MyCanvas: public wxScrolledWindow
298{
299public:
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
310enum
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