diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-06 01:40:17 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-10 15:27:11 +0200 |
commit | 8427faf1fb7f704c4d3161ab80639e685845508b (patch) | |
tree | dbdf64b8d48c275b0d293703fc4708d419e6087e /gtk2_ardour/option_editor.h | |
parent | 6d0907089550571628b35774c371f2bbdd576fef (diff) |
proper peak-indicator threshold config widget
Diffstat (limited to 'gtk2_ardour/option_editor.h')
-rw-r--r-- | gtk2_ardour/option_editor.h | 29 |
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. |