diff options
author | Hans Fugal <hans@fugal.net> | 2006-07-25 01:50:20 +0000 |
---|---|---|
committer | Hans Fugal <hans@fugal.net> | 2006-07-25 01:50:20 +0000 |
commit | b7bffbe7a249356a93d25a41f7c472cc9dd8f27f (patch) | |
tree | f4e2739586f55cca66834c32c63bb7027c46e920 /gtk2_ardour/editor_tempodisplay.cc | |
parent | 55159005b925396eeb41529f6e5b1d998fe63dc2 (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.cc | 29 |
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; } |