summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2017-02-02 11:02:10 -0600
committerBen Loftis <ben@harrisonconsoles.com>2017-02-02 11:02:10 -0600
commitb759bae0cde1661d4d12f370facbf5b8189eacc9 (patch)
treee74e02967bd46a5eb05e8c78557a4bcebdf7e5f8
parent71003b02353ea090902bdd5623d42da141fa25ad (diff)
Right-click on a VCA to assign it to the selected channels.
-rw-r--r--gtk2_ardour/mixer_strip.cc16
-rw-r--r--gtk2_ardour/mixer_strip.h3
-rw-r--r--gtk2_ardour/mixer_ui.cc4
-rw-r--r--gtk2_ardour/vca_master_strip.cc15
-rw-r--r--gtk2_ardour/vca_master_strip.h2
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<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*/)
{
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<ARDOUR::VCA>);
+ void vca_unassign (boost::shared_ptr<ARDOUR::VCA>);
+
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> 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
}
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)));
@@ -487,6 +490,18 @@ VCAMasterStrip::remove ()
}
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 ()
{
_vca->Drop (); /* EMIT SIGNAL */
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 ();