summaryrefslogtreecommitdiff
path: root/gtk2_ardour/option_editor.h
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/option_editor.h')
-rw-r--r--gtk2_ardour/option_editor.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/gtk2_ardour/option_editor.h b/gtk2_ardour/option_editor.h
index d39abfa810..1ee4baa938 100644
--- a/gtk2_ardour/option_editor.h
+++ b/gtk2_ardour/option_editor.h
@@ -310,7 +310,31 @@ public:
_hscale = manage (new Gtk::HScale(adj));
}
- void set_state_from_config () { }
+ HSliderOption (
+ std::string const & i,
+ std::string const & n,
+ Gtk::Adjustment *adj,
+ sigc::slot<float> g,
+ sigc::slot<bool, float> s
+ )
+ : Option (i, n)
+ , _get (g)
+ , _set (s)
+ , _adj (adj)
+ {
+ _label = manage (new Gtk::Label (n + ":"));
+ _label->set_alignment (0, 0.5);
+ _hscale = manage (new Gtk::HScale(*_adj));
+ _adj->signal_value_changed().connect (sigc::mem_fun (*this, &HSliderOption::changed));
+ }
+
+ void set_state_from_config () {
+ if (_adj) _adj->set_value (_get());
+ }
+
+ void changed () {
+ if (_adj) _set (_adj->get_value ());
+ }
void add_to_page (OptionEditorPage* p)
{
@@ -324,8 +348,11 @@ public:
Gtk::Widget& tip_widget() { return *_hscale; }
private:
+ sigc::slot<float> _get;
+ sigc::slot<bool, float> _set;
Gtk::Label* _label;
Gtk::HScale* _hscale;
+ Gtk::Adjustment* _adj;
};
/** Component which provides the UI to handle an enumerated option using a GTK ComboBox.