]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/spinctrl.h
Mention wxFILE_EXISTS_NO_FOLLOW in wxFILE_EXISTS_SYMLINK description.
[wxWidgets.git] / interface / wx / spinctrl.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: spinctrl.h
e54c96f1 3// Purpose: interface of wxSpinCtrl
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxSpinCtrl
7c913512 11
e725ba4f 12 wxSpinCtrl combines wxTextCtrl and wxSpinButton in one control.
7c913512 13
23324ae1 14 @beginStyleTable
8c6791e4 15 @style{wxSP_ARROW_KEYS}
242ec2f7 16 The user can use arrow keys to change the value.
8c6791e4 17 @style{wxSP_WRAP}
242ec2f7
VZ
18 The value wraps at the minimum and maximum.
19 @style{wxTE_PROCESS_ENTER}
3a194bda 20 Indicates that the control should generate @c wxEVT_COMMAND_TEXT_ENTER
242ec2f7
VZ
21 events. Using this style will prevent the user from using the Enter key
22 for dialog navigation (e.g. activating the default button in the
23 dialog) under MSW.
f1ddb476
VZ
24 @style{wxALIGN_LEFT}
25 Same as wxTE_LEFT for wxTextCtrl: the text is left aligned.
33d8353f 26 @style{wxALIGN_CENTRE_HORIZONTAL}
f1ddb476
VZ
27 Same as wxTE_CENTRE for wxTextCtrl: the text is centered.
28 @style{wxALIGN_RIGHT}
29 Same as wxTE_RIGHT for wxTextCtrl: the text is right aligned (this is
30 the default).
23324ae1 31 @endStyleTable
7c913512 32
e725ba4f 33
3051a44a 34 @beginEventEmissionTable{wxSpinEvent}
e725ba4f 35 @event{EVT_SPINCTRL(id, func)}
5adab482
VZ
36 Process a wxEVT_COMMAND_SPINCTRL_UPDATED event, which is generated
37 whenever the numeric value of the spin control is updated.
e725ba4f
FM
38 @endEventTable
39
40 You may also use the wxSpinButton event macros, however the corresponding events
41 will not be generated under all platforms. Finally, if the user modifies the
42 text in the edit part of the spin control directly, the EVT_TEXT is generated,
43 like for the wxTextCtrl. When the use enters text into the text area, the text
44 is not validated until the control loses focus (e.g. by using the TAB key).
45 The value is then adjusted to the range and a wxSpinEvent sent then if the value
46 is different from the last value sent.
47
23324ae1
FM
48 @library{wxcore}
49 @category{ctrl}
7e59b885 50 @appearance{spinctrl.png}
7c913512 51
42561c3c 52 @see wxSpinButton, wxSpinCtrlDouble, wxControl
23324ae1
FM
53*/
54class wxSpinCtrl : public wxControl
55{
56public:
23324ae1 57 /**
d930d177
RR
58 Default constructor.
59 */
60 wxSpinCtrl();
e725ba4f 61
d930d177 62 /**
23324ae1 63 Constructor, creating and showing a spin control.
3c4f71cc 64
6e36db5e
VZ
65 If @a value is non-empty, it will be shown in the text entry part of
66 the control and if it has numeric value, the initial numeric value of
67 the control, as returned by GetValue() will also be determined by it
68 instead of by @a initial. Hence, it only makes sense to specify @a
4d769703
VZ
69 initial if @a value is an empty string or is not convertible to a
70 number, otherwise @a initial is simply ignored and the number specified
71 by @a value is used.
6e36db5e 72
7c913512 73 @param parent
4cc4bfaf 74 Parent window. Must not be @NULL.
7c913512 75 @param value
d930d177 76 Default value (as text).
7c913512 77 @param id
4cc4bfaf 78 Window identifier. The value wxID_ANY indicates a default value.
7c913512 79 @param pos
e725ba4f 80 Window position.
dc1b07fd 81 If ::wxDefaultPosition is specified then a default position is chosen.
7c913512 82 @param size
e725ba4f 83 Window size.
dc1b07fd 84 If ::wxDefaultSize is specified then a default size is chosen.
7c913512 85 @param style
4cc4bfaf 86 Window style. See wxSpinButton.
7c913512 87 @param min
4cc4bfaf 88 Minimal value.
7c913512 89 @param max
4cc4bfaf 90 Maximal value.
7c913512 91 @param initial
4cc4bfaf 92 Initial value.
7c913512 93 @param name
4cc4bfaf 94 Window name.
3c4f71cc 95
4cc4bfaf 96 @see Create()
23324ae1 97 */
11e3af6e 98 wxSpinCtrl(wxWindow* parent, wxWindowID id = wxID_ANY,
7c913512
FM
99 const wxString& value = wxEmptyString,
100 const wxPoint& pos = wxDefaultPosition,
101 const wxSize& size = wxDefaultSize,
102 long style = wxSP_ARROW_KEYS,
103 int min = 0, int max = 100,
11e3af6e 104 int initial = 0, const wxString& name = "wxSpinCtrl");
23324ae1
FM
105
106 /**
23324ae1 107 Creation function called by the spin control constructor.
23324ae1
FM
108 See wxSpinCtrl() for details.
109 */
43c48e1e 110 bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
23324ae1
FM
111 const wxString& value = wxEmptyString,
112 const wxPoint& pos = wxDefaultPosition,
113 const wxSize& size = wxDefaultSize,
43c48e1e
FM
114 long style = wxSP_ARROW_KEYS, int min = 0, int max = 100,
115 int initial = 0, const wxString& name = "wxSpinCtrl");
23324ae1 116
9e565667
VZ
117 /**
118 Returns the numerical base being currently used, 10 by default.
119
120 @see SetBase()
121
122 @since 2.9.5
123 */
124 int GetBase() const;
125
23324ae1
FM
126 /**
127 Gets maximal allowable value.
128 */
328f5751 129 int GetMax() const;
23324ae1
FM
130
131 /**
132 Gets minimal allowable value.
133 */
328f5751 134 int GetMin() const;
23324ae1
FM
135
136 /**
137 Gets the value of the spin control.
138 */
328f5751 139 int GetValue() const;
23324ae1 140
9e565667
VZ
141 /**
142 Sets the base to use for the numbers in this control.
143
144 Currently the only supported values are 10 (which is the default) and
145 16.
146
147 Changing the base allows the user to enter the numbers in the specified
148 base, e.g. with "0x" prefix for hexadecimal numbers, and also displays
149 the numbers in the specified base when they are changed using the spin
150 control arrows.
151
152 @param base
153 Numeric base, currently only 10 and 16 are supported.
154 @return
155 @true if the base was successfully changed or @false if it failed,
156 usually meaning that either the base is not 10 or 16.
157
158 @since 2.9.5
159 */
160 bool SetBase(int base);
161
23324ae1
FM
162 /**
163 Sets range of allowable values.
532324df
VZ
164
165 Notice that calling this method may change the value of the control if
166 it's not inside the new valid range, e.g. it will become @a minVal if
167 it is less than it now. However no @c wxEVT_COMMAND_SPINCTRL_UPDATED
168 event is generated, even if it the value does change.
23324ae1
FM
169 */
170 void SetRange(int minVal, int maxVal);
171
172 /**
7c913512 173 Select the text in the text part of the control between positions
e725ba4f
FM
174 @a from (inclusive) and @a to (exclusive).
175 This is similar to wxTextCtrl::SetSelection().
176
1f1d2182 177 @note this is currently only implemented for Windows and generic versions
e725ba4f 178 of the control.
23324ae1 179 */
0004982c 180 virtual void SetSelection(long from, long to);
23324ae1 181
23324ae1 182 /**
d930d177 183 Sets the value of the spin control. Use the variant using int instead.
23324ae1 184 */
adaaa686 185 virtual void SetValue(const wxString& text);
d930d177
RR
186
187 /**
188 Sets the value of the spin control.
189 */
7c913512 190 void SetValue(int value);
23324ae1 191};
e54c96f1 192
42427d89
VZ
193/**
194 @class wxSpinCtrlDouble
195
196 wxSpinCtrlDouble combines wxTextCtrl and wxSpinButton in one control and
197 displays a real number. (wxSpinCtrl displays an integer.)
198
199 @beginStyleTable
200 @style{wxSP_ARROW_KEYS}
201 The user can use arrow keys to change the value.
202 @style{wxSP_WRAP}
203 The value wraps at the minimum and maximum.
204 @endStyleTable
205
ba81782a
VZ
206 @beginEventEmissionTable{wxSpinDoubleEvent}
207 @event{EVT_SPINCTRLDOUBLE(id, func)}
208 Generated whenever the numeric value of the spin control is changed,
209 that is, when the up/down spin button is clicked, when ENTER is pressed,
210 or the control loses focus and the new value is different from the last.
211 See wxSpinDoubleEvent.
212 @endEventTable
213
42427d89
VZ
214 @library{wxcore}
215 @category{ctrl}
216 @appearance{spinctrldouble.png}
217
218 @see wxSpinButton, wxSpinCtrl, wxControl
219*/
220class wxSpinCtrlDouble : public wxControl
221{
222public:
223 /**
224 Default constructor.
225 */
226 wxSpinCtrlDouble();
227
228 /**
229 Constructor, creating and showing a spin control.
230
231 @param parent
232 Parent window. Must not be @NULL.
233 @param value
234 Default value (as text).
235 @param id
236 Window identifier. The value wxID_ANY indicates a default value.
237 @param pos
238 Window position.
239 If ::wxDefaultPosition is specified then a default position is chosen.
240 @param size
241 Window size.
242 If ::wxDefaultSize is specified then a default size is chosen.
243 @param style
244 Window style. See wxSpinButton.
245 @param min
246 Minimal value.
247 @param max
248 Maximal value.
249 @param initial
250 Initial value.
251 @param inc
252 Increment value.
253 @param name
254 Window name.
255
256 @see Create()
257 */
258 wxSpinCtrlDouble(wxWindow* parent, wxWindowID id = -1,
259 const wxString& value = wxEmptyString,
260 const wxPoint& pos = wxDefaultPosition,
261 const wxSize& size = wxDefaultSize,
262 long style = wxSP_ARROW_KEYS,
263 double min = 0, double max = 100,
264 double initial = 0, double inc = 1,
265 const wxString& name = wxT("wxSpinCtrlDouble"));
266
267 /**
268 Creation function called by the spin control constructor.
269 See wxSpinCtrlDouble() for details.
270 */
271 bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
272 const wxString& value = wxEmptyString,
273 const wxPoint& pos = wxDefaultPosition,
274 const wxSize& size = wxDefaultSize,
275 long style = wxSP_ARROW_KEYS, double min = 0, double max = 100,
276 double initial = 0, double inc = 1,
277 const wxString& name = "wxSpinCtrlDouble");
278
279 /**
280 Gets the number of digits in the display.
281 */
282 unsigned int GetDigits() const;
283
284 /**
285 Gets the increment value.
286 */
287 double GetIncrement() const;
288
289 /**
290 Gets maximal allowable value.
291 */
292 double GetMax() const;
293
294 /**
295 Gets minimal allowable value.
296 */
297 double GetMin() const;
298
299 /**
300 Gets the value of the spin control.
301 */
302 double GetValue() const;
303
304 /**
305 Sets the number of digits in the display.
306 */
307 void SetDigits(unsigned int digits);
308
309 /**
310 Sets the increment value.
39d0e65b
SL
311 @note You may also need to increase the number of visible digits
312 using SetDigits
42427d89
VZ
313 */
314 void SetIncrement(double inc);
315
316 /**
317 Sets range of allowable values.
318 */
319 void SetRange(double minVal, double maxVal);
320
321 /**
322 Sets the value of the spin control. Use the variant using double instead.
323 */
324 virtual void SetValue(const wxString& text);
325
326 /**
327 Sets the value of the spin control.
328 */
329 void SetValue(double value);
330};
ba81782a
VZ
331
332/**
333 @class wxSpinDoubleEvent
334
335 This event class is used for the events generated by wxSpinCtrlDouble.
336
337 @beginEventTable{wxSpinDoubleEvent}
338 @event{EVT_SPINCTRLDOUBLE(id, func)}
339 Generated whenever the numeric value of the spin control is changed,
340 that is, when the up/down spin button is clicked, when ENTER is pressed,
341 or the control loses focus and the new value is different from the last.
342 See wxSpinDoubleEvent.
343 @endEventTable
344
345 @library{wxcore}
346 @category{events}
347
348 @see wxSpinCtrlDouble
349*/
350class wxSpinDoubleEvent : public wxNotifyEvent
351{
352public:
353 /**
354 The constructor. Not normally used by the user code.
355 */
356 wxSpinDoubleEvent(wxEventType commandType = wxEVT_NULL, int winid = 0,
357 double value = 0);
358
359 /**
360 The copy constructor.
361 */
362 wxSpinDoubleEvent(const wxSpinDoubleEvent& event);
363
364 /**
365 Returns the value associated with this spin control event.
366 */
367 double GetValue() const;
368
369 /**
370 Set the value associated with the event.
371 (Not normally used by user code.)
372 */
373 void SetValue(double value);
374};
7106fc46
RD
375
376wxEventType wxEVT_COMMAND_SPINCTRL_UPDATED;
377wxEventType wxEVT_COMMAND_SPINCTRLDOUBLE_UPDATED;