1 ///////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/slider.h
3 // Purpose:     wxSlider interface
4 // Author:      Vadim Zeitlin
5 // Modified by:
6 // Created:     09.02.01
7 // Copyright:   (c) 1996-2001 Vadim Zeitlin
8 // Licence:     wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_SLIDER_H_BASE_
12 #define _WX_SLIDER_H_BASE_
13 
14 // ----------------------------------------------------------------------------
15 // headers
16 // ----------------------------------------------------------------------------
17 
18 #include "wx/defs.h"
19 
20 #if wxUSE_SLIDER
21 
22 #include "wx/control.h"
23 
24 // ----------------------------------------------------------------------------
25 // wxSlider flags
26 // ----------------------------------------------------------------------------
27 
28 #define wxSL_HORIZONTAL      wxHORIZONTAL /* 0x0004 */
29 #define wxSL_VERTICAL        wxVERTICAL   /* 0x0008 */
30 
31 #define wxSL_TICKS           0x0010
32 #define wxSL_AUTOTICKS       wxSL_TICKS // we don't support manual ticks
33 #define wxSL_LEFT            0x0040
34 #define wxSL_TOP             0x0080
35 #define wxSL_RIGHT           0x0100
36 #define wxSL_BOTTOM          0x0200
37 #define wxSL_BOTH            0x0400
38 #define wxSL_SELRANGE        0x0800
39 #define wxSL_INVERSE         0x1000
40 #define wxSL_MIN_MAX_LABELS  0x2000
41 #define wxSL_VALUE_LABEL     0x4000
42 #define wxSL_LABELS          (wxSL_MIN_MAX_LABELS|wxSL_VALUE_LABEL)
43 
44 #if WXWIN_COMPATIBILITY_2_6
45     // obsolete
46     #define wxSL_NOTIFY_DRAG     0x0000
47 #endif // WXWIN_COMPATIBILITY_2_6
48 
49 extern WXDLLIMPEXP_DATA_CORE(const char) wxSliderNameStr[];
50 
51 // ----------------------------------------------------------------------------
52 // wxSliderBase: define wxSlider interface
53 // ----------------------------------------------------------------------------
54 
55 class WXDLLIMPEXP_CORE wxSliderBase : public wxControl
56 {
57 public:
58     /* the ctor of the derived class should have the following form:
59 
60     wxSlider(wxWindow *parent,
61              wxWindowID id,
62              int value, int minValue, int maxValue,
63              const wxPoint& pos = wxDefaultPosition,
64              const wxSize& size = wxDefaultSize,
65              long style = wxSL_HORIZONTAL,
66              const wxValidator& validator = wxDefaultValidator,
67              const wxString& name = wxSliderNameStr);
68     */
wxSliderBase()69     wxSliderBase() { }
70 
71     // get/set the current slider value (should be in range)
72     virtual int GetValue() const = 0;
73     virtual void SetValue(int value) = 0;
74 
75     // retrieve/change the range
76     virtual void SetRange(int minValue, int maxValue) = 0;
77     virtual int GetMin() const = 0;
78     virtual int GetMax() const = 0;
SetMin(int minValue)79     void SetMin( int minValue ) { SetRange( minValue , GetMax() ) ; }
SetMax(int maxValue)80     void SetMax( int maxValue ) { SetRange( GetMin() , maxValue ) ; }
81 
82     // the line/page size is the increment by which the slider moves when
83     // cursor arrow key/page up or down are pressed (clicking the mouse is like
84     // pressing PageUp/Down) and are by default set to 1 and 1/10 of the range
85     virtual void SetLineSize(int lineSize) = 0;
86     virtual void SetPageSize(int pageSize) = 0;
87     virtual int GetLineSize() const = 0;
88     virtual int GetPageSize() const = 0;
89 
90     // these methods get/set the length of the slider pointer in pixels
91     virtual void SetThumbLength(int lenPixels) = 0;
92     virtual int GetThumbLength() const = 0;
93 
94     // warning: most of subsequent methods are currently only implemented in
95     //          wxMSW under Win95 and are silently ignored on other platforms
96 
SetTickFreq(int freq)97     void SetTickFreq(int freq) { DoSetTickFreq(freq); }
GetTickFreq()98     virtual int GetTickFreq() const { return 0; }
ClearTicks()99     virtual void ClearTicks() { }
SetTick(int WXUNUSED (tickPos))100     virtual void SetTick(int WXUNUSED(tickPos)) { }
101 
ClearSel()102     virtual void ClearSel() { }
GetSelEnd()103     virtual int GetSelEnd() const { return GetMin(); }
GetSelStart()104     virtual int GetSelStart() const { return GetMax(); }
SetSelection(int WXUNUSED (min),int WXUNUSED (max))105     virtual void SetSelection(int WXUNUSED(min), int WXUNUSED(max)) { }
106 
107 #if WXWIN_COMPATIBILITY_2_8
wxDEPRECATED_INLINE(void SetTickFreq (int freq,int),DoSetTickFreq (freq);)108     wxDEPRECATED_INLINE( void SetTickFreq(int freq, int), DoSetTickFreq(freq); )
109 #endif
110 
111 protected:
112     // Platform-specific implementation of SetTickFreq
113     virtual void DoSetTickFreq(int WXUNUSED(freq)) { /* unsupported by default */ }
114 
115     // choose the default border for this window
GetDefaultBorder()116     virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
117 
118     // adjust value according to wxSL_INVERSE style
ValueInvertOrNot(int value)119     virtual int ValueInvertOrNot(int value) const
120     {
121         if (HasFlag(wxSL_INVERSE))
122             return (GetMax() + GetMin()) - value;
123         else
124             return value;
125     }
126 
127 private:
128     wxDECLARE_NO_COPY_CLASS(wxSliderBase);
129 };
130 
131 // ----------------------------------------------------------------------------
132 // include the real class declaration
133 // ----------------------------------------------------------------------------
134 
135 #if defined(__WXUNIVERSAL__)
136     #include "wx/univ/slider.h"
137 #elif defined(__WXMSW__)
138     #include "wx/msw/slider.h"
139 #elif defined(__WXMOTIF__)
140     #include "wx/motif/slider.h"
141 #elif defined(__WXGTK20__)
142     #include "wx/gtk/slider.h"
143 #elif defined(__WXGTK__)
144     #include "wx/gtk1/slider.h"
145 #elif defined(__WXMAC__)
146     #include "wx/osx/slider.h"
147 #elif defined(__WXCOCOA__)
148     #include "wx/cocoa/slider.h"
149 #elif defined(__WXPM__)
150     #include "wx/os2/slider.h"
151 #endif
152 
153 #endif // wxUSE_SLIDER
154 
155 #endif
156     // _WX_SLIDER_H_BASE_
157