mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 00:34:59 +01:00
Merged with trunk R776
git-svn-id: svn://localhost/ardour2/branches/midi@777 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
38c7d34d8c
commit
ab6f1ed9ba
110 changed files with 7360 additions and 785 deletions
|
|
@ -28,6 +28,7 @@
|
|||
#include <pbd/error.h>
|
||||
#include <pbd/basename.h>
|
||||
#include <pbd/pthread_utils.h>
|
||||
#include <pbd/memento_command.h>
|
||||
|
||||
#include <gtkmm2ext/utils.h>
|
||||
#include <gtkmm2ext/choice.h>
|
||||
|
|
@ -209,9 +210,10 @@ Editor::split_regions_at (jack_nframes_t where, RegionSelection& regions)
|
|||
_new_regionviews_show_envelope = arv->envelope_visible();
|
||||
|
||||
if (pl) {
|
||||
session->add_undo (pl->get_memento());
|
||||
XMLNode &before = pl->get_state();
|
||||
pl->split_region ((*a)->region(), where);
|
||||
session->add_redo_no_execute (pl->get_memento());
|
||||
XMLNode &after = pl->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*pl, before, after));
|
||||
}
|
||||
|
||||
a = tmp;
|
||||
|
|
@ -231,9 +233,10 @@ Editor::remove_clicked_region ()
|
|||
Playlist* playlist = clicked_audio_trackview->playlist();
|
||||
|
||||
begin_reversible_command (_("remove region"));
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->remove_region (&clicked_regionview->region());
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
XMLNode &after = playlist->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*playlist, before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -406,9 +409,10 @@ Editor::nudge_forward (bool next)
|
|||
distance = next_distance;
|
||||
}
|
||||
|
||||
session->add_undo (r.playlist()->get_memento());
|
||||
XMLNode &before = r.playlist()->get_state();
|
||||
r.set_position (r.position() + distance, this);
|
||||
session->add_redo_no_execute (r.playlist()->get_memento());
|
||||
XMLNode &after = r.playlist()->get_state();
|
||||
session->add_command (new MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -440,14 +444,15 @@ Editor::nudge_backward (bool next)
|
|||
distance = next_distance;
|
||||
}
|
||||
|
||||
session->add_undo (r.playlist()->get_memento());
|
||||
XMLNode &before = r.playlist()->get_state();
|
||||
|
||||
if (r.position() > distance) {
|
||||
r.set_position (r.position() - distance, this);
|
||||
} else {
|
||||
r.set_position (0, this);
|
||||
}
|
||||
session->add_redo_no_execute (r.playlist()->get_memento());
|
||||
XMLNode &after = r.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -480,9 +485,10 @@ Editor::nudge_forward_capture_offset ()
|
|||
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
|
||||
Region& r ((*i)->region());
|
||||
|
||||
session->add_undo (r.playlist()->get_memento());
|
||||
XMLNode &before = r.playlist()->get_state();
|
||||
r.set_position (r.position() + distance, this);
|
||||
session->add_redo_no_execute (r.playlist()->get_memento());
|
||||
XMLNode &after = r.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -506,14 +512,15 @@ Editor::nudge_backward_capture_offset ()
|
|||
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
|
||||
Region& r ((*i)->region());
|
||||
|
||||
session->add_undo (r.playlist()->get_memento());
|
||||
XMLNode &before = r.playlist()->get_state();
|
||||
|
||||
if (r.position() > distance) {
|
||||
r.set_position (r.position() - distance, this);
|
||||
} else {
|
||||
r.set_position (0, this);
|
||||
}
|
||||
session->add_redo_no_execute (r.playlist()->get_memento());
|
||||
XMLNode &after = r.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -1290,9 +1297,10 @@ Editor::add_location_from_selection ()
|
|||
Location *location = new Location (start, end, "selection");
|
||||
|
||||
session->begin_reversible_command (_("add marker"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
session->locations()->add (location, true);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -1303,9 +1311,10 @@ Editor::add_location_from_playhead_cursor ()
|
|||
|
||||
Location *location = new Location (where, where, "mark", Location::IsMark);
|
||||
session->begin_reversible_command (_("add marker"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
session->locations()->add (location, true);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -1321,9 +1330,10 @@ Editor::add_location_from_audio_region ()
|
|||
|
||||
Location *location = new Location (region.position(), region.last_frame(), region.name());
|
||||
session->begin_reversible_command (_("add marker"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
session->locations()->add (location, true);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -1739,9 +1749,10 @@ Editor::clear_markers ()
|
|||
{
|
||||
if (session) {
|
||||
session->begin_reversible_command (_("clear markers"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
session->locations()->clear_markers ();
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
|
|
@ -1751,7 +1762,7 @@ Editor::clear_ranges ()
|
|||
{
|
||||
if (session) {
|
||||
session->begin_reversible_command (_("clear ranges"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
|
||||
Location * looploc = session->locations()->auto_loop_location();
|
||||
Location * punchloc = session->locations()->auto_punch_location();
|
||||
|
|
@ -1761,7 +1772,8 @@ Editor::clear_ranges ()
|
|||
if (looploc) session->locations()->add (looploc);
|
||||
if (punchloc) session->locations()->add (punchloc);
|
||||
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
|
|
@ -1770,9 +1782,10 @@ void
|
|||
Editor::clear_locations ()
|
||||
{
|
||||
session->begin_reversible_command (_("clear locations"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
session->locations()->clear ();
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command(new MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
session->locations()->clear ();
|
||||
}
|
||||
|
|
@ -1820,9 +1833,9 @@ Editor::insert_region_list_drag (AudioRegion& region, int x, int y)
|
|||
snap_to (where);
|
||||
|
||||
begin_reversible_command (_("insert dragged region"));
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->add_region (*(new AudioRegion (region)), where, 1.0);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
session->add_command(new MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -1856,9 +1869,9 @@ Editor::insert_region_list_selection (float times)
|
|||
Region* region = (*i)[region_list_columns.region];
|
||||
|
||||
begin_reversible_command (_("insert region"));
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->add_region (*(createRegion (*region)), edit_cursor->current_frame, times);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
session->add_command(new MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -2283,7 +2296,9 @@ Editor::separate_region_from_selection ()
|
|||
begin_reversible_command (_("separate"));
|
||||
doing_undo = true;
|
||||
}
|
||||
if (doing_undo) session->add_undo ((playlist)->get_memento());
|
||||
XMLNode *before;
|
||||
if (doing_undo)
|
||||
before = &(playlist->get_state());
|
||||
|
||||
/* XXX need to consider musical time selections here at some point */
|
||||
|
||||
|
|
@ -2293,7 +2308,8 @@ Editor::separate_region_from_selection ()
|
|||
playlist->partition ((jack_nframes_t)((*t).start * speed), (jack_nframes_t)((*t).end * speed), true);
|
||||
}
|
||||
|
||||
if (doing_undo) session->add_redo_no_execute (playlist->get_memento());
|
||||
if (doing_undo)
|
||||
session->add_command(new MementoCommand<Playlist>(*playlist, *before, playlist->get_state()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2328,11 +2344,14 @@ Editor::separate_regions_using_location (Location& loc)
|
|||
if (atv->is_audio_track()) {
|
||||
|
||||
if ((playlist = atv->playlist()) != 0) {
|
||||
XMLNode *before;
|
||||
if (!doing_undo) {
|
||||
begin_reversible_command (_("separate"));
|
||||
doing_undo = true;
|
||||
}
|
||||
if (doing_undo) session->add_undo ((playlist)->get_memento());
|
||||
if (doing_undo)
|
||||
before = &(playlist->get_state());
|
||||
|
||||
|
||||
/* XXX need to consider musical time selections here at some point */
|
||||
|
||||
|
|
@ -2340,7 +2359,8 @@ Editor::separate_regions_using_location (Location& loc)
|
|||
|
||||
|
||||
playlist->partition ((jack_nframes_t)(loc.start() * speed), (jack_nframes_t)(loc.end() * speed), true);
|
||||
if (doing_undo) session->add_redo_no_execute (playlist->get_memento());
|
||||
if (doing_undo)
|
||||
session->add_command(new MementoCommand<Playlist>(*playlist, *before, playlist->get_state()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2411,9 +2431,10 @@ Editor::crop_region_to_selection ()
|
|||
end = min (selection->time.end_frame(), start + region->length() - 1);
|
||||
cnt = end - start + 1;
|
||||
|
||||
session->add_undo ((*i)->get_memento());
|
||||
XMLNode &before = (*i)->get_state();
|
||||
region->trim_to (start, cnt, this);
|
||||
session->add_redo_no_execute ((*i)->get_memento());
|
||||
XMLNode &after = (*i)->get_state();
|
||||
session->add_command (new MementoCommand<Playlist>(*(*i), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -2454,9 +2475,9 @@ Editor::region_fill_track ()
|
|||
return;
|
||||
}
|
||||
|
||||
session->add_undo (pl->get_memento());
|
||||
XMLNode &before = pl->get_state();
|
||||
pl->add_region (*(new AudioRegion (*ar)), ar->last_frame(), times);
|
||||
session->add_redo_no_execute (pl->get_memento());
|
||||
session->add_command (new MementoCommand<Playlist>(*pl, before, pl->get_state()));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -2504,9 +2525,9 @@ Editor::region_fill_selection ()
|
|||
continue;
|
||||
}
|
||||
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->add_region (*(createRegion (*region)), start, times);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
session->add_command (new MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -2521,9 +2542,10 @@ Editor::set_a_regions_sync_position (Region& region, jack_nframes_t position)
|
|||
return;
|
||||
}
|
||||
begin_reversible_command (_("set region sync position"));
|
||||
session->add_undo (region.playlist()->get_memento());
|
||||
XMLNode &before = region.playlist()->get_state();
|
||||
region.set_sync_position (position);
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
XMLNode &after = region.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -2541,9 +2563,10 @@ Editor::set_region_sync_from_edit_cursor ()
|
|||
|
||||
Region& region (clicked_regionview->region());
|
||||
begin_reversible_command (_("set sync from edit cursor"));
|
||||
session->add_undo (region.playlist()->get_memento());
|
||||
XMLNode &before = region.playlist()->get_state();
|
||||
region.set_sync_position (edit_cursor->current_frame);
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
XMLNode &after = region.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -2553,9 +2576,10 @@ Editor::remove_region_sync ()
|
|||
if (clicked_regionview) {
|
||||
Region& region (clicked_regionview->region());
|
||||
begin_reversible_command (_("remove sync"));
|
||||
session->add_undo (region.playlist()->get_memento());
|
||||
XMLNode &before = region.playlist()->get_state();
|
||||
region.clear_sync_position ();
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
XMLNode &after = region.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
|
|
@ -2568,9 +2592,10 @@ Editor::naturalize ()
|
|||
}
|
||||
begin_reversible_command (_("naturalize"));
|
||||
for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
|
||||
session->add_undo ((*i)->region().get_memento());
|
||||
XMLNode &before = (*i)->region().get_state();
|
||||
(*i)->region().move_to_natural_position (this);
|
||||
session->add_redo_no_execute ((*i)->region().get_memento());
|
||||
XMLNode &after = (*i)->region().get_state();
|
||||
session->add_command (new MementoCommand<Region>((*i)->region(), before, after));
|
||||
}
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
|
@ -2636,7 +2661,7 @@ Editor::align_selection_relative (RegionPoint point, jack_nframes_t position)
|
|||
|
||||
Region& region ((*i)->region());
|
||||
|
||||
session->add_undo (region.playlist()->get_memento());
|
||||
XMLNode &before = region.playlist()->get_state();
|
||||
|
||||
if (dir > 0) {
|
||||
region.set_position (region.position() + distance, this);
|
||||
|
|
@ -2644,7 +2669,8 @@ Editor::align_selection_relative (RegionPoint point, jack_nframes_t position)
|
|||
region.set_position (region.position() - distance, this);
|
||||
}
|
||||
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
XMLNode &after = region.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -2678,7 +2704,7 @@ Editor::align_region (Region& region, RegionPoint point, jack_nframes_t position
|
|||
void
|
||||
Editor::align_region_internal (Region& region, RegionPoint point, jack_nframes_t position)
|
||||
{
|
||||
session->add_undo (region.playlist()->get_memento());
|
||||
XMLNode &before = region.playlist()->get_state();
|
||||
|
||||
switch (point) {
|
||||
case SyncPoint:
|
||||
|
|
@ -2696,7 +2722,8 @@ Editor::align_region_internal (Region& region, RegionPoint point, jack_nframes_t
|
|||
break;
|
||||
}
|
||||
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
XMLNode &after = region.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -2718,9 +2745,10 @@ Editor::trim_region_to_edit_cursor ()
|
|||
}
|
||||
|
||||
begin_reversible_command (_("trim to edit"));
|
||||
session->add_undo (region.playlist()->get_memento());
|
||||
XMLNode &before = region.playlist()->get_state();
|
||||
region.trim_end( session_frame_to_track_frame(edit_cursor->current_frame, speed), this);
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
XMLNode &after = region.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -2743,9 +2771,10 @@ Editor::trim_region_from_edit_cursor ()
|
|||
}
|
||||
|
||||
begin_reversible_command (_("trim to edit"));
|
||||
session->add_undo (region.playlist()->get_memento());
|
||||
XMLNode &before = region.playlist()->get_state();
|
||||
region.trim_front ( session_frame_to_track_frame(edit_cursor->current_frame, speed), this);
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
XMLNode &after = region.playlist()->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -2857,9 +2886,10 @@ Editor::bounce_range_selection ()
|
|||
itt.cancel = false;
|
||||
itt.progress = false;
|
||||
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
atv->audio_track()->bounce_range (start, cnt, itt);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
XMLNode &after = playlist->get_state();
|
||||
session->add_command (new MementoCommand<Playlist> (*playlist, before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -2977,7 +3007,7 @@ Editor::cut_copy_regions (CutCopyOp op)
|
|||
insert_result = freezelist.insert (pl);
|
||||
if (insert_result.second) {
|
||||
pl->freeze ();
|
||||
session->add_undo (pl->get_memento());
|
||||
session->add_command (new MementoUndoCommand<Playlist>(*pl, pl->get_state()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3041,7 +3071,7 @@ Editor::cut_copy_regions (CutCopyOp op)
|
|||
|
||||
for (set<Playlist*>::iterator pl = freezelist.begin(); pl != freezelist.end(); ++pl) {
|
||||
(*pl)->thaw ();
|
||||
session->add_redo_no_execute ((*pl)->get_memento());
|
||||
session->add_command (new MementoRedoCommand<Playlist>(*(*pl), (*pl)->get_state()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3154,9 +3184,9 @@ Editor::paste_named_selection (float times)
|
|||
tmp = chunk;
|
||||
++tmp;
|
||||
|
||||
session->add_undo (apl->get_memento());
|
||||
XMLNode &before = apl->get_state();
|
||||
apl->paste (**chunk, edit_cursor->current_frame, times);
|
||||
session->add_redo_no_execute (apl->get_memento());
|
||||
session->add_command(new MementoCommand<AudioPlaylist>(*apl, before, apl->get_state()));
|
||||
|
||||
if (tmp != ns->playlists.end()) {
|
||||
chunk = tmp;
|
||||
|
|
@ -3185,9 +3215,9 @@ Editor::duplicate_some_regions (RegionSelection& regions, float times)
|
|||
sigc::connection c = atv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view));
|
||||
|
||||
playlist = (*i)->region().playlist();
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->duplicate (r, r.last_frame(), times);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
session->add_command(new MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
|
||||
c.disconnect ();
|
||||
|
||||
|
|
@ -3225,9 +3255,10 @@ Editor::duplicate_selection (float times)
|
|||
if ((playlist = (*i)->playlist()) == 0) {
|
||||
continue;
|
||||
}
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->duplicate (**ri, selection->time[clicked_selection].end, times);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
XMLNode &after = playlist->get_state();
|
||||
session->add_command (new MementoCommand<Playlist>(*playlist, before, after));
|
||||
|
||||
++ri;
|
||||
if (ri == new_regions.end()) {
|
||||
|
|
@ -3275,9 +3306,10 @@ void
|
|||
Editor::clear_playlist (Playlist& playlist)
|
||||
{
|
||||
begin_reversible_command (_("clear playlist"));
|
||||
session->add_undo (playlist.get_memento());
|
||||
XMLNode &before = playlist.get_state();
|
||||
playlist.clear ();
|
||||
session->add_redo_no_execute (playlist.get_memento());
|
||||
XMLNode &after = playlist.get_state();
|
||||
session->add_command (new MementoCommand<Playlist>(playlist, before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
|
@ -3311,9 +3343,10 @@ Editor::nudge_track (bool use_edit_cursor, bool forwards)
|
|||
continue;
|
||||
}
|
||||
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->nudge_after (start, distance, forwards);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
XMLNode &after = playlist->get_state();
|
||||
session->add_command (new MementoCommand<Playlist>(*playlist, before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -3367,9 +3400,9 @@ Editor::normalize_region ()
|
|||
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*r);
|
||||
if (!arv)
|
||||
continue;
|
||||
session->add_undo (arv->region().get_memento());
|
||||
XMLNode &before = arv->region().get_state();
|
||||
arv->audio_region().normalize_to (0.0f);
|
||||
session->add_redo_no_execute (arv->region().get_memento());
|
||||
session->add_command (new MementoCommand<Region>(arv->region(), before, arv->region().get_state()));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -3394,9 +3427,9 @@ Editor::denormalize_region ()
|
|||
AudioRegionView* const arv = dynamic_cast<AudioRegionView*>(*r);
|
||||
if (!arv)
|
||||
continue;
|
||||
session->add_undo (arv->region().get_memento());
|
||||
XMLNode &before = arv->region().get_state();
|
||||
arv->audio_region().set_scale_amplitude (1.0f);
|
||||
session->add_redo_no_execute (arv->region().get_memento());
|
||||
session->add_command (new MementoCommand<Region>(arv->region(), before, arv->region().get_state()));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
|
|
@ -3440,9 +3473,10 @@ Editor::apply_filter (AudioFilter& filter, string command)
|
|||
|
||||
if (arv->audio_region().apply (filter) == 0) {
|
||||
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->replace_region (arv->region(), *(filter.results.front()), arv->region().position());
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
XMLNode &after = playlist->get_state();
|
||||
session->add_command(new MementoCommand<Playlist>(*playlist, before, after));
|
||||
} else {
|
||||
goto out;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue