summaryrefslogtreecommitdiff
path: root/gtk2_ardour
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
parent6d0907089550571628b35774c371f2bbdd576fef (diff)
proper peak-indicator threshold config widget
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/option_editor.h29
-rw-r--r--gtk2_ardour/rc_option_editor.cc19
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