add action to "promote" region cue markers to global marks
This commit is contained in:
parent
232af15b51
commit
8774740e72
@ -363,6 +363,8 @@
|
||||
<menu action='RegionMenuMarkers'>
|
||||
<menuitem action='add-region-cue-marker'/>
|
||||
<menuitem action='clear-region-cue-markers'/>
|
||||
<separator/>
|
||||
<menuitem action='make-region-markers-global'/>
|
||||
</menu>
|
||||
<menu action='RegionMenuTrim'>
|
||||
<menuitem action='trim-front'/>
|
||||
|
@ -2958,6 +2958,8 @@ what you would like to do.\n"), PROGRAM_NAME));
|
||||
image->show();
|
||||
hbox->show();
|
||||
|
||||
Splash::instance()->hide ();
|
||||
|
||||
switch (dialog.run ()) {
|
||||
case RESPONSE_ACCEPT:
|
||||
return 1;
|
||||
|
@ -588,6 +588,7 @@ public:
|
||||
void add_region_marker ();
|
||||
void clear_region_markers ();
|
||||
void remove_region_marker (ARDOUR::CueMarker&);
|
||||
void make_region_markers_global ();
|
||||
|
||||
protected:
|
||||
void map_transport_state ();
|
||||
|
@ -1654,6 +1654,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), "make-region-markers-global", _("Convert Region Cue Markers to Global Markers"), sigc::mem_fun (*this, &Editor::make_region_markers_global));
|
||||
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));
|
||||
|
@ -8838,3 +8838,39 @@ Editor::clear_region_markers ()
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Editor::make_region_markers_global ()
|
||||
{
|
||||
RegionSelection rs = get_regions_from_selection_and_edit_point ();
|
||||
XMLNode& before (_session->locations()->get_state());
|
||||
bool in_command = false;
|
||||
|
||||
for (RegionSelection::iterator r = rs.begin(); r != rs.end(); ++r) {
|
||||
CueMarkers cues;
|
||||
|
||||
(*r)->region()->get_cue_markers (cues, true);
|
||||
|
||||
if (!cues.empty()) {
|
||||
if (!in_command) {
|
||||
in_command = true;
|
||||
}
|
||||
|
||||
for (CueMarkers::iterator cm = cues.begin(); cm != cues.end(); ++cm) {
|
||||
/* marker position is absolute within source */
|
||||
const samplepos_t absolute_pos = (cm->position() - (*r)->region()->start()) + (*r)->region()->position();
|
||||
Location* loc = new Location (*_session, absolute_pos, absolute_pos, cm->text(), Location::IsMark);
|
||||
_session->locations()->add (loc, false);
|
||||
}
|
||||
}
|
||||
|
||||
cues.clear ();
|
||||
}
|
||||
|
||||
if (in_command) {
|
||||
XMLNode& after (_session->locations()->get_state());
|
||||
begin_reversible_command (_("region markers -> global markers"));
|
||||
_session->add_command (new MementoCommand<Locations> (*(_session->locations()), &before, &after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user