From b759bae0cde1661d4d12f370facbf5b8189eacc9 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Thu, 2 Feb 2017 11:02:10 -0600 Subject: Right-click on a VCA to assign it to the selected channels. --- gtk2_ardour/mixer_strip.cc | 16 ++++++++++++++++ gtk2_ardour/mixer_strip.h | 3 +++ gtk2_ardour/mixer_ui.cc | 4 ---- gtk2_ardour/vca_master_strip.cc | 15 +++++++++++++++ gtk2_ardour/vca_master_strip.h | 2 ++ 5 files changed, 36 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index af56b4fc5b..1a82d7025b 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -426,6 +426,22 @@ MixerStrip::~MixerStrip () _entered_mixer_strip = NULL; } +void +MixerStrip::vca_assign (boost::shared_ptr vca) +{ + boost::shared_ptr sl = boost::dynamic_pointer_cast ( route() ); + if (sl) + sl->assign(vca); +} + +void +MixerStrip::vca_unassign (boost::shared_ptr vca) +{ + boost::shared_ptr sl = boost::dynamic_pointer_cast ( route() ); + if (sl) + sl->unassign(vca); +} + bool MixerStrip::mixer_strip_enter_event (GdkEventCrossing* /*ev*/) { diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index abafb3b1f3..e40c38ff40 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -185,6 +185,9 @@ class MixerStrip : public AxisView, public RouteUI, public Gtk::EventBox Gtk::Table mute_solo_table; Gtk::Table bottom_button_table; + void vca_assign (boost::shared_ptr); + void vca_unassign (boost::shared_ptr); + void meter_changed (); void monitor_changed (); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 59507b7ffc..c42c426aee 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -3087,26 +3087,22 @@ void Mixer_UI::vca_assign (boost::shared_ptr vca) { set_axis_targets_for_operation (); -#if 0 BOOST_FOREACH(AxisView* r, _axis_targets) { MixerStrip* ms = dynamic_cast (r); if (ms) { ms->vca_assign (vca); } } -#endif } void Mixer_UI::vca_unassign (boost::shared_ptr vca) { set_axis_targets_for_operation (); -#if 0 BOOST_FOREACH(AxisView* r, _axis_targets) { MixerStrip* ms = dynamic_cast (r); if (ms) { ms->vca_unassign (vca); } } -#endif } diff --git a/gtk2_ardour/vca_master_strip.cc b/gtk2_ardour/vca_master_strip.cc index d3f28cfb67..5e96010c3c 100644 --- a/gtk2_ardour/vca_master_strip.cc +++ b/gtk2_ardour/vca_master_strip.cc @@ -449,6 +449,9 @@ VCAMasterStrip::build_context_menu () items.push_back (MenuElem (_("Rename"), sigc::mem_fun (*this, &VCAMasterStrip::start_name_edit))); items.push_back (MenuElem (_("Color..."), sigc::mem_fun (*this, &VCAMasterStrip::start_color_edit))); items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Assign Selected Channels"), sigc::mem_fun (*this, &VCAMasterStrip::assign_all_selected))); + items.push_back (MenuElem (_("Drop Selected Channels"), sigc::mem_fun (*this, &VCAMasterStrip::unassign_all_selected))); + items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Drop All Slaves"), sigc::mem_fun (*this, &VCAMasterStrip::drop_all_slaves))); items.push_back (SeparatorElem()); items.push_back (MenuElem (_("Remove"), sigc::mem_fun (*this, &VCAMasterStrip::remove))); @@ -486,6 +489,18 @@ VCAMasterStrip::remove () _session->vca_manager().remove_vca (_vca); } +void +VCAMasterStrip::assign_all_selected () +{ + Mixer_UI::instance()->do_vca_assign (_vca); +} + +void +VCAMasterStrip::unassign_all_selected () +{ + Mixer_UI::instance()->do_vca_unassign (_vca); +} + void VCAMasterStrip::drop_all_slaves () { diff --git a/gtk2_ardour/vca_master_strip.h b/gtk2_ardour/vca_master_strip.h index 177425570e..6cc728ea52 100644 --- a/gtk2_ardour/vca_master_strip.h +++ b/gtk2_ardour/vca_master_strip.h @@ -99,6 +99,8 @@ class VCAMasterStrip : public AxisView, public Gtk::EventBox void self_delete (); void remove (); void drop_all_slaves (); + void assign_all_selected (); + void unassign_all_selected (); void parameter_changed (std::string const& p); void set_button_names (); -- cgit v1.2.3