diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 8a34405e23..97f8f1a918 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -390,6 +390,14 @@ ProcessorEntry::setup_visuals () } } + boost::shared_ptr aux; + if ((aux = boost::dynamic_pointer_cast (_processor))) { + if (aux->allow_feedback ()) { + _button.set_name ("processor auxfeedback"); + return; + } + } + switch (_position) { case PreFader: if (_plugin_display) { _plugin_display->set_name ("processor prefader"); } @@ -746,14 +754,22 @@ ProcessorEntry::build_send_options_menu () Menu* menu = manage (new Menu); MenuList& items = menu->items (); - boost::shared_ptr send = boost::dynamic_pointer_cast (_processor); - if (send) { + if (!ARDOUR::Profile->get_mixbus()) { + boost::shared_ptr send = boost::dynamic_pointer_cast (_processor); + if (send) { + items.push_back (CheckMenuElem (_("Link panner controls"))); + Gtk::CheckMenuItem* c = dynamic_cast (&items.back ()); + c->set_active (send->panner_shell()->is_linked_to_route()); + c->signal_toggled().connect (sigc::mem_fun (*this, &ProcessorEntry::toggle_panner_link)); + } + } - items.push_back (CheckMenuElem (_("Link panner controls"))); + boost::shared_ptr aux = boost::dynamic_pointer_cast (_processor); + if (aux) { + items.push_back (CheckMenuElem (_("Allow Feedback Loop"))); Gtk::CheckMenuItem* c = dynamic_cast (&items.back ()); - c->set_active (send->panner_shell()->is_linked_to_route()); - c->signal_toggled().connect (sigc::mem_fun (*this, &ProcessorEntry::toggle_panner_link)); - + c->set_active (aux->allow_feedback()); + c->signal_toggled().connect (sigc::mem_fun (*this, &ProcessorEntry::toggle_allow_feedback)); } return menu; } @@ -767,6 +783,15 @@ ProcessorEntry::toggle_panner_link () } } +void +ProcessorEntry::toggle_allow_feedback () +{ + boost::shared_ptr aux = boost::dynamic_pointer_cast (_processor); + if (aux) { + aux->set_allow_feedback (!aux->allow_feedback ()); + } +} + ProcessorEntry::Control::Control (boost::shared_ptr c, string const & n) : _control (c) , _adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0, 1, 0.01, 0.1) @@ -2135,21 +2160,19 @@ ProcessorBox::show_processor_menu (int arg) } - if (!ARDOUR::Profile->get_mixbus()) { - Gtk::MenuItem* send_menu_item = dynamic_cast(ActionManager::get_widget("/ProcessorMenu/send_options")); - if (send_menu_item) { - if (single_selection && !_route->is_monitor()) { - Menu* m = single_selection->build_send_options_menu (); - if (m && !m->items().empty()) { - send_menu_item->set_submenu (*m); - send_menu_item->set_sensitive (true); - } else { - gtk_menu_item_set_submenu (send_menu_item->gobj(), 0); - send_menu_item->set_sensitive (false); - } + Gtk::MenuItem* send_menu_item = dynamic_cast(ActionManager::get_widget("/ProcessorMenu/send_options")); + if (send_menu_item) { + if (single_selection && !_route->is_monitor()) { + Menu* m = single_selection->build_send_options_menu (); + if (m && !m->items().empty()) { + send_menu_item->set_submenu (*m); + send_menu_item->set_sensitive (true); } else { + gtk_menu_item_set_submenu (send_menu_item->gobj(), 0); send_menu_item->set_sensitive (false); } + } else { + send_menu_item->set_sensitive (false); } } diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 5f0115529c..d7517d9e83 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -239,6 +239,7 @@ private: void toggle_inline_display_visibility (); void toggle_control_visibility (Control *); void toggle_panner_link (); + void toggle_allow_feedback (); class PluginDisplay : public Gtk::DrawingArea { public: diff --git a/gtk2_ardour/themes/dark-ardour.colors b/gtk2_ardour/themes/dark-ardour.colors index d4639277d8..e77401b6d7 100644 --- a/gtk2_ardour/themes/dark-ardour.colors +++ b/gtk2_ardour/themes/dark-ardour.colors @@ -362,6 +362,8 @@ + +