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 | |
parent | 6d0907089550571628b35774c371f2bbdd576fef (diff) |
proper peak-indicator threshold config widget
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/option_editor.h | 29 | ||||
-rw-r--r-- | gtk2_ardour/rc_option_editor.cc | 19 |
2 files changed, 40 insertions, 8 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. diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 4edf1a04f4..1b7bb3ebc4 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -1938,13 +1938,18 @@ RCOptionEditor::RCOptionEditor () add_option (S_("Preferences|GUI"), mlu); - add_option (S_("Preferences|GUI"), - new FaderOption ( - "meter-peak", - _("Meter Peak Threshold"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_peak), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_peak) - )); + Gtk::Adjustment *mpk = manage (new Gtk::Adjustment(-.1, -10, 0, .01, .1)); + HSliderOption *mpks = new HSliderOption("meter-peak", _("Meter peak threshold [dBFS]"), + mpk, + sigc::mem_fun (*_rc_config, &RCConfiguration::get_meter_peak), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_meter_peak) + ); + + Gtkmm2ext::UI::instance()->set_tip + (mpks->tip_widget(), + _("Specify the audio signal level in dbFS at and above which the meter-peak indicator will flash red.")); + + add_option (S_("Preferences|GUI"), mpks); } void |