]> git.tdb.fi Git - libs/gltk.git/blob - source/slider.h
6612c619aaaea80ae2445cd548edd9d38fcd742e
[libs/gltk.git] / source / slider.h
1 #ifndef MSP_GLTK_SLIDER_H_
2 #define MSP_GLTK_SLIDER_H_
3
4 #include <sigc++/sigc++.h>
5 #include "widget.h"
6
7 namespace Msp {
8 namespace GLtk {
9
10 /**
11 Sliders are used to adjust numeric values visually.  This class provides the
12 common interface for sliders - see classes HSlider and VSlider for concrete
13 variations.
14 */
15 class Slider: public Widget
16 {
17 public:
18         class Loader: public DataFile::DerivedObjectLoader<Slider, Widget::Loader>
19         {
20         public:
21                 Loader(Slider &);
22         };
23
24         sigc::signal<void, double> signal_value_changed;
25
26 protected:
27         double min, max;
28         double value;
29         double step;
30
31         bool dragging;
32         double drag_start_pos;
33         double drag_start_value;
34         unsigned drag_area_size;
35
36         Slider();
37
38 public:
39         void set_value(double);
40         void set_range(double, double);
41         void set_step(double);
42         double get_value() const { return value; }
43
44 protected:
45         void start_drag(int);
46         void drag(int);
47         void end_drag();
48 };
49
50 } // namespace GLtk
51 } // namespace Msp
52
53 #endif