summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-08-14 16:01:07 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-08-14 16:01:07 +0000
commitbd1d705498a30939712deada370d868664b61a34 (patch)
treeac61b9d406a65b61d8e1ad3a45d51f935c86588e
parent12d1da30d23a3767ab91d7bb83696d3d0668fe31 (diff)
add new editor actions for solo, mute, solo-isolate toggle (of selected tracks) for use by MIDI bindings
git-svn-id: svn://localhost/ardour2/branches/3.0@9990 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/editor.h3
-rw-r--r--gtk2_ardour/editor_actions.cc6
-rw-r--r--gtk2_ardour/editor_ops.cc54
-rw-r--r--gtk2_ardour/mnemonic-us.bindings.in1
4 files changed, 64 insertions, 0 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index 4533f99481..55d78238f7 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1081,6 +1081,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
void toggle_region_lock ();
void toggle_opaque_region ();
void toggle_record_enable ();
+ void toggle_solo ();
+ void toggle_solo_isolate ();
+ void toggle_mute ();
void toggle_region_lock_style ();
void raise_region ();
void raise_region_to_top ();
diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc
index b1ef5328d1..2687d05bef 100644
--- a/gtk2_ardour/editor_actions.cc
+++ b/gtk2_ardour/editor_actions.cc
@@ -194,6 +194,12 @@ Editor::register_actions ()
act = reg_sens (editor_actions, "track-record-enable-toggle", _("Toggle Record Enable"), sigc::mem_fun(*this, &Editor::toggle_record_enable));
ActionManager::track_selection_sensitive_actions.push_back (act);
+ act = reg_sens (editor_actions, "track-solo-toggle", _("Toggle Solo"), sigc::mem_fun(*this, &Editor::toggle_solo));
+ ActionManager::track_selection_sensitive_actions.push_back (act);
+ act = reg_sens (editor_actions, "track-mute-toggle", _("Toggle Mute"), sigc::mem_fun(*this, &Editor::toggle_mute));
+ ActionManager::track_selection_sensitive_actions.push_back (act);
+ act = reg_sens (editor_actions, "track-solo-isolate-toggle", _("Toggle Solo Isolate"), sigc::mem_fun(*this, &Editor::toggle_solo_isolate));
+ ActionManager::track_selection_sensitive_actions.push_back (act);
for (int i = 1; i <= 12; ++i) {
string const a = string_compose (X_("save-visual-state-%1"), i);
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index a47fc95430..29471aa913 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -4755,6 +4755,60 @@ Editor::toggle_record_enable ()
}
}
+void
+Editor::toggle_solo ()
+{
+ bool new_state = false;
+ bool first = true;
+ boost::shared_ptr<RouteList> rl (new RouteList);
+
+ for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
+ RouteTimeAxisView *rtav = dynamic_cast<RouteTimeAxisView *>(*i);
+
+ if (!rtav) {
+ continue;
+ }
+
+ if (first) {
+ new_state = !rtav->route()->soloed ();
+ first = false;
+ }
+
+ rl->push_back (rtav->route());
+ }
+
+ _session->set_solo (rl, new_state, Session::rt_cleanup, true);
+}
+
+void
+Editor::toggle_mute ()
+{
+ bool new_state = false;
+ bool first = true;
+ boost::shared_ptr<RouteList> rl (new RouteList);
+
+ for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
+ RouteTimeAxisView *rtav = dynamic_cast<RouteTimeAxisView *>(*i);
+
+ if (!rtav) {
+ continue;
+ }
+
+ if (first) {
+ new_state = !rtav->route()->soloed ();
+ first = false;
+ }
+
+ rl->push_back (rtav->route());
+ }
+
+ _session->set_mute (rl, new_state, Session::rt_cleanup, true);
+}
+
+void
+Editor::toggle_solo_isolate ()
+{
+}
void
Editor::set_fade_length (bool in)
diff --git a/gtk2_ardour/mnemonic-us.bindings.in b/gtk2_ardour/mnemonic-us.bindings.in
index 434924c3c7..efebd6b414 100644
--- a/gtk2_ardour/mnemonic-us.bindings.in
+++ b/gtk2_ardour/mnemonic-us.bindings.in
@@ -180,6 +180,7 @@ This mode provides many different operations on both regions and control points,
@rop|Region/split-region|s|split
@sess|Common/Save|<@PRIMARY@>s|save session
@sess|Main/Snapshot|<@PRIMARY@><@TERTIARY@>s|snapshot session
+@trans|Editor/track-solo-toggle|<@SECONDARY@>s|toggle track solo status
@rop|Region/duplicate-region|d|duplicate region (once)
@rop|Region/multi-duplicate-region|<@TERTIARY@>d|duplicate region (multi)
@select|Editor/select-all-in-punch-range|<@PRIMARY@>d|select all in punch range