summaryrefslogtreecommitdiff
path: root/gtk2_ardour/rc_option_editor.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-12-30 17:21:36 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2013-12-30 17:21:36 -0500
commit859bf5257cecf75667ed806f1e324f248c29473a (patch)
treefee3cef44e6fcd5c04e39746080cce85c1a3571d /gtk2_ardour/rc_option_editor.cc
parent501bfdb15a742622b916c1cd8fa4cc658e5ee773 (diff)
add preferences slider for waveview clip level (not working just right yet)
Diffstat (limited to 'gtk2_ardour/rc_option_editor.cc')
-rw-r--r--gtk2_ardour/rc_option_editor.cc54
1 files changed, 54 insertions, 0 deletions
diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc
index 3a5cab0289..815c7f4e7e 100644
--- a/gtk2_ardour/rc_option_editor.cc
+++ b/gtk2_ardour/rc_option_editor.cc
@@ -37,6 +37,8 @@
#include "ardour/control_protocol_manager.h"
#include "control_protocol/control_protocol.h"
+#include "canvas/wave_view.h"
+
#include "ardour_window.h"
#include "ardour_dialog.h"
#include "gui_thread.h"
@@ -569,6 +571,56 @@ private:
HScale _dpi_slider;
};
+class ClipLevelOptions : public OptionEditorBox
+{
+public:
+ ClipLevelOptions (RCConfiguration* c)
+ : _rc_config (c)
+ , _clip_level_adjustment (0, -128.0, 2.0, 0.1, 1.0) /* units of dB */
+ , _clip_level_slider (_clip_level_adjustment)
+ {
+ _clip_level_adjustment.set_value (_rc_config->get_waveform_clip_level ());
+
+ Label* l = manage (new Label (_("Waveform Clip Level (dBFS):")));
+ l->set_name ("OptionsLabel");
+
+ _clip_level_slider.set_update_policy (UPDATE_DISCONTINUOUS);
+ HBox* h = manage (new HBox);
+ h->set_spacing (4);
+ h->pack_start (*l, false, false);
+ h->pack_start (_clip_level_slider, true, true);
+
+ _box->pack_start (*h, false, false);
+
+ _clip_level_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &ClipLevelOptions::clip_level_changed));
+ }
+
+ void parameter_changed (string const & p)
+ {
+ if (p == "waveform-clip-level") {
+ _clip_level_adjustment.set_value (_rc_config->get_waveform_clip_level());
+ }
+ }
+
+ void set_state_from_config ()
+ {
+ parameter_changed ("waveform-clip-level");
+ }
+
+private:
+
+ void clip_level_changed ()
+ {
+ _rc_config->set_waveform_clip_level (_clip_level_adjustment.get_value());
+ /* XXX: should be triggered from the parameter changed signal */
+ ArdourCanvas::WaveView::set_clip_level (_clip_level_adjustment.get_value());
+ }
+
+ RCConfiguration* _rc_config;
+ Adjustment _clip_level_adjustment;
+ HScale _clip_level_slider;
+};
+
class BufferingOptions : public OptionEditorBox
{
public:
@@ -1394,6 +1446,8 @@ RCOptionEditor::RCOptionEditor ()
add_option (_("Editor"), wfsh);
+ add_option (_("Editor"), new ClipLevelOptions (_rc_config));
+
add_option (_("Editor"),
new BoolOption (
"show-waveforms-while-recording",