X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_pin_dialog.cc;h=249517d1c7e8ef32e542292ea8cb1ce2a9ad8313;hb=95a61717faa4b427be0e7821ee91f7df81065815;hp=ed7032d0c8a59aaf6f96b06c097e01dcec76ac05;hpb=6c19a776f43b4a9869780e3312764d039a16cd39;p=ardour.git diff --git a/gtk2_ardour/plugin_pin_dialog.cc b/gtk2_ardour/plugin_pin_dialog.cc index ed7032d0c8..249517d1c7 100644 --- a/gtk2_ardour/plugin_pin_dialog.cc +++ b/gtk2_ardour/plugin_pin_dialog.cc @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -47,6 +48,7 @@ #include "gui_thread.h" #include "timers.h" #include "ui_config.h" +#include "utils.h" #include "pbd/i18n.h" @@ -304,6 +306,16 @@ PluginPinWidget::idle_update () return false; } +void +PluginPinWidget::error_message_dialog (std::string const& msg) const +{ + assert (_session); + Gtk::MessageDialog d ( + _session->actively_recording () ? _("Cannot perform operation while actively recording.") : msg + , false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_OK, true); + d.run(); +} + void PluginPinWidget::plugin_reconfigured () @@ -1555,14 +1567,15 @@ PluginPinWidget::handle_disconnect (const CtrlElem &e, bool no_signal) void PluginPinWidget::toggle_sidechain () { - if (_session && _session->actively_recording ()) { return; } - _route ()->add_remove_sidechain (_pi, !_pi->has_sidechain ()); + if (!_route ()->add_remove_sidechain (_pi, !_pi->has_sidechain ())) { + error_message_dialog (_("Failed to toggle sidechain.")); + } } void PluginPinWidget::connect_sidechain () { - if (!_session) { return; } + assert (_session); if (_sidechain_selector == 0) { _sidechain_selector = new IOSelectorWindow (_session, _pi->sidechain_input ()); @@ -1578,10 +1591,14 @@ PluginPinWidget::connect_sidechain () void PluginPinWidget::reset_configuration () { + bool rv; if (_set_config.get_active ()) { - _route ()->reset_plugin_insert (_pi); + rv = _route ()->reset_plugin_insert (_pi); } else { - _route ()->customize_plugin_insert (_pi, _n_plugins, _out, _sinks); + rv = _route ()->customize_plugin_insert (_pi, _n_plugins, _out, _sinks); + } + if (!rv) { + error_message_dialog (_("Failed to reset plugin configuration.")); } } @@ -1594,47 +1611,56 @@ PluginPinWidget::reset_mapping () void PluginPinWidget::select_output_preset (uint32_t n_audio) { - if (_session && _session->actively_recording ()) { return; } ChanCount out (DataType::AUDIO, n_audio); - _route ()->plugin_preset_output (_pi, out); + if (!_route ()->plugin_preset_output (_pi, out)) { + error_message_dialog (_("Failed to change channel preset.")); + } } void PluginPinWidget::add_remove_plugin_clicked (bool add) { - if (_session && _session->actively_recording ()) { return; } ChanCount out = _out; ChanCount sinks = _sinks; assert (add || _n_plugins > 0); - _route ()->customize_plugin_insert (_pi, _n_plugins + (add ? 1 : -1), out, sinks); + if (!_route ()->customize_plugin_insert (_pi, _n_plugins + (add ? 1 : -1), out, sinks)) { + error_message_dialog (_("Failed to change instance count")); + } } void PluginPinWidget::add_remove_port_clicked (bool add, ARDOUR::DataType dt) { - if (_session && _session->actively_recording ()) { return; } ChanCount out = _out; ChanCount sinks = _sinks; assert (add || out.get (dt) > 0); out.set (dt, out.get (dt) + (add ? 1 : -1)); - _route ()->customize_plugin_insert (_pi, _n_plugins, out, sinks); + if (!_route ()->customize_plugin_insert (_pi, _n_plugins, out, sinks)) { + error_message_dialog (_("Failed to alter plugin output configuration.")); + } } void PluginPinWidget::add_remove_inpin_clicked (bool add, ARDOUR::DataType dt) { - if (_session && _session->actively_recording ()) { return; } ChanCount out = _out; ChanCount sinks = _sinks; assert (add || sinks.get (dt) > 0); sinks.set (dt, sinks.get (dt) + (add ? 1 : -1)); - _route ()->customize_plugin_insert (_pi, _n_plugins, out, sinks); + if (!_route ()->customize_plugin_insert (_pi, _n_plugins, out, sinks)) { + error_message_dialog (_("Failed to alter plugin input configuration.")); + } } void PluginPinWidget::add_sidechain_port (DataType dt) { - if (_session && _session->actively_recording ()) { return; } + assert (_session); + if (_session->actively_recording ()) { + error_message_dialog (/* unused */ ""); + return; + } + boost::shared_ptr io = _pi->sidechain_input (); if (!io) { return; @@ -1648,7 +1674,11 @@ PluginPinWidget::add_sidechain_port (DataType dt) void PluginPinWidget::remove_port (boost::weak_ptr wp) { - if (_session && _session->actively_recording ()) { return; } + assert (_session); + if (_session->actively_recording ()) { + error_message_dialog (/* unused */ ""); + return; + } boost::shared_ptr p = wp.lock (); boost::shared_ptr io = _pi->sidechain_input (); if (!io || !p) { @@ -1660,7 +1690,12 @@ PluginPinWidget::remove_port (boost::weak_ptr wp) void PluginPinWidget::disconnect_port (boost::weak_ptr wp) { - if (_session && _session->actively_recording ()) { return; } + assert (_session); + if (_session->actively_recording ()) { + error_message_dialog (/* unused */ ""); + return; + } + boost::shared_ptr p = wp.lock (); boost::shared_ptr io = _pi->sidechain_input (); if (!io || !p) { @@ -1672,7 +1707,12 @@ PluginPinWidget::disconnect_port (boost::weak_ptr wp) void PluginPinWidget::connect_port (boost::weak_ptr wp0, boost::weak_ptr wp1) { - if (_session && _session->actively_recording ()) { return; } + assert (_session); + if (_session->actively_recording ()) { + error_message_dialog (/* unused */ ""); + return; + } + boost::shared_ptr p0 = wp0.lock (); boost::shared_ptr p1 = wp1.lock (); boost::shared_ptr io = _pi->sidechain_input (); @@ -1688,11 +1728,16 @@ PluginPinWidget::connect_port (boost::weak_ptr wp0, boost::weak_pt void PluginPinWidget::add_send_from (boost::weak_ptr wp, boost::weak_ptr wr) { - if (_session && _session->actively_recording ()) { return; } + assert (_session); + if (_session->actively_recording ()) { + error_message_dialog (/* unused */ ""); + return; + } + boost::shared_ptr p = wp.lock (); boost::shared_ptr r = wr.lock (); boost::shared_ptr io = _pi->sidechain_input (); - if (!p || !r || !io || !_session) { + if (!p || !r || !io) { return; } @@ -1733,7 +1778,12 @@ PluginPinWidget::add_send_from (boost::weak_ptr wp, boost::weak_pt bool PluginPinWidget::sc_input_release (GdkEventButton *ev) { - if (_session && _session->actively_recording ()) { return false; } + assert (_session); + if (_session->actively_recording ()) { + error_message_dialog (/* unused */ ""); + return false; + } + if (ev->button == 3) { connect_sidechain (); } @@ -1744,8 +1794,14 @@ bool PluginPinWidget::sc_input_press (GdkEventButton *ev, boost::weak_ptr wp) { using namespace Menu_Helpers; - if (!_session || _session->actively_recording ()) { return false; } - if (!_session->engine ().connected ()) { return false; } + assert (_session); + if (!ARDOUR_UI_UTILS::engine_is_running ()) { + return false; + } + if (_session->actively_recording ()) { + error_message_dialog (/* unused */ ""); + return false; + } if (ev->button == 1) { MenuList& citems = input_menu.items (); @@ -1768,8 +1824,7 @@ PluginPinWidget::sc_input_press (GdkEventButton *ev, boost::weak_ptr routes = _session->get_routes (); - RouteList copy = *routes; + RouteList copy = _session->get_routelist (); copy.sort (Stripable::Sorter(true)); uint32_t added = 0; for (ARDOUR::RouteList::const_iterator i = copy.begin (); i != copy.end (); ++i) {