region groups: allow the user to explictly group and ungroup regions

This commit is contained in:
Ben Loftis 2023-08-07 09:12:10 -05:00 committed by Robin Gareus
parent fe2473b0cc
commit 8818d8484e
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
5 changed files with 54 additions and 0 deletions

View file

@ -210,6 +210,8 @@ This mode provides many different operations on both regions and control points,
@wvis|Common/ToggleMaximalEditor| <@PRIMARY@><@SECONDARY@>f|maximise editor space
@wvis|Common/ToggleMaximalMixer| <@PRIMARY@><@TERTIARY@>f|maximise mixer space
@mmode|MouseMode/set-mouse-mode-object| g|object mode
@edit|Editor/group-selected-regions| <@PRIMARY@>g|group selected regions
@edit|Editor/ungroup-selected-regions| <@PRIMARY@><@TERTIARY@>g|ungroup selected regions
@edit|Region/play-selected-regions| h|play selected region(s)
@eep|Region/trim-front| j|trim front
@eep|Region/trim-back| k|trim back

View file

@ -346,6 +346,10 @@
<menuitem action='insert-region-from-source-list'/>
<menuitem action='play-selected-regions'/>
<menuitem action='tag-selected-regions'/>
<separator/>
<menuitem action='group-selected-regions'/>
<menuitem action='ungroup-selected-regions'/>
<separator/>
<menuitem action='loop-region'/>
<menuitem action='rename-region'/>
<menuitem action='show-region-properties'/>
@ -860,6 +864,10 @@
<popup name='PopupRegionMenu' action='PopupRegionMenu' accelerators='true'>
<menuitem action='play-selected-regions'/>
<menuitem action='tag-selected-regions'/>
<separator/>
<menuitem action='group-selected-regions'/>
<menuitem action='ungroup-selected-regions'/>
<separator/>
<menuitem action='loop-region'/>
<menuitem action='rename-region'/>
<menuitem action='show-region-properties'/>

View file

@ -1435,6 +1435,9 @@ private:
void play_location (ARDOUR::Location&);
void loop_location (ARDOUR::Location&);
void group_selected_regions ();
void ungroup_selected_regions ();
void calc_extra_zoom_edges(samplepos_t &start, samplepos_t &end);
void temporal_zoom_selection (Editing::ZoomAxis);
void temporal_zoom_session ();

View file

@ -378,6 +378,9 @@ Editor::register_actions ()
reg_sens (editor_actions, "main-menu-play-selected-regions", _("Play Selected Regions"), sigc::mem_fun (*this, &Editor::play_selected_region));
reg_sens (editor_actions, "main-menu-tag-selected-regions", _("Tag Selected Regions"), sigc::mem_fun (*this, &Editor::tag_selected_region));
reg_sens (editor_actions, "group-selected-regions", _("Group Selected Regions"), sigc::mem_fun (*this, &Editor::group_selected_regions));
reg_sens (editor_actions, "ungroup-selected-regions", _("Ungroup Selected Regions"), sigc::mem_fun (*this, &Editor::ungroup_selected_regions));
reg_sens (editor_actions, "play-from-edit-point", _("Play from Edit Point"), sigc::mem_fun(*this, &Editor::play_from_edit_point));
reg_sens (editor_actions, "play-from-edit-point-and-return", _("Play from Edit Point and Return"), sigc::mem_fun(*this, &Editor::play_from_edit_point_and_return));

View file

@ -3127,6 +3127,44 @@ Editor::play_edit_range ()
}
}
void
Editor::group_selected_regions ()
{
RegionSelection rs = get_regions_from_selection_and_entered ();
if (rs.empty ()) {
return;
}
Region::RegionGroupRetainer rgr;
begin_reversible_command (_("group regions"));
for (RegionSelection::iterator i = rs.begin (); i != rs.end (); ++i) {
(*i)->region ()->clear_changes ();
(*i)->region ()->set_region_group (true);
_session->add_command (new StatefulDiffCommand ((*i)->region ()));
}
commit_reversible_command ();
}
void
Editor::ungroup_selected_regions ()
{
RegionSelection rs = get_regions_from_selection_and_entered ();
if (rs.empty ()) {
return;
}
begin_reversible_command (_("ungroup regions"));
for (RegionSelection::iterator i = rs.begin (); i != rs.end (); ++i) {
(*i)->region ()->clear_changes ();
(*i)->region ()->unset_region_group ();
_session->add_command (new StatefulDiffCommand ((*i)->region ()));
}
selection->clear_regions ();
commit_reversible_command ();
}
void
Editor::play_selected_region ()
{