generalize VCA assign/unassign code.
[ardour.git] / gtk2_ardour / mixer_actor.cc
index eb5b5e8f711f712b9a3abb4f80b1a7bf1dbc9128..403f198d4fbe35fcdca18e1673d6ec014ff687e6 100644 (file)
 using namespace ARDOUR;
 using namespace Gtk;
 using namespace PBD;
-using Gtkmm2ext::Actions;
+
 using Gtkmm2ext::Bindings;
 
 MixerActor::MixerActor ()
+       : myactions (X_("mixer"))
 {
        register_actions ();
        load_bindings ();
@@ -56,36 +57,36 @@ MixerActor::~MixerActor ()
 void
 MixerActor::register_actions ()
 {
-       Glib::RefPtr<ActionGroup> group = Actions.create_action_group (X_("Mixer"));
+       Glib::RefPtr<ActionGroup> group = myactions.create_action_group (X_("Mixer"));
 
-       Actions.register_action (group, "solo", _("Toggle Solo on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::solo_action));
-       Actions.register_action (group, "mute", _("Toggle Mute on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::mute_action));
-       Actions.register_action (group, "recenable", _("Toggle Rec-enable on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::rec_enable_action));
-       Actions.register_action (group, "increment-gain", _("Decrease Gain on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::step_gain_up_action));
-       Actions.register_action (group, "decrement-gain", _("Increase Gain on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::step_gain_down_action));
-       Actions.register_action (group, "unity-gain", _("Set Gain to 0dB on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::unity_gain_action));
+       myactions.register_action (group, "solo", _("Toggle Solo on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::solo_action));
+       myactions.register_action (group, "mute", _("Toggle Mute on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::mute_action));
+       myactions.register_action (group, "recenable", _("Toggle Rec-enable on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::rec_enable_action));
+       myactions.register_action (group, "increment-gain", _("Decrease Gain on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::step_gain_up_action));
+       myactions.register_action (group, "decrement-gain", _("Increase Gain on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::step_gain_down_action));
+       myactions.register_action (group, "unity-gain", _("Set Gain to 0dB on Mixer-Selected Tracks/Busses"), sigc::mem_fun (*this, &MixerActor::unity_gain_action));
 
 
-       Actions.register_action (group, "copy-processors", _("Copy Selected Processors"), sigc::mem_fun (*this, &MixerActor::copy_processors));
-       Actions.register_action (group, "cut-processors", _("Cut Selected Processors"), sigc::mem_fun (*this, &MixerActor::cut_processors));
-       Actions.register_action (group, "paste-processors", _("Paste Selected Processors"), sigc::mem_fun (*this, &MixerActor::paste_processors));
-       Actions.register_action (group, "delete-processors", _("Delete Selected Processors"), sigc::mem_fun (*this, &MixerActor::delete_processors));
-       Actions.register_action (group, "select-all-processors", _("Select All (visible) Processors"), sigc::mem_fun (*this, &MixerActor::select_all_processors));
-       Actions.register_action (group, "toggle-processors", _("Toggle Selected Processors"), sigc::mem_fun (*this, &MixerActor::toggle_processors));
-       Actions.register_action (group, "ab-plugins", _("Toggle Selected Plugins"), sigc::mem_fun (*this, &MixerActor::ab_plugins));
-       Actions.register_action (group, "select-none", _("Deselect all strips and processors"), sigc::mem_fun (*this, &MixerActor::select_none));
+       myactions.register_action (group, "copy-processors", _("Copy Selected Processors"), sigc::mem_fun (*this, &MixerActor::copy_processors));
+       myactions.register_action (group, "cut-processors", _("Cut Selected Processors"), sigc::mem_fun (*this, &MixerActor::cut_processors));
+       myactions.register_action (group, "paste-processors", _("Paste Selected Processors"), sigc::mem_fun (*this, &MixerActor::paste_processors));
+       myactions.register_action (group, "delete-processors", _("Delete Selected Processors"), sigc::mem_fun (*this, &MixerActor::delete_processors));
+       myactions.register_action (group, "select-all-processors", _("Select All (visible) Processors"), sigc::mem_fun (*this, &MixerActor::select_all_processors));
+       myactions.register_action (group, "toggle-processors", _("Toggle Selected Processors"), sigc::mem_fun (*this, &MixerActor::toggle_processors));
+       myactions.register_action (group, "ab-plugins", _("Toggle Selected Plugins"), sigc::mem_fun (*this, &MixerActor::ab_plugins));
+       myactions.register_action (group, "select-none", _("Deselect all strips and processors"), sigc::mem_fun (*this, &MixerActor::select_none));
 
-       Actions.register_action (group, "scroll-left", _("Scroll Mixer Window to the left"), sigc::mem_fun (*this, &MixerActor::scroll_left));
-       Actions.register_action (group, "scroll-right", _("Scroll Mixer Window to the left"), sigc::mem_fun (*this, &MixerActor::scroll_right));
+       myactions.register_action (group, "scroll-left", _("Scroll Mixer Window to the left"), sigc::mem_fun (*this, &MixerActor::scroll_left));
+       myactions.register_action (group, "scroll-right", _("Scroll Mixer Window to the left"), sigc::mem_fun (*this, &MixerActor::scroll_right));
 
-       Actions.register_action (group, "toggle-midi-input-active", _("Toggle MIDI Input Active for Mixer-Selected Tracks/Busses"), 
+       myactions.register_action (group, "toggle-midi-input-active", _("Toggle MIDI Input Active for Mixer-Selected Tracks/Busses"),
                                   sigc::bind (sigc::mem_fun (*this, &MixerActor::toggle_midi_input_active), false));
 }
 
 void
 MixerActor::load_bindings ()
 {
-       bindings = Bindings::get_bindings (X_("mixer"));
+       bindings = Bindings::get_bindings (X_("Mixer"), myactions);
 }
 
 void
@@ -171,7 +172,7 @@ printf("setting gain to unity (?)");
        BOOST_FOREACH(RouteUI* r, _route_targets) {
                boost::shared_ptr<Route> rp = r->route();
                if (rp) {
-                       rp->set_gain (1.0, Controllable::NoGroup);
+                       rp->gain_control()->set_value (1.0, Controllable::NoGroup);
                }
        }
 }
@@ -249,3 +250,30 @@ MixerActor::ab_plugins ()
        }
 }
 
+void
+MixerActor::vca_assign (boost::shared_ptr<VCA> vca)
+{
+       set_route_targets_for_operation ();
+
+       BOOST_FOREACH(RouteUI* r, _route_targets) {
+               MixerStrip* ms = dynamic_cast<MixerStrip*> (r);
+               if (ms) {
+                       ms->vca_assign (vca);
+               }
+       }
+}
+
+void
+MixerActor::vca_unassign (boost::shared_ptr<VCA> vca)
+{
+       set_route_targets_for_operation ();
+
+       BOOST_FOREACH(RouteUI* r, _route_targets) {
+               MixerStrip* ms = dynamic_cast<MixerStrip*> (r);
+               if (ms) {
+                       ms->vca_unassign (vca);
+               }
+       }
+}
+
+