diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/editor.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/editor_actions.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 41 |
3 files changed, 39 insertions, 7 deletions
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index b2b477e010..18e67b8cbc 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1508,6 +1508,8 @@ private: void remove_location_at_playhead_cursor (); bool select_new_marker; + void toggle_all_existing_automation (); + void reverse_selection (); void edit_envelope (); diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index adb783ca54..1993568dd0 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -124,6 +124,7 @@ Editor::register_actions () ActionManager::register_action (editor_menu_actions, X_("AlignMenu"), _("Align")); ActionManager::register_action (editor_menu_actions, X_("Autoconnect"), _("Autoconnect")); + ActionManager::register_action (editor_menu_actions, X_("AutomationMenu"), _("Automation")); ActionManager::register_action (editor_menu_actions, X_("Crossfades"), _("Crossfades")); ActionManager::register_action (editor_menu_actions, X_("Edit"), _("Edit")); ActionManager::register_action (editor_menu_actions, X_("EditCursorMovementOptions"), _("Move Selected Marker")); @@ -255,6 +256,8 @@ Editor::register_actions () reg_sens (editor_actions, "select-next-stripable", _("Select Next Strip"), sigc::bind (sigc::mem_fun(*this, &Editor::select_next_stripable), false)); reg_sens (editor_actions, "select-prev-stripable", _("Select Previous Strip"), sigc::bind (sigc::mem_fun(*this, &Editor::select_prev_stripable), false)); + reg_sens (editor_actions, "toggle-all-existing-automation", _("Toggle All Existing Automation"), sigc::mem_fun (*this, &Editor::toggle_all_existing_automation)); + 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)); diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 1956257dd8..09101347e0 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -293,13 +293,13 @@ Editor::split_regions_at (MusicSample where, RegionSelection& regions) selection->clear_time(); //but leave track selection intact } - + //if the user doesn't want to preserve the "Existing" selection, then clear the selection if (!(rsas & Existing)) { selection->clear_objects(); selection->clear_time(); } - + //if the user wants newly-created regions to be selected, then select them: if (mouse_mode == MouseObject) { for (RegionSelection::iterator ri = latest_regionviews.begin(); ri != latest_regionviews.end(); ri++) { @@ -3234,7 +3234,7 @@ Editor::separate_regions_between (const TimeSelection& ts) //but leave track selection intact } else if (rsas == ForceSel) { //note: forcing the regions to be selected *might* force a tool-change to Object here - selection->set(new_selection); + selection->set(new_selection); } commit_reversible_command (); @@ -4519,7 +4519,7 @@ Editor::recover_regions (ARDOUR::RegionList regions) if (track) { //ToDo if (source->captured_for() == track->) { - //_session->add_command(new StatefulDiffCommand (playlist)); + //_session->add_command(new StatefulDiffCommand (playlist)); } } } @@ -5230,12 +5230,12 @@ Editor::tag_regions (RegionList regions) std::string tagstr = entry.get_text(); strip_whitespace_edges (tagstr); - + if (!tagstr.empty()) { for (RegionList::iterator r = regions.begin(); r != regions.end(); r++) { (*r)->set_tags(tagstr); } - + _regions->redisplay (); } } @@ -5276,7 +5276,7 @@ Editor::tag_last_capture () } } - + tag_regions(rlist); } @@ -8504,3 +8504,30 @@ Editor::bring_all_sources_into_session () _session->bring_all_sources_into_session (boost::bind (&Editor::bring_in_callback, this, &msg, _1, _2, _3)); } + +void +Editor::toggle_all_existing_automation () +{ + TrackViewList & tvl (selection->tracks.empty() ? track_views : selection->tracks); + bool some_automation_shown = false; + + for (TrackViewList::const_iterator t = tvl.begin(); t != tvl.end(); ++t) { + TimeAxisView::Children children = (*t)->get_child_list (); + for (TimeAxisView::Children::const_iterator c = children.begin(); c != children.end(); ++c) { + if (boost::dynamic_pointer_cast<AutomationTimeAxisView> (*c)) { + some_automation_shown = true; + break; + } + } + + if (some_automation_shown) { + break; + } + } + + if (!some_automation_shown) { + tvl.foreach_stripable_time_axis (boost::bind (&StripableTimeAxisView::show_existing_automation, _1, false)); + } else { + tvl.foreach_stripable_time_axis (boost::bind (&StripableTimeAxisView::hide_all_automation, _1, false)); + } +} |