#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"
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:
public:
ControlSurfacesOptions (Gtk::Window& parent)
: _parent (parent)
+ , _ignore_view_change (0)
{
_store = ListStore::create (_model);
_view.set_model (_store);
void protocol_status_changed (ControlProtocolInfo* cpi) {
/* find the row */
TreeModel::Children rows = _store->children();
+
for (TreeModel::Children::iterator x = rows.begin(); x != rows.end(); ++x) {
+ string n = ((*x)[_model.name]);
+
if ((*x)[_model.protocol_info] == cpi) {
+ _ignore_view_change++;
(*x)[_model.enabled] = (cpi->protocol || cpi->requested);
+ _ignore_view_change--;
break;
}
}
{
TreeModel::Row r = *i;
+ if (_ignore_view_change) {
+ return;
+ }
+
ControlProtocolInfo* cpi = r[_model.protocol_info];
if (!cpi) {
return;
bool const was_enabled = (cpi->protocol != 0);
bool const is_enabled = r[_model.enabled];
+
if (was_enabled != is_enabled) {
+
if (!was_enabled) {
- ControlProtocolManager::instance().instantiate (*cpi);
+ ControlProtocolManager::instance().activate (*cpi);
} else {
Gtk::Window* win = r[_model.editor];
if (win) {
win->hide ();
}
- ControlProtocolManager::instance().teardown (*cpi);
+ ControlProtocolManager::instance().deactivate (*cpi);
if (win) {
delete win;
+ r[_model.editor] = 0;
}
- r[_model.editor] = 0;
- cpi->requested = false;
}
}
TreeView _view;
Gtk::Window& _parent;
PBD::ScopedConnection protocol_status_connection;
+ uint32_t _ignore_view_change;
};
class VideoTimelineOptions : public OptionEditorBox
add_option (_("Editor"), wfsh);
+ add_option (_("Editor"), new ClipLevelOptions (_rc_config));
+
add_option (_("Editor"),
new BoolOption (
"show-waveforms-while-recording",
sigc::mem_fun (*_rc_config, &RCConfiguration::set_update_editor_during_summary_drag)
));
- add_option (_("Editor"),
- new BoolOption (
- "sync-all-route-ordering",
- _("Synchronise editor and mixer track order"),
- sigc::mem_fun (*_rc_config, &RCConfiguration::get_sync_all_route_ordering),
- sigc::mem_fun (*_rc_config, &RCConfiguration::set_sync_all_route_ordering)
- ));
-
add_option (_("Editor"),
new BoolOption (
"link-editor-and-mixer-selection",
rm->add (UserOrdered, _("assigned by user"));
rm->add (MixerOrdered, _("follows order of mixer"));
- rm->add (EditorOrdered, _("follows order of editor"));
add_option (_("Control Surfaces"), rm);