summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_tempodisplay.cc
diff options
context:
space:
mode:
authorHans Fugal <hans@fugal.net>2006-07-25 01:50:20 +0000
committerHans Fugal <hans@fugal.net>2006-07-25 01:50:20 +0000
commitb7bffbe7a249356a93d25a41f7c472cc9dd8f27f (patch)
treef4e2739586f55cca66834c32c63bb7027c46e920 /gtk2_ardour/editor_tempodisplay.cc
parent55159005b925396eeb41529f6e5b1d998fe63dc2 (diff)
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
Diffstat (limited to 'gtk2_ardour/editor_tempodisplay.cc')
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc29
1 files changed, 17 insertions, 12 deletions
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index 5f998ada9f..0456087859 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -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;
}