split out region marker actions to their own submenu; implement remove and clear all

This commit is contained in:
Paul Davis 2021-05-18 18:46:55 -06:00
parent 17dbdffc45
commit 3047b25527
5 changed files with 62 additions and 3 deletions

View File

@ -353,7 +353,6 @@
<menuitem action='toggle-region-lock-style'/>
<menuitem action='toggle-region-video-lock'/>
<menuitem action='set-region-sync-position'/>
<menuitem action='add-region-cue-marker'/>
<menuitem action='remove-region-sync'/>
<menuitem action='nudge-forward'/>
<menuitem action='nudge-backward'/>
@ -361,6 +360,10 @@
<menuitem action='nudge-backward-by-capture-offset'/>
<menuitem action='sequence-regions'/>
</menu>
<menu action='RegionMenuMarkers'>
<menuitem action='add-region-cue-marker'/>
<menuitem action='clear-region-cue-markers'/>
</menu>
<menu action='RegionMenuTrim'>
<menuitem action='trim-front'/>
<menuitem action='trim-back'/>

View File

@ -586,6 +586,8 @@ public:
void edit_meter_section (ARDOUR::MeterSection*);
void add_region_marker ();
void clear_region_markers ();
void remove_region_marker (ARDOUR::CueMarker&);
protected:
void map_transport_state ();

View File

@ -137,6 +137,7 @@ Editor::register_actions ()
ActionManager::register_action (editor_menu_actions, X_("RegionMenu"), _("Region"));
ActionManager::register_action (editor_menu_actions, X_("RegionMenuLayering"), _("Layering"));
ActionManager::register_action (editor_menu_actions, X_("RegionMenuPosition"), _("Position"));
ActionManager::register_action (editor_menu_actions, X_("RegionMenuMarkers"), _("Markers"));
ActionManager::register_action (editor_menu_actions, X_("RegionMenuEdit"), _("Edit"));
ActionManager::register_action (editor_menu_actions, X_("RegionMenuTrim"), _("Trim"));
ActionManager::register_action (editor_menu_actions, X_("RegionMenuGain"), _("Gain"));
@ -1654,6 +1655,7 @@ Editor::register_region_actions ()
/* PART 3: actions that operate on the selection and also require the edit point location */
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EditPointRegions), "add-region-cue-marker", _("Add Region Cue Marker"), sigc::mem_fun (*this, &Editor::add_region_marker));
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EditPointRegions), "clear-region-cue-markers", _("Clear Region Cue Markers"), sigc::mem_fun (*this, &Editor::clear_region_markers));
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EditPointRegions), "set-region-sync-position", _("Set Sync Position"), sigc::mem_fun (*this, &Editor::set_region_sync_position));
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EditPointRegions), "place-transient", _("Place Transient"), sigc::mem_fun (*this, &Editor::place_transient));
register_region_action (_region_actions, RegionActionTarget (SelectedRegions|EditPointRegions), "trim-front", _("Trim Start at Edit Point"), sigc::mem_fun (*this, &Editor::trim_region_front));

View File

@ -805,7 +805,7 @@ Editor::really_remove_region_marker (ArdourMarker* marker)
return FALSE;
}
rv->region()->remove_cue_marker (cm);
remove_region_marker (cm);
commit_reversible_command ();
return FALSE;

View File

@ -8761,7 +8761,7 @@ Editor::add_region_marker ()
CueMarker marker (str, region->start() + (position - region->position()));
if (!in_command) {
begin_reversible_command (_("add region marker"));
begin_reversible_command (_("add cue marker"));
in_command = true;
}
@ -8775,3 +8775,55 @@ Editor::add_region_marker ()
commit_reversible_command ();
}
}
void
Editor::remove_region_marker (CueMarker& cm)
{
RegionSelection rs = get_regions_from_selection_and_edit_point ();
bool in_command = false;
for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ++r) {
SourceList & sources = (*r)->region()->sources_for_edit ();
for (SourceList::iterator s = sources.begin(); s != sources.end(); ++s) {
if ((*s)->remove_cue_marker (cm)) {
if (!in_command) {
begin_reversible_command (_("remove cue marker"));
in_command = true;
}
_session->add_command (new StatefulDiffCommand (*s));
}
}
}
if (in_command) {
commit_reversible_command ();
}
}
void
Editor::clear_region_markers ()
{
RegionSelection rs = get_regions_from_selection_and_edit_point ();
bool in_command = false;
for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ++r) {
SourceList & sources = (*r)->region()->sources_for_edit ();
for (SourceList::iterator s = sources.begin(); s != sources.end(); ++s) {
if ((*s)->clear_cue_markers ()) {
if (!in_command) {
begin_reversible_command (_("clear cue markers"));
in_command = true;
}
_session->add_command (new StatefulDiffCommand (*s));
}
}
}
if (in_command) {
commit_reversible_command ();
}
}