#include "ardour/dB.h"
#include "ardour/rc_configuration.h"
#include "ardour/control_protocol_manager.h"
+#include "ardour/plugin_manager.h"
#include "control_protocol/control_protocol.h"
#include "ardour_window.h"
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
tsf = new BoolOption (
"seamless-loop",
- _("Do seamless looping (not possible when slaved to MTC, JACK etc)"),
+ _("Do seamless looping (not possible when slaved to MTC, LTC etc)"),
sigc::mem_fun (*_rc_config, &RCConfiguration::get_seamless_loop),
sigc::mem_fun (*_rc_config, &RCConfiguration::set_seamless_loop)
);
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",
sigc::mem_fun (*_rc_config, &RCConfiguration::set_monitoring_model)
);
-#ifndef __APPLE__
- /* no JACK monitoring on CoreAudio */
if (AudioEngine::instance()->port_engine().can_monitor_input()) {
mm->add (HardwareMonitoring, _("via Audio Driver"));
}
-#endif
+
mm->add (SoftwareMonitoring, _("ardour"));
mm->add (ExternalMonitoring, _("audio hardware"));
/* SOLO AND MUTE */
+ add_option (_("Solo / mute"), new OptionEditorHeading (_("Solo")));
+
add_option (_("Solo / mute"),
new FaderOption (
"solo-mute-gain",
sigc::mem_fun (*_rc_config, &RCConfiguration::set_mute_affects_main_outs)
));
+ add_option (_("Solo / mute"), new OptionEditorHeading (_("Send Routing")));
+
+ add_option (_("Solo / mute"),
+ new BoolOption (
+ "link-send-and-route-panner",
+ _("Link panners of Aux and External Sends with main panner by default"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_link_send_and_route_panner),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_link_send_and_route_panner)
+ ));
+
add_option (_("MIDI"),
new BoolOption (
"send-midi-clock",
sigc::mem_fun (*_rc_config, &RCConfiguration::set_sound_midi_notes)
));
+ add_option (_("MIDI"), new OptionEditorHeading (_("Midi Audition")));
+
+ ComboOption<std::string>* audition_synth = new ComboOption<std::string> (
+ "midi-audition-synth-uri",
+ _("Midi Audition Synth (LV2)"),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::get_midi_audition_synth_uri),
+ sigc::mem_fun (*_rc_config, &RCConfiguration::set_midi_audition_synth_uri)
+ );
+
+ audition_synth->add(X_(""), _("None"));
+ PluginInfoList all_plugs;
+ PluginManager& manager (PluginManager::instance());
+#ifdef LV2_SUPPORT
+ all_plugs.insert (all_plugs.end(), manager.lv2_plugin_info().begin(), manager.lv2_plugin_info().end());
+
+ for (PluginInfoList::const_iterator i = all_plugs.begin(); i != all_plugs.end(); ++i) {
+ if (manager.get_status (*i) == PluginManager::Hidden) continue;
+ if (!(*i)->is_instrument()) continue;
+ if ((*i)->type != ARDOUR::LV2) continue;
+ audition_synth->add((*i)->unique_id, (*i)->name);
+ }
+#endif
+
+ add_option (_("MIDI"), audition_synth);
+
/* USER INTERACTION */
if (getenv ("ARDOUR_BUNDLED")) {
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);