]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/slider.h
Fixed bug: wxPropertyGridInterface::SetPropertyReadOnly() with wxPG_DONT_RECURSE...
[wxWidgets.git] / interface / wx / slider.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: slider.h
e54c96f1 3// Purpose: interface of wxSlider
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxSlider
7c913512 11
76e9224e
FM
12 A slider is a control with a handle which can be pulled back and forth to
13 change the value.
7c913512 14
23324ae1 15 On Windows, the track bar control is used.
7c913512 16
23324ae1 17 Slider events are handled in the same way as a scrollbar.
7c913512 18
23324ae1 19 @beginStyleTable
8c6791e4 20 @style{wxSL_HORIZONTAL}
23324ae1 21 Displays the slider horizontally (this is the default).
8c6791e4 22 @style{wxSL_VERTICAL}
23324ae1 23 Displays the slider vertically.
8c6791e4 24 @style{wxSL_AUTOTICKS}
23324ae1 25 Displays tick marks.
8c6791e4 26 @style{wxSL_LABELS}
23324ae1 27 Displays minimum, maximum and value labels.
8c6791e4 28 @style{wxSL_LEFT}
23324ae1 29 Displays ticks on the left and forces the slider to be vertical.
8c6791e4 30 @style{wxSL_RIGHT}
23324ae1 31 Displays ticks on the right and forces the slider to be vertical.
8c6791e4 32 @style{wxSL_TOP}
23324ae1 33 Displays ticks on the top.
8c6791e4 34 @style{wxSL_BOTTOM}
23324ae1 35 Displays ticks on the bottom (this is the default).
8c6791e4 36 @style{wxSL_SELRANGE}
23324ae1 37 Allows the user to select a range on the slider. Windows only.
8c6791e4 38 @style{wxSL_INVERSE}
23324ae1
FM
39 Inverses the mininum and maximum endpoints on the slider. Not
40 compatible with wxSL_SELRANGE.
41 @endStyleTable
7c913512 42
3051a44a 43 @beginEventEmissionTable{wxScrollEvent}
76e9224e
FM
44 You can use EVT_COMMAND_SCROLL... macros with window IDs for when intercepting
45 scroll events from controls, or EVT_SCROLL... macros without window IDs for
46 intercepting scroll events from the receiving window -- except for this,
47 the macros behave exactly the same.
48 @event{EVT_SCROLL(func)}
49 Process all scroll events.
50 @event{EVT_SCROLL_TOP(func)}
51 Process wxEVT_SCROLL_TOP scroll-to-top events (minimum position).
52 @event{EVT_SCROLL_BOTTOM(func)}
53 Process wxEVT_SCROLL_BOTTOM scroll-to-bottom events (maximum position).
54 @event{EVT_SCROLL_LINEUP(func)}
55 Process wxEVT_SCROLL_LINEUP line up events.
56 @event{EVT_SCROLL_LINEDOWN(func)}
57 Process wxEVT_SCROLL_LINEDOWN line down events.
58 @event{EVT_SCROLL_PAGEUP(func)}
59 Process wxEVT_SCROLL_PAGEUP page up events.
60 @event{EVT_SCROLL_PAGEDOWN(func)}
61 Process wxEVT_SCROLL_PAGEDOWN page down events.
62 @event{EVT_SCROLL_THUMBTRACK(func)}
63 Process wxEVT_SCROLL_THUMBTRACK thumbtrack events
64 (frequent events sent as the user drags the thumbtrack).
65 @event{EVT_SCROLL_THUMBRELEASE(func)}
66 Process wxEVT_SCROLL_THUMBRELEASE thumb release events.
67 @event{EVT_SCROLL_CHANGED(func)}
68 Process wxEVT_SCROLL_CHANGED end of scrolling events (MSW only).
69 @event{EVT_COMMAND_SCROLL(id, func)}
70 Process all scroll events.
71 @event{EVT_COMMAND_SCROLL_TOP(id, func)}
72 Process wxEVT_SCROLL_TOP scroll-to-top events (minimum position).
73 @event{EVT_COMMAND_SCROLL_BOTTOM(id, func)}
74 Process wxEVT_SCROLL_BOTTOM scroll-to-bottom events (maximum position).
75 @event{EVT_COMMAND_SCROLL_LINEUP(id, func)}
76 Process wxEVT_SCROLL_LINEUP line up events.
77 @event{EVT_COMMAND_SCROLL_LINEDOWN(id, func)}
78 Process wxEVT_SCROLL_LINEDOWN line down events.
79 @event{EVT_COMMAND_SCROLL_PAGEUP(id, func)}
80 Process wxEVT_SCROLL_PAGEUP page up events.
81 @event{EVT_COMMAND_SCROLL_PAGEDOWN(id, func)}
82 Process wxEVT_SCROLL_PAGEDOWN page down events.
83 @event{EVT_COMMAND_SCROLL_THUMBTRACK(id, func)}
84 Process wxEVT_SCROLL_THUMBTRACK thumbtrack events
85 (frequent events sent as the user drags the thumbtrack).
86 @event{EVT_COMMAND_SCROLL_THUMBRELEASE(func)}
87 Process wxEVT_SCROLL_THUMBRELEASE thumb release events.
88 @event{EVT_COMMAND_SCROLL_CHANGED(func)}
89 Process wxEVT_SCROLL_CHANGED end of scrolling events (MSW only).
90 @endEventTable
91
92 @section slider_diff The difference between EVT_SCROLL_THUMBRELEASE and EVT_SCROLL_CHANGED
93
94 The EVT_SCROLL_THUMBRELEASE event is only emitted when actually dragging the
95 thumb using the mouse and releasing it (This EVT_SCROLL_THUMBRELEASE event
96 is also followed by an EVT_SCROLL_CHANGED event).
97
98 The EVT_SCROLL_CHANGED event also occurs when using the keyboard to change
99 the thumb position, and when clicking next to the thumb
100 (In all these cases the EVT_SCROLL_THUMBRELEASE event does not happen).
101 In short, the EVT_SCROLL_CHANGED event is triggered when scrolling/ moving
102 has finished independently of the way it had started.
103 Please see the widgets sample ("Slider" page) to see the difference between
104 EVT_SCROLL_THUMBRELEASE and EVT_SCROLL_CHANGED in action.
105
23324ae1
FM
106 @library{wxcore}
107 @category{ctrl}
7e59b885 108 @appearance{slider.png}
7c913512 109
830b7aa7 110 @see @ref overview_events, wxScrollBar
23324ae1
FM
111*/
112class wxSlider : public wxControl
113{
114public:
7adc2e2e
RR
115 /**
116 Default constructor
117 */
118 wxSlider();
4876436a 119
23324ae1
FM
120 /**
121 Constructor, creating and showing a slider.
3c4f71cc 122
7c913512 123 @param parent
4cc4bfaf 124 Parent window. Must not be @NULL.
7c913512 125 @param id
4cc4bfaf 126 Window identifier. The value wxID_ANY indicates a default value.
7c913512 127 @param value
4cc4bfaf 128 Initial position for the slider.
7c913512 129 @param minValue
4cc4bfaf 130 Minimum slider position.
7c913512 131 @param maxValue
4cc4bfaf 132 Maximum slider position.
e725ba4f 133 @param pos
dc1b07fd
FM
134 Window position.
135 If ::wxDefaultPosition is specified then a default position is chosen.
7c913512 136 @param size
dc1b07fd
FM
137 Window size.
138 If ::wxDefaultSize is specified then a default size is chosen.
7c913512 139 @param style
4cc4bfaf 140 Window style. See wxSlider.
7c913512 141 @param validator
4cc4bfaf 142 Window validator.
7c913512 143 @param name
4cc4bfaf 144 Window name.
3c4f71cc 145
4cc4bfaf 146 @see Create(), wxValidator
23324ae1 147 */
7c913512
FM
148 wxSlider(wxWindow* parent, wxWindowID id, int value,
149 int minValue, int maxValue,
e725ba4f 150 const wxPoint& pos = wxDefaultPosition,
7c913512
FM
151 const wxSize& size = wxDefaultSize,
152 long style = wxSL_HORIZONTAL,
153 const wxValidator& validator = wxDefaultValidator,
11e3af6e 154 const wxString& name = wxSliderNameStr);
23324ae1
FM
155
156 /**
157 Destructor, destroying the slider.
158 */
adaaa686 159 virtual ~wxSlider();
23324ae1
FM
160
161 /**
162 Clears the selection, for a slider with the @b wxSL_SELRANGE style.
3c4f71cc 163
bb69632a 164 @onlyfor{wxmsw}
23324ae1 165 */
adaaa686 166 virtual void ClearSel();
23324ae1
FM
167
168 /**
169 Clears the ticks.
3c4f71cc 170
bb69632a 171 @onlyfor{wxmsw}
23324ae1 172 */
adaaa686 173 virtual void ClearTicks();
23324ae1
FM
174
175 /**
76e9224e
FM
176 Used for two-step slider construction.
177 See wxSlider() for further details.
23324ae1 178 */
43c48e1e
FM
179 bool Create(wxWindow* parent, wxWindowID id, int value, int minValue,
180 int maxValue, const wxPoint& point = wxDefaultPosition,
181 const wxSize& size = wxDefaultSize, long style = wxSL_HORIZONTAL,
23324ae1 182 const wxValidator& validator = wxDefaultValidator,
43c48e1e 183 const wxString& name = wxSliderNameStr);
23324ae1
FM
184
185 /**
186 Returns the line size.
3c4f71cc 187
4cc4bfaf 188 @see SetLineSize()
23324ae1 189 */
adaaa686 190 virtual int GetLineSize() const;
23324ae1
FM
191
192 /**
193 Gets the maximum slider value.
3c4f71cc 194
4cc4bfaf 195 @see GetMin(), SetRange()
23324ae1 196 */
adaaa686 197 virtual int GetMax() const;
23324ae1
FM
198
199 /**
200 Gets the minimum slider value.
3c4f71cc 201
4cc4bfaf 202 @see GetMin(), SetRange()
23324ae1 203 */
adaaa686 204 virtual int GetMin() const;
23324ae1
FM
205
206 /**
207 Returns the page size.
3c4f71cc 208
4cc4bfaf 209 @see SetPageSize()
23324ae1 210 */
adaaa686 211 virtual int GetPageSize() const;
23324ae1
FM
212
213 /**
214 Returns the selection end point.
3c4f71cc 215
bb69632a 216 @onlyfor{wxmsw}
3c4f71cc 217
4cc4bfaf 218 @see GetSelStart(), SetSelection()
23324ae1 219 */
adaaa686 220 virtual int GetSelEnd() const;
23324ae1
FM
221
222 /**
223 Returns the selection start point.
3c4f71cc 224
bb69632a 225 @onlyfor{wxmsw}
3c4f71cc 226
4cc4bfaf 227 @see GetSelEnd(), SetSelection()
23324ae1 228 */
adaaa686 229 virtual int GetSelStart() const;
23324ae1
FM
230
231 /**
232 Returns the thumb length.
3c4f71cc 233
bb69632a 234 @onlyfor{wxmsw}
3c4f71cc 235
4cc4bfaf 236 @see SetThumbLength()
23324ae1 237 */
adaaa686 238 virtual int GetThumbLength() const;
23324ae1
FM
239
240 /**
241 Returns the tick frequency.
3c4f71cc 242
bb69632a 243 @onlyfor{wxmsw}
3c4f71cc 244
4cc4bfaf 245 @see SetTickFreq()
23324ae1 246 */
adaaa686 247 virtual int GetTickFreq() const;
23324ae1
FM
248
249 /**
250 Gets the current slider value.
3c4f71cc 251
4cc4bfaf 252 @see GetMin(), GetMax(), SetValue()
23324ae1 253 */
adaaa686 254 virtual int GetValue() const;
23324ae1
FM
255
256 /**
257 Sets the line size for the slider.
3c4f71cc 258
7c913512 259 @param lineSize
76e9224e
FM
260 The number of steps the slider moves when the user moves it up
261 or down a line.
3c4f71cc 262
4cc4bfaf 263 @see GetLineSize()
23324ae1 264 */
adaaa686 265 virtual void SetLineSize(int lineSize);
23324ae1
FM
266
267 /**
268 Sets the page size for the slider.
3c4f71cc 269
7c913512 270 @param pageSize
4cc4bfaf 271 The number of steps the slider moves when the user pages up or down.
3c4f71cc 272
4cc4bfaf 273 @see GetPageSize()
23324ae1 274 */
adaaa686 275 virtual void SetPageSize(int pageSize);
23324ae1
FM
276
277 /**
278 Sets the minimum and maximum slider values.
3c4f71cc 279
4cc4bfaf 280 @see GetMin(), GetMax()
23324ae1 281 */
adaaa686 282 virtual void SetRange(int minValue, int maxValue);
23324ae1
FM
283
284 /**
285 Sets the selection.
3c4f71cc 286
7c913512 287 @param startPos
4cc4bfaf 288 The selection start position.
7c913512 289 @param endPos
4cc4bfaf 290 The selection end position.
3c4f71cc 291
bb69632a 292 @onlyfor{wxmsw}
3c4f71cc 293
4cc4bfaf 294 @see GetSelStart(), GetSelEnd()
23324ae1 295 */
adaaa686 296 virtual void SetSelection(int startPos, int endPos);
23324ae1
FM
297
298 /**
299 Sets the slider thumb length.
3c4f71cc 300
7c913512 301 @param len
4cc4bfaf 302 The thumb length.
3c4f71cc 303
bb69632a 304 @onlyfor{wxmsw}
3c4f71cc 305
4cc4bfaf 306 @see GetThumbLength()
23324ae1 307 */
adaaa686 308 virtual void SetThumbLength(int len);
23324ae1
FM
309
310 /**
311 Sets a tick position.
3c4f71cc 312
7c913512 313 @param tickPos
4cc4bfaf 314 The tick position.
3c4f71cc 315
bb69632a 316 @onlyfor{wxmsw}
3c4f71cc 317
4cc4bfaf 318 @see SetTickFreq()
23324ae1 319 */
adaaa686 320 virtual void SetTick(int tickPos);
23324ae1
FM
321
322 /**
323 Sets the tick mark frequency and position.
3c4f71cc 324
7c913512 325 @param n
4cc4bfaf 326 Frequency. For example, if the frequency is set to two, a tick mark is
76e9224e 327 displayed for every other increment in the slider's range.
7c913512 328 @param pos
76e9224e 329 Position. Must be greater than zero. @todo: what is this for?
3c4f71cc 330
bb69632a 331 @onlyfor{wxmsw}
3c4f71cc 332
4cc4bfaf 333 @see GetTickFreq()
23324ae1 334 */
adaaa686 335 virtual void SetTickFreq(int n, int pos);
23324ae1
FM
336
337 /**
338 Sets the slider position.
3c4f71cc 339
7c913512 340 @param value
4cc4bfaf 341 The slider position.
23324ae1 342 */
adaaa686 343 virtual void SetValue(int value);
23324ae1 344};
e54c96f1 345