]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/generic/choicdgg.h
extracted common initialization/cleanup functions in common/init.cpp; standardized...
[wxWidgets.git] / include / wx / generic / choicdgg.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: wx/generic/choicdgg.h
3// Purpose: Generic choice dialogs
4// Author: Julian Smart
5// Modified by: 03.11.00: VZ to add wxArrayString and multiple sel functions
6// Created: 01/02/97
7// RCS-ID: $Id$
8// Copyright: (c) wxWindows team
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef __CHOICEDLGH_G__
13#define __CHOICEDLGH_G__
14
15#if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "choicdgg.h"
17#endif
18
19#include "wx/dynarray.h"
20#include "wx/dialog.h"
21
22class WXDLLEXPORT wxListBox;
23
24// ----------------------------------------------------------------------------
25// some (ugly...) constants
26// ----------------------------------------------------------------------------
27
28#define wxCHOICE_HEIGHT 150
29#define wxCHOICE_WIDTH 200
30
31#define wxCHOICEDLG_STYLE \
32 (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCANCEL | wxCENTRE)
33
34// ----------------------------------------------------------------------------
35// wxAnyChoiceDialog: a base class for dialogs containing a listbox
36// ----------------------------------------------------------------------------
37
38class WXDLLEXPORT wxAnyChoiceDialog : public wxDialog
39{
40public:
41 wxAnyChoiceDialog() { }
42
43 wxAnyChoiceDialog(wxWindow *parent,
44 const wxString& message,
45 const wxString& caption,
46 int n, const wxString *choices,
47 long styleDlg = wxCHOICEDLG_STYLE,
48 const wxPoint& pos = wxDefaultPosition,
49 long styleLbox = wxLB_ALWAYS_SB)
50 {
51 (void)Create(parent, message, caption, n, choices,
52 styleDlg, pos, styleLbox);
53 }
54
55 bool Create(wxWindow *parent,
56 const wxString& message,
57 const wxString& caption,
58 int n, const wxString *choices,
59 long styleDlg = wxCHOICEDLG_STYLE,
60 const wxPoint& pos = wxDefaultPosition,
61 long styleLbox = wxLB_ALWAYS_SB);
62
63protected:
64 wxListBox *m_listbox;
65
66 DECLARE_NO_COPY_CLASS(wxAnyChoiceDialog)
67};
68
69// ----------------------------------------------------------------------------
70// wxSingleChoiceDialog: a dialog with single selection listbox
71// ----------------------------------------------------------------------------
72
73class WXDLLEXPORT wxSingleChoiceDialog : public wxAnyChoiceDialog
74{
75public:
76 wxSingleChoiceDialog()
77 {
78 m_selection = -1;
79 }
80
81 wxSingleChoiceDialog(wxWindow *parent,
82 const wxString& message,
83 const wxString& caption,
84 int n,
85 const wxString *choices,
86 char **clientData = (char **)NULL,
87 long style = wxCHOICEDLG_STYLE,
88 const wxPoint& pos = wxDefaultPosition);
89
90 bool Create(wxWindow *parent,
91 const wxString& message,
92 const wxString& caption,
93 int n,
94 const wxString *choices,
95 char **clientData = (char **)NULL,
96 long style = wxCHOICEDLG_STYLE,
97 const wxPoint& pos = wxDefaultPosition);
98
99 void SetSelection(int sel);
100 int GetSelection() const { return m_selection; }
101 wxString GetStringSelection() const { return m_stringSelection; }
102
103 // obsolete function (NB: no need to make it return wxChar, it's untyped)
104 char *GetSelectionClientData() const { return (char *)m_clientData; }
105
106 // implementation from now on
107 void OnOK(wxCommandEvent& event);
108 void OnListBoxDClick(wxCommandEvent& event);
109
110 // old, deprecated methods
111#if WXWIN_COMPATIBILITY_2
112 wxSingleChoiceDialog(wxWindow *parent,
113 const wxString& message,
114 const wxString& caption,
115 const wxStringList& choices,
116 char **clientData = (char **)NULL,
117 long style = wxCHOICEDLG_STYLE,
118 const wxPoint& pos = wxDefaultPosition);
119
120 bool Create(wxWindow *parent,
121 const wxString& message,
122 const wxString& caption,
123 const wxStringList& choices,
124 char **clientData = (char **)NULL,
125 long style = wxCHOICEDLG_STYLE,
126 const wxPoint& pos = wxDefaultPosition);
127#endif // WXWIN_COMPATIBILITY_2
128
129protected:
130 int m_selection;
131 wxString m_stringSelection;
132
133private:
134 DECLARE_DYNAMIC_CLASS(wxSingleChoiceDialog)
135 DECLARE_EVENT_TABLE()
136};
137
138// ----------------------------------------------------------------------------
139// wxMultiChoiceDialog: a dialog with multi selection listbox
140// ----------------------------------------------------------------------------
141
142class WXDLLEXPORT wxMultiChoiceDialog : public wxAnyChoiceDialog
143{
144public:
145 wxMultiChoiceDialog() { }
146
147 wxMultiChoiceDialog(wxWindow *parent,
148 const wxString& message,
149 const wxString& caption,
150 int n,
151 const wxString *choices,
152 long style = wxCHOICEDLG_STYLE,
153 const wxPoint& pos = wxDefaultPosition)
154 {
155 (void)Create(parent, message, caption, n, choices, style, pos);
156 }
157
158 bool Create(wxWindow *parent,
159 const wxString& message,
160 const wxString& caption,
161 int n,
162 const wxString *choices,
163 long style = wxCHOICEDLG_STYLE,
164 const wxPoint& pos = wxDefaultPosition);
165
166 void SetSelections(const wxArrayInt& selections);
167 wxArrayInt GetSelections() const { return m_selections; }
168
169 // implementation from now on
170 virtual bool TransferDataFromWindow();
171
172protected:
173 wxArrayInt m_selections;
174
175private:
176 DECLARE_DYNAMIC_CLASS(wxMultiChoiceDialog)
177};
178
179// ----------------------------------------------------------------------------
180// wrapper functions which can be used to get selection(s) from the user
181// ----------------------------------------------------------------------------
182
183// get the user selection as a string
184WXDLLEXPORT wxString wxGetSingleChoice(const wxString& message,
185 const wxString& caption,
186 const wxArrayString& choices,
187 wxWindow *parent = (wxWindow *) NULL,
188 int x = -1,
189 int y = -1,
190 bool centre = TRUE,
191 int width = wxCHOICE_WIDTH,
192 int height = wxCHOICE_HEIGHT);
193
194WXDLLEXPORT wxString wxGetSingleChoice(const wxString& message,
195 const wxString& caption,
196 int n, const wxString *choices,
197 wxWindow *parent = (wxWindow *) NULL,
198 int x = -1,
199 int y = -1,
200 bool centre = TRUE,
201 int width = wxCHOICE_WIDTH,
202 int height = wxCHOICE_HEIGHT);
203
204// Same as above but gets position in list of strings, instead of string,
205// or -1 if no selection
206WXDLLEXPORT int wxGetSingleChoiceIndex(const wxString& message,
207 const wxString& caption,
208 const wxArrayString& choices,
209 wxWindow *parent = (wxWindow *) NULL,
210 int x = -1,
211 int y = -1,
212 bool centre = TRUE,
213 int width = wxCHOICE_WIDTH,
214 int height = wxCHOICE_HEIGHT);
215
216WXDLLEXPORT int wxGetSingleChoiceIndex(const wxString& message,
217 const wxString& caption,
218 int n, const wxString *choices,
219 wxWindow *parent = (wxWindow *) NULL,
220 int x = -1,
221 int y = -1,
222 bool centre = TRUE,
223 int width = wxCHOICE_WIDTH,
224 int height = wxCHOICE_HEIGHT);
225
226// Return client data instead or NULL if cancelled
227WXDLLEXPORT void* wxGetSingleChoiceData(const wxString& message,
228 const wxString& caption,
229 const wxArrayString& choices,
230 void **client_data,
231 wxWindow *parent = (wxWindow *) NULL,
232 int x = -1, int y = -1,
233 bool centre = TRUE,
234 int width = wxCHOICE_WIDTH,
235 int height = wxCHOICE_HEIGHT);
236
237WXDLLEXPORT void* wxGetSingleChoiceData(const wxString& message,
238 const wxString& caption,
239 int n, const wxString *choices,
240 void **client_data,
241 wxWindow *parent = (wxWindow *) NULL,
242 int x = -1, int y = -1,
243 bool centre = TRUE,
244 int width = wxCHOICE_WIDTH,
245 int height = wxCHOICE_HEIGHT);
246
247// fill the array with the indices of the chosen items, it will be empty
248// if no items were selected or Cancel was pressed - return the number of
249// selections
250WXDLLEXPORT size_t wxGetMultipleChoices(wxArrayInt& selections,
251 const wxString& message,
252 const wxString& caption,
253 int n, const wxString *choices,
254 wxWindow *parent = (wxWindow *) NULL,
255 int x = -1,
256 int y = -1,
257 bool centre = TRUE,
258 int width = wxCHOICE_WIDTH,
259 int height = wxCHOICE_HEIGHT);
260
261WXDLLEXPORT size_t wxGetMultipleChoices(wxArrayInt& selections,
262 const wxString& message,
263 const wxString& caption,
264 const wxArrayString& choices,
265 wxWindow *parent = (wxWindow *) NULL,
266 int x = -1,
267 int y = -1,
268 bool centre = TRUE,
269 int width = wxCHOICE_WIDTH,
270 int height = wxCHOICE_HEIGHT);
271
272// ----------------------------------------------------------------------------
273// these methods are for backwards compatibility only, not documented and
274// deprecated
275// ----------------------------------------------------------------------------
276
277#if WXWIN_COMPATIBILITY_2
278
279WXDLLEXPORT wxString wxGetSingleChoice(const wxString& message,
280 const wxString& caption,
281 int n, wxChar *choices[],
282 wxWindow *parent = (wxWindow *) NULL,
283 int x = -1,
284 int y = -1,
285 bool centre = TRUE,
286 int width = wxCHOICE_WIDTH,
287 int height = wxCHOICE_HEIGHT);
288
289WXDLLEXPORT int wxGetSingleChoiceIndex(const wxString& message,
290 const wxString& caption,
291 int n, wxChar *choices[],
292 wxWindow *parent = (wxWindow *) NULL,
293 int x = -1,
294 int y = -1,
295 bool centre = TRUE,
296 int width = wxCHOICE_WIDTH,
297 int height = wxCHOICE_HEIGHT);
298
299WXDLLEXPORT void* wxGetSingleChoiceData(const wxString& message,
300 const wxString& caption,
301 int n, wxChar **choices,
302 void **client_data,
303 wxWindow *parent = (wxWindow *) NULL,
304 int x = -1, int y = -1,
305 bool centre = TRUE,
306 int width = wxCHOICE_WIDTH,
307 int height = wxCHOICE_HEIGHT);
308
309
310#endif // WXWIN_COMPATIBILITY_2
311
312#endif // __CHOICEDLGH_G__
313