Right-click on a VCA to assign it to the selected channels.
authorBen Loftis <ben@harrisonconsoles.com>
Thu, 2 Feb 2017 17:02:10 +0000 (11:02 -0600)
committerBen Loftis <ben@harrisonconsoles.com>
Thu, 2 Feb 2017 17:02:10 +0000 (11:02 -0600)
gtk2_ardour/mixer_strip.cc
gtk2_ardour/mixer_strip.h
gtk2_ardour/mixer_ui.cc
gtk2_ardour/vca_master_strip.cc
gtk2_ardour/vca_master_strip.h

index af56b4fc5b3bf4c82e5f20355378548abf6c4ed2..1a82d7025b8ab536da2bd56c5cc4896e95db3bd0 100644 (file)
@@ -426,6 +426,22 @@ MixerStrip::~MixerStrip ()
                _entered_mixer_strip = NULL;
 }
 
+void
+MixerStrip::vca_assign (boost::shared_ptr<ARDOUR::VCA> vca)
+{
+       boost::shared_ptr<Slavable> sl = boost::dynamic_pointer_cast<Slavable> ( route() );
+       if (sl)
+               sl->assign(vca);
+}
+
+void
+MixerStrip::vca_unassign (boost::shared_ptr<ARDOUR::VCA> vca)
+{
+       boost::shared_ptr<Slavable> sl = boost::dynamic_pointer_cast<Slavable> ( route() );
+       if (sl)
+               sl->unassign(vca);
+}
+
 bool
 MixerStrip::mixer_strip_enter_event (GdkEventCrossing* /*ev*/)
 {
index abafb3b1f37b76e50f6a02bfa65bc6eef4e89ad4..e40c38ff40778dc7eee3fc431c87587afd7df91d 100644 (file)
@@ -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<ARDOUR::VCA>);
+       void vca_unassign (boost::shared_ptr<ARDOUR::VCA>);
+
        void meter_changed ();
        void monitor_changed ();
 
index 59507b7ffcb4b2bbb6168434da7772b5a374d0f9..c42c426aeecf3d7207fbdfcdcb6ab326848805a7 100644 (file)
@@ -3087,26 +3087,22 @@ void
 Mixer_UI::vca_assign (boost::shared_ptr<VCA> vca)
 {
        set_axis_targets_for_operation ();
-#if 0
        BOOST_FOREACH(AxisView* r, _axis_targets) {
                MixerStrip* ms = dynamic_cast<MixerStrip*> (r);
                if (ms) {
                        ms->vca_assign (vca);
                }
        }
-#endif
 }
 
 void
 Mixer_UI::vca_unassign (boost::shared_ptr<VCA> vca)
 {
        set_axis_targets_for_operation ();
-#if 0
        BOOST_FOREACH(AxisView* r, _axis_targets) {
                MixerStrip* ms = dynamic_cast<MixerStrip*> (r);
                if (ms) {
                        ms->vca_unassign (vca);
                }
        }
-#endif
 }
index d3f28cfb67379ad1a7bec16c3704d3909741719a..5e96010c3c7cc9551073d932147d28c0353e3120 100644 (file)
@@ -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 ()
 {
index 177425570e2621adeff4357104c100a76c6b921e..6cc728ea5214602d01dacda90eaab354536c98b2 100644 (file)
@@ -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 ();