diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-08-14 16:01:07 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-08-14 16:01:07 +0000 |
commit | bd1d705498a30939712deada370d868664b61a34 (patch) | |
tree | ac61b9d406a65b61d8e1ad3a45d51f935c86588e | |
parent | 12d1da30d23a3767ab91d7bb83696d3d0668fe31 (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.h | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 54 | ||||
-rw-r--r-- | gtk2_ardour/mnemonic-us.bindings.in | 1 |
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 |