r191@gandalf: fugalh | 2006-07-24 19:50:10 -0600
All the obvious MementoCommand grunt work. Now there's some add_undo/add_redo_no_execute sprinkled around where one is separated from the other (e.g. in different callbacks) or perhaps even where there's only an undo and no redo. Also some sigc-based undo/redo pairs that probably need their own Command class. git-svn-id: svn://localhost/ardour2/branches/undo@692 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
55159005b9
commit
b7bffbe7a2
@ -1786,9 +1786,10 @@ AudioTimeAxisView::paste (jack_nframes_t pos, float times, Selection& selection,
|
||||
if (get_diskstream()->speed() != 1.0f)
|
||||
pos = session_frame_to_track_frame(pos, get_diskstream()->speed() );
|
||||
|
||||
_session.add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->paste (**p, pos, times);
|
||||
_session.add_redo_no_execute (playlist->get_memento());
|
||||
_session.add_command(MementoCommand<Playlist>(*playlist, before,
|
||||
playlist->get_state()));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1013,11 +1013,11 @@ AutomationLine::remove_point (ControlPoint& cp)
|
||||
model_representation (cp, mr);
|
||||
|
||||
trackview.editor.current_session()->begin_reversible_command (_("remove control point"));
|
||||
trackview.editor.current_session()->add_undo (get_memento());
|
||||
XMLNode &before = get_state();
|
||||
|
||||
alist.erase (mr.start, mr.end);
|
||||
|
||||
trackview.editor.current_session()->add_redo_no_execute (get_memento());
|
||||
trackview.editor.current_session()->add_command(MementoCommand<AutomationLine>(*this, before, get_state()));
|
||||
trackview.editor.current_session()->commit_reversible_command ();
|
||||
trackview.editor.current_session()->set_dirty ();
|
||||
}
|
||||
@ -1225,9 +1225,10 @@ void
|
||||
AutomationLine::clear ()
|
||||
{
|
||||
/* parent must create command */
|
||||
XMLNode &before = get_state();
|
||||
trackview.editor.current_session()->add_undo (get_memento());
|
||||
alist.clear();
|
||||
trackview.editor.current_session()->add_redo_no_execute (get_memento());
|
||||
trackview.editor.current_session()->add_command (MementoCommand<AutomationLine>(*this, before, get_state()));
|
||||
trackview.editor.current_session()->commit_reversible_command ();
|
||||
trackview.editor.current_session()->set_dirty ();
|
||||
}
|
||||
|
@ -662,9 +662,9 @@ AutomationTimeAxisView::paste_one (AutomationLine& line, jack_nframes_t pos, flo
|
||||
(*x)->value = foo;
|
||||
}
|
||||
|
||||
_session.add_undo (alist.get_memento());
|
||||
XMLNode &before = alist.get_state();
|
||||
alist.paste (copy, pos, times);
|
||||
_session.add_redo_no_execute (alist.get_memento());
|
||||
_session.add_command (MementoCommand<AutomationList>(alist, before, alist.get_state()));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -318,9 +318,9 @@ int
|
||||
|
||||
AudioRegion* copy = new AudioRegion (region);
|
||||
begin_reversible_command (_("insert sndfile"));
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->add_region (*copy, pos);
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
session->add_command (MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
commit_reversible_command ();
|
||||
|
||||
pos += region.length();
|
||||
|
@ -102,11 +102,12 @@ Editor::kbd_mute_unmute_region ()
|
||||
{
|
||||
if (entered_regionview) {
|
||||
begin_reversible_command (_("mute region"));
|
||||
session->add_undo (entered_regionview->region.playlist()->get_memento());
|
||||
XMLNode &before = entered_regionview->region.playlist()->get_state();
|
||||
|
||||
entered_regionview->region.set_muted (!entered_regionview->region.muted());
|
||||
|
||||
session->add_redo_no_execute (entered_regionview->region.playlist()->get_memento());
|
||||
XMLNode &after = entered_regionview->region.playlist()->get_state();
|
||||
session->add_command (MementoCommand<Playlist>(entered_regionview->region.playlist(), before, after));
|
||||
commit_reversible_command();
|
||||
}
|
||||
}
|
||||
|
@ -290,9 +290,11 @@ Editor::mouse_add_new_marker (jack_nframes_t where)
|
||||
if (session) {
|
||||
Location *location = new Location (where, where, "mark", Location::IsMark);
|
||||
session->begin_reversible_command (_("add marker"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = session->locations()->get_state();
|
||||
session->locations()->add (location, true);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
after = session->locations()->get_state();
|
||||
session->add_command (MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
@ -329,9 +331,11 @@ gint
|
||||
Editor::really_remove_marker (Location* loc)
|
||||
{
|
||||
session->begin_reversible_command (_("remove marker"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = session->locations()->get_state();
|
||||
session->locations()->remove (loc);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
after = session->locations()->get_state();
|
||||
session->add_command (MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
return FALSE;
|
||||
}
|
||||
@ -838,12 +842,13 @@ Editor::marker_menu_rename ()
|
||||
}
|
||||
|
||||
begin_reversible_command ( _("rename marker") );
|
||||
session->add_undo( session->locations()->get_memento() );
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
|
||||
dialog.get_result(txt);
|
||||
loc->set_name (txt);
|
||||
|
||||
session->add_redo_no_execute( session->locations()->get_memento() );
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command (MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -868,10 +873,11 @@ Editor::new_transport_marker_menu_set_loop ()
|
||||
|
||||
if ((tll = transport_loop_location()) == 0) {
|
||||
Location* loc = new Location (temp_location->start(), temp_location->end(), _("Loop"), Location::IsAutoLoop);
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
session->locations()->add (loc, true);
|
||||
session->set_auto_loop_location (loc);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command (MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
}
|
||||
else {
|
||||
session->add_undo (retype_return<void>(bind (mem_fun (*tll, &Location::set), tll->start(), tll->end())));
|
||||
@ -894,10 +900,11 @@ Editor::new_transport_marker_menu_set_punch ()
|
||||
|
||||
if ((tpl = transport_punch_location()) == 0) {
|
||||
tpl = new Location (temp_location->start(), temp_location->end(), _("Punch"), Location::IsAutoPunch);
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before = session->locations()->get_state();
|
||||
session->locations()->add (tpl, true);
|
||||
session->set_auto_punch_location (tpl);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
XMLNode &after = session->locations()->get_state();
|
||||
session->add_command (MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
} else {
|
||||
session->add_undo (retype_return<void>(bind (mem_fun (*tpl, &Location::set), tpl->start(), tpl->end())));
|
||||
session->add_redo (retype_return<void>(bind (mem_fun (*tpl, &Location::set), temp_location->start(), temp_location->end())));
|
||||
|
@ -207,9 +207,11 @@ Editor::split_regions_at (jack_nframes_t where, AudioRegionSelection& regions)
|
||||
_new_regionviews_show_envelope = (*a)->envelope_visible();
|
||||
|
||||
if (pl) {
|
||||
session->add_undo (pl->get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = pl->get_state();
|
||||
pl->split_region ((*a)->region, where);
|
||||
session->add_redo_no_execute (pl->get_memento());
|
||||
after = pl->get_state();
|
||||
session->add_command(MementoCommand<Playlist>(*pl, before, after));
|
||||
}
|
||||
|
||||
a = tmp;
|
||||
@ -229,9 +231,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(MementoCommand<Playlist>(*playlist, before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -404,9 +407,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 (MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -438,14 +442,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(MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -478,9 +483,11 @@ Editor::nudge_forward_capture_offset ()
|
||||
for (AudioRegionSelection::iterator i = selection->audio_regions.begin(); i != selection->audio_regions.end(); ++i) {
|
||||
AudioRegion& r ((*i)->region);
|
||||
|
||||
session->add_undo (r.playlist()->get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = r.playlist()->get_state();
|
||||
r.set_position (r.position() + distance, this);
|
||||
session->add_redo_no_execute (r.playlist()->get_memento());
|
||||
after = r.playlist()->get_state();
|
||||
session->add_command(MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -504,14 +511,15 @@ Editor::nudge_backward_capture_offset ()
|
||||
for (AudioRegionSelection::iterator i = selection->audio_regions.begin(); i != selection->audio_regions.end(); ++i) {
|
||||
AudioRegion& 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(MementoCommand<Playlist>(*(r.playlist()), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -1288,9 +1296,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(MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -1301,9 +1310,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(MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -1319,9 +1329,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(MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -1737,9 +1748,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(MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
@ -1749,7 +1761,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();
|
||||
@ -1759,7 +1771,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(MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
@ -1768,9 +1781,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(MementoCommand<Locations>(*(sessions->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
session->locations()->clear ();
|
||||
}
|
||||
@ -1818,9 +1832,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(MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -1854,9 +1868,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(MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -2277,7 +2291,9 @@ Editor::separate_region_from_selection ()
|
||||
begin_reversible_command (_("separate"));
|
||||
doing_undo = true;
|
||||
}
|
||||
if (doing_undo) session->add_undo ((playlist)->get_memento());
|
||||
XMLNode &before, &after;
|
||||
if (doing_undo)
|
||||
before = playlist->get_state();
|
||||
|
||||
/* XXX need to consider musical time selections here at some point */
|
||||
|
||||
@ -2287,7 +2303,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(MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2322,11 +2339,14 @@ Editor::separate_regions_using_location (Location& loc)
|
||||
if (atv->is_audio_track()) {
|
||||
|
||||
if ((playlist = atv->playlist()) != 0) {
|
||||
XMLNode &before, &after;
|
||||
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 */
|
||||
|
||||
@ -2334,7 +2354,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(MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -2405,9 +2426,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 (MementoCommand<Playlist>(*(*i), before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -2442,9 +2464,9 @@ Editor::region_fill_track ()
|
||||
return;
|
||||
}
|
||||
|
||||
session->add_undo (pl->get_memento());
|
||||
XMLNode &before = pl->get_state();
|
||||
pl->add_region (*(new AudioRegion (region)), region.last_frame(), times);
|
||||
session->add_redo_no_execute (pl->get_memento());
|
||||
session->add_command (MementoCommand<Playlist>(*pl, before, pl->get_state()));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -2492,9 +2514,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 (MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -2509,9 +2531,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(MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -2529,9 +2552,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(MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -2541,9 +2565,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(MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
@ -2556,9 +2581,10 @@ Editor::naturalize ()
|
||||
}
|
||||
begin_reversible_command (_("naturalize"));
|
||||
for (AudioRegionSelection::iterator i = selection->audio_regions.begin(); i != selection->audio_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 (MementoCommand<AudioRegion>((*i)->region, before, after));
|
||||
}
|
||||
commit_reversible_command ();
|
||||
}
|
||||
@ -2624,7 +2650,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);
|
||||
@ -2632,7 +2658,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(MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
|
||||
}
|
||||
|
||||
@ -2666,7 +2693,8 @@ 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, &after;
|
||||
before = region.playlist()->get_state();
|
||||
|
||||
switch (point) {
|
||||
case SyncPoint:
|
||||
@ -2684,7 +2712,8 @@ Editor::align_region_internal (Region& region, RegionPoint point, jack_nframes_t
|
||||
break;
|
||||
}
|
||||
|
||||
session->add_redo_no_execute (region.playlist()->get_memento());
|
||||
after = region.playlist()->get_state();
|
||||
session->add_command(MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
}
|
||||
|
||||
void
|
||||
@ -2706,9 +2735,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(MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -2731,9 +2761,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(MementoCommand<Playlist>(*(region.playlist()), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -2845,9 +2876,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 (MementoCommand<Playlist> (*playlist, before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -3136,9 +3168,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(MementoCommand<AudioPlaylist>(*apl, before, apl->get_state()));
|
||||
|
||||
if (tmp != ns->playlists.end()) {
|
||||
chunk = tmp;
|
||||
@ -3167,9 +3199,9 @@ Editor::duplicate_some_regions (AudioRegionSelection& regions, float times)
|
||||
sigc::connection c = atv->view->AudioRegionViewAdded.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(MementoCommand<Playlist>(*playlist, before, playlist->get_state()));
|
||||
|
||||
c.disconnect ();
|
||||
|
||||
@ -3207,9 +3239,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 (MementoCommand<Playlist>(*playlist, before, after));
|
||||
|
||||
++ri;
|
||||
if (ri == new_regions.end()) {
|
||||
@ -3257,9 +3290,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 (MementoCommand<Playlist>(playlist, before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -3293,9 +3327,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 (MementoCommand<Playlist>(*playlist, before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -3346,9 +3381,10 @@ Editor::normalize_region ()
|
||||
gdk_flush ();
|
||||
|
||||
for (AudioRegionSelection::iterator r = selection->audio_regions.begin(); r != selection->audio_regions.end(); ++r) {
|
||||
session->add_undo ((*r)->region.get_memento());
|
||||
XMLNode &before = (*r)->region.get_state();
|
||||
(*r)->region.normalize_to (0.0f);
|
||||
session->add_redo_no_execute ((*r)->region.get_memento());
|
||||
XMLNode &after = (*r)->region.get_state();
|
||||
session->add_command (MementoCommand<AudioRegion>((*r)->region, before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -3370,9 +3406,10 @@ Editor::denormalize_region ()
|
||||
begin_reversible_command ("denormalize");
|
||||
|
||||
for (AudioRegionSelection::iterator r = selection->audio_regions.begin(); r != selection->audio_regions.end(); ++r) {
|
||||
session->add_undo ((*r)->region.get_memento());
|
||||
XMLNode &before = (*r)->region.get_state();
|
||||
(*r)->region.set_scale_amplitude (1.0f);
|
||||
session->add_redo_no_execute ((*r)->region.get_memento());
|
||||
XMLNode &after = (*r)->region.get_state();
|
||||
session->add_command (MementoCommand<AudioRegion>((*r)->region, before, after));
|
||||
}
|
||||
|
||||
commit_reversible_command ();
|
||||
@ -3414,9 +3451,10 @@ Editor::apply_filter (AudioFilter& filter, string command)
|
||||
|
||||
if (region.apply (filter) == 0) {
|
||||
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->replace_region (region, *(filter.results.front()), region.position());
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
XMLNode &after = playlist->get_state();
|
||||
session->add_command(MementoCommand<Playlist>(*playlist, before, after));
|
||||
} else {
|
||||
goto out;
|
||||
}
|
||||
|
@ -273,9 +273,10 @@ Editor::mouse_add_new_tempo_event (jack_nframes_t frame)
|
||||
tempo_dialog.get_bbt_time (requested);
|
||||
|
||||
begin_reversible_command (_("add tempo mark"));
|
||||
session->add_undo (map.get_memento());
|
||||
XMLNode &before = map.get_state();
|
||||
map.add_tempo (Tempo (bpm), requested);
|
||||
session->add_redo_no_execute (map.get_memento());
|
||||
XMLNode &after = map.get_state();
|
||||
session->add_command(MementoCommand<TempoMap>(map, before, after));
|
||||
commit_reversible_command ();
|
||||
|
||||
map.dump (cerr);
|
||||
@ -313,9 +314,9 @@ Editor::mouse_add_new_meter_event (jack_nframes_t frame)
|
||||
meter_dialog.get_bbt_time (requested);
|
||||
|
||||
begin_reversible_command (_("add meter mark"));
|
||||
session->add_undo (map.get_memento());
|
||||
XMLNode &before = map.get_state();
|
||||
map.add_meter (Meter (bpb, note_type), requested);
|
||||
session->add_redo_no_execute (map.get_memento());
|
||||
session->add_command(MementoCommand<TempoMap>(map, before, map.get_state()));
|
||||
commit_reversible_command ();
|
||||
|
||||
map.dump (cerr);
|
||||
@ -364,9 +365,10 @@ Editor::edit_meter_section (MeterSection* section)
|
||||
double note_type = meter_dialog.get_note_type ();
|
||||
|
||||
begin_reversible_command (_("replace tempo mark"));
|
||||
session->add_undo (session->tempo_map().get_memento());
|
||||
XMLNode &before = session->tempo_map().get_state();
|
||||
session->tempo_map().replace_meter (*section, Meter (bpb, note_type));
|
||||
session->add_redo_no_execute (session->tempo_map().get_memento());
|
||||
XMLNode &before = session->tempo_map().get_state();
|
||||
session->add_command(MementoCommand<TempoMap>(session->tempo_map(), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -392,10 +394,11 @@ Editor::edit_tempo_section (TempoSection* section)
|
||||
bpm = max (0.01, bpm);
|
||||
|
||||
begin_reversible_command (_("replace tempo mark"));
|
||||
session->add_undo (session->tempo_map().get_memento());
|
||||
XMLNode &before = session->tempo_map().get_state();
|
||||
session->tempo_map().replace_tempo (*section, Tempo (bpm));
|
||||
session->tempo_map().move_tempo (*section, when);
|
||||
session->add_redo_no_execute (session->tempo_map().get_memento());
|
||||
XMLNode &after = session->tempo_map().get_state();
|
||||
session->add_command (MementoCommand<TempoMap>(session->tempo_map(), before, after));
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -441,9 +444,10 @@ gint
|
||||
Editor::real_remove_tempo_marker (TempoSection *section)
|
||||
{
|
||||
begin_reversible_command (_("remove tempo mark"));
|
||||
session->add_undo (session->tempo_map().get_memento());
|
||||
XMLNode &before = session->tempo_map().get_state();
|
||||
session->tempo_map().remove_tempo (*section);
|
||||
session->add_redo_no_execute (session->tempo_map().get_memento());
|
||||
XMLNode &after = session->tempo_map().get_state();
|
||||
session->add_command(MementoCommand<TempoMap>(session->tempo_map(), before, after));
|
||||
commit_reversible_command ();
|
||||
|
||||
return FALSE;
|
||||
@ -474,9 +478,10 @@ gint
|
||||
Editor::real_remove_meter_marker (MeterSection *section)
|
||||
{
|
||||
begin_reversible_command (_("remove tempo mark"));
|
||||
session->add_undo (session->tempo_map().get_memento());
|
||||
XMLNode &before = session->tempo_map().get_state();
|
||||
session->tempo_map().remove_meter (*section);
|
||||
session->add_redo_no_execute (session->tempo_map().get_memento());
|
||||
XMLNode &after = session->tempo_map().get_state();
|
||||
session->add_command(MementoCommand<TempoMap>(session->tempo_map(), before, after));
|
||||
commit_reversible_command ();
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -203,9 +203,10 @@ Editor::do_timestretch (TimeStretchDialog& dialog)
|
||||
return;
|
||||
}
|
||||
|
||||
session->add_undo (playlist->get_memento());
|
||||
XMLNode &before = playlist->get_state();
|
||||
playlist->replace_region (aregion, *new_region, aregion.position());
|
||||
session->add_redo_no_execute (playlist->get_memento());
|
||||
XMLNode &after = playlist->get_state();
|
||||
session->add_command (MementoCommand<Playlist>(*playlist, before, after));
|
||||
|
||||
i = tmp;
|
||||
}
|
||||
|
@ -61,9 +61,11 @@ GainAutomationTimeAxisView::add_automation_event (ArdourCanvas::Item* item, GdkE
|
||||
|
||||
_session.begin_reversible_command (_("add gain automation event"));
|
||||
|
||||
_session.add_undo (curve.get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = curve.get_state();
|
||||
curve.add (when, y);
|
||||
_session.add_redo_no_execute (curve.get_memento());
|
||||
after = curve.get_state();
|
||||
_session.add_command(MementoCommand<ARDOUR::Curve>(curve, before, after));
|
||||
_session.commit_reversible_command ();
|
||||
_session.set_dirty ();
|
||||
}
|
||||
|
@ -654,9 +654,11 @@ gint LocationUI::do_location_remove (ARDOUR::Location *loc)
|
||||
}
|
||||
|
||||
session->begin_reversible_command (_("remove marker"));
|
||||
session->add_undo (session->locations()->get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = session->locations()->get_state();
|
||||
session->locations()->remove (loc);
|
||||
session->add_redo_no_execute (session->locations()->get_memento());
|
||||
after = session->locations()->get_state();
|
||||
session->add_command(MementoCommand<Location>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
|
||||
return FALSE;
|
||||
@ -772,9 +774,10 @@ LocationUI::add_new_location()
|
||||
jack_nframes_t where = session->audible_frame();
|
||||
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 (MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
|
||||
@ -788,9 +791,10 @@ LocationUI::add_new_range()
|
||||
Location *location = new Location (where, where, "unnamed",
|
||||
Location::IsRangeMarker);
|
||||
session->begin_reversible_command (_("add range 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 (MementoCommand<Locations>(*(session->locations()), before, after));
|
||||
session->commit_reversible_command ();
|
||||
}
|
||||
}
|
||||
|
@ -78,9 +78,11 @@ PanAutomationTimeAxisView::add_automation_event (ArdourCanvas::Item* item, GdkEv
|
||||
AutomationList& alist (lines.front()->the_list());
|
||||
|
||||
_session.begin_reversible_command (_("add pan automation event"));
|
||||
_session.add_undo (alist.get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = alist.get_state();
|
||||
alist.add (when, y);
|
||||
_session.add_undo (alist.get_memento());
|
||||
after = alist.get_state();
|
||||
_seession.add_command(MementoCommand<AutomationList>(alist, before, after));
|
||||
_session.commit_reversible_command ();
|
||||
_session.set_dirty ();
|
||||
}
|
||||
|
@ -97,9 +97,11 @@ RedirectAutomationTimeAxisView::add_automation_event (ArdourCanvas::Item* item,
|
||||
lines.front()->view_to_model_y (y);
|
||||
|
||||
_session.begin_reversible_command (description);
|
||||
_session.add_undo (alist.get_memento());
|
||||
XMLNode &before, &after;
|
||||
before = alist.get_state();
|
||||
alist.add (when, y);
|
||||
_session.add_redo_no_execute (alist.get_memento());
|
||||
after = alist.get_state();
|
||||
_session.add_command(MementoCommand<AutomationList>(alist, before, after));
|
||||
_session.commit_reversible_command ();
|
||||
_session.set_dirty ();
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ AudioRegionGainLine::remove_point (ControlPoint& cp)
|
||||
model_representation (cp, mr);
|
||||
|
||||
trackview.editor.current_session()->begin_reversible_command (_("remove control point"));
|
||||
trackview.editor.current_session()->add_undo (get_memento());
|
||||
XMLNode &before = get_state();
|
||||
|
||||
if (!rv.region.envelope_active()) {
|
||||
trackview.session().add_undo( bind( mem_fun(rv.region, &AudioRegion::set_envelope_active), false) );
|
||||
@ -70,7 +70,7 @@ AudioRegionGainLine::remove_point (ControlPoint& cp)
|
||||
|
||||
alist.erase (mr.start, mr.end);
|
||||
|
||||
trackview.editor.current_session()->add_redo_no_execute (get_memento());
|
||||
trackview.editor.current_session()->add_command (MementoCommand<AudioRegionGainLine>(*this, before, get_state()));
|
||||
trackview.editor.current_session()->commit_reversible_command ();
|
||||
trackview.editor.current_session()->set_dirty ();
|
||||
}
|
||||
|
@ -1144,7 +1144,7 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev)
|
||||
gain_line->view_to_model_y (y);
|
||||
|
||||
trackview.session().begin_reversible_command (_("add gain control point"));
|
||||
trackview.session().add_undo (region.envelope().get_memento());
|
||||
XMLNode &before = region.envelope().get_state();
|
||||
|
||||
|
||||
if (!region.envelope_active()) {
|
||||
@ -1155,7 +1155,8 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev)
|
||||
|
||||
region.envelope().add (fx, y);
|
||||
|
||||
trackview.session().add_redo_no_execute (region.envelope().get_memento());
|
||||
XMLNode &after = region.envelope().get_state();
|
||||
trackview.session().add_command(MementoCommand<Curve>(region.envelope(), before, after));
|
||||
trackview.session().commit_reversible_command ();
|
||||
}
|
||||
|
||||
|
@ -1801,7 +1801,7 @@ AudioDiskstream::transport_stopped (struct tm& when, time_t twhen, bool abort_ca
|
||||
|
||||
// cerr << _name << ": there are " << capture_info.size() << " capture_info records\n";
|
||||
|
||||
_session.add_undo (_playlist->get_memento());
|
||||
XMLNode &before = _playlist->get_state();
|
||||
_playlist->freeze ();
|
||||
|
||||
for (buffer_position = channels[0].write_source->last_capture_start_frame(), ci = capture_info.begin(); ci != capture_info.end(); ++ci) {
|
||||
@ -1832,7 +1832,8 @@ AudioDiskstream::transport_stopped (struct tm& when, time_t twhen, bool abort_ca
|
||||
}
|
||||
|
||||
_playlist->thaw ();
|
||||
_session.add_redo_no_execute (_playlist->get_memento());
|
||||
XMLNode &after = _playlist->get_state();
|
||||
_session.add_command (MementoCommand<Playlist>(*_playlist, before, after));
|
||||
}
|
||||
|
||||
mark_write_completed = true;
|
||||
|
Loading…
Reference in New Issue
Block a user