summaryrefslogtreecommitdiff
path: root/gtk2_ardour/option_editor.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-06 01:40:17 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:11 +0200
commit8427faf1fb7f704c4d3161ab80639e685845508b (patch)
treedbdf64b8d48c275b0d293703fc4708d419e6087e /gtk2_ardour/option_editor.h
parent6d0907089550571628b35774c371f2bbdd576fef (diff)
proper peak-indicator threshold config widget
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.