r205@gandalf: fugalh | 2006-07-26 18:11:47 -0600
authorHans Fugal <hans@fugal.net>
Thu, 27 Jul 2006 00:19:12 +0000 (00:19 +0000)
committerHans Fugal <hans@fugal.net>
Thu, 27 Jul 2006 00:19:12 +0000 (00:19 +0000)
 More Command conversions

git-svn-id: svn://localhost/ardour2/branches/undo@697 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor_markers.cc
gtk2_ardour/region_gain_line.cc
gtk2_ardour/regionview.cc
gtk2_ardour/route_ui.cc
libs/ardour/session_transport.cc

index 5be9cc274704fe394d8ee4896f0b50d6ac1fbd22..0610b6aa9f43c918b5d5558b2197bad07c553744 100644 (file)
@@ -906,10 +906,11 @@ Editor::new_transport_marker_menu_set_punch ()
                 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())));
+                XMLNode &before = tpl->get_state();
                tpl->set_hidden(false, this);
                tpl->set(temp_location->start(), temp_location->end());
+                XMLNode &after = tpl->get_state();
+                session->add_command (MementoCommand<Location>(*tpl, before, after));
        }
        
        commit_reversible_command ();
index 54b7fa5b563a18a89a6d79bd060512e579cba8fd..526e8844ef930c0dc554f369e9d17c2d4fc7eb05 100644 (file)
@@ -47,7 +47,8 @@ AudioRegionGainLine::start_drag (ControlPoint* cp, float fraction)
 {
        AutomationLine::start_drag(cp,fraction);
        if (!rv.region.envelope_active()) {
-               trackview.session().add_undo( bind( mem_fun(rv.region, &AudioRegion::set_envelope_active), false) );
+                trackview.session().add_command(MementoUndoCommand<AudioRegion>(rv.region, rv.region.get_state()));
+                rv.region.set_envelope_active(false);
        }
 }
 
@@ -63,9 +64,10 @@ AudioRegionGainLine::remove_point (ControlPoint& cp)
         XMLNode &before = get_state();
 
        if (!rv.region.envelope_active()) {
-               trackview.session().add_undo( bind( mem_fun(rv.region, &AudioRegion::set_envelope_active), false) );
-               trackview.session().add_redo( bind( mem_fun(rv.region, &AudioRegion::set_envelope_active), true) );
+                XMLNode &before = rv.region.get_state();
                rv.region.set_envelope_active(true);
+                XMLNode &after = rv.region.get_state();
+                trackview.session().add_command(MementoCommand<AudioRegion>(rv.region, before, after));
        }
 
        alist.erase (mr.start, mr.end);
index fbd69105dff59d9d91478628c2565a0d93df5b81..b8658d2e0068aa51f256f8738d558adca43be422 100644 (file)
@@ -1148,9 +1148,11 @@ AudioRegionView::add_gain_point_event (ArdourCanvas::Item *item, GdkEvent *ev)
 
 
        if (!region.envelope_active()) {
-               trackview.session().add_undo( bind( mem_fun(region, &AudioRegion::set_envelope_active), false) );
+                XMLNode &before, &after;
+                before = region.get_state();
                region.set_envelope_active(true);
-               trackview.session().add_redo( bind( mem_fun(region, &AudioRegion::set_envelope_active), true) );
+                after = region.get_state();
+               trackview.session().add_command(MementoCommand<AudioRegion>(region, before, after));
        }
 
        region.envelope().add (fx, y);
index 4559058b8d4b4b420859edfdb9b7a1e648729b7a..84aeb9c73b9e7130484a9c4dbe31e7c0eb541bbd 100644 (file)
@@ -570,8 +570,10 @@ void
 RouteUI::reversibly_apply_route_boolean (string name, void (Route::*func)(bool, void *), bool yn, void *arg)
 {
        _session.begin_reversible_command (name);
-       _session.add_undo (bind (mem_fun (_route, func), !yn, (void *) arg));
-       _session.add_redo (bind (mem_fun (_route, func), yn, (void *) arg));
+        XMLNode &before = _route.get_state();
+        bind(mem_fun(_route, func), yn, arg)();
+        XMLNode &after = _route.get_state();
+        _session.add_command (MementoCommand<Route>(_route, before, after));
        _session.commit_reversible_command ();
 }
 
@@ -579,8 +581,10 @@ void
 RouteUI::reversibly_apply_audio_track_boolean (string name, void (AudioTrack::*func)(bool, void *), bool yn, void *arg)
 {
        _session.begin_reversible_command (name);
-       _session.add_undo (bind (mem_fun (*audio_track(), func), !yn, (void *) arg));
-       _session.add_redo (bind (mem_fun (*audio_track(), func), yn, (void *) arg));
+        XMLNode &before = audio_track()->get_state();
+       bind (mem_fun (*audio_track(), func), yn, arg)();
+        XMLNode &after = audio_track()->get_state();
+       _session.add_command (MementoCommand<AudioTrack>(*audio_track(), before, after));
        _session.commit_reversible_command ();
 }
 
index 376dee11a2ae43e11a65e39a6bc3376fdea8ca1a..1d3da72ad80ec052f0cbc0f11a56c0a7e855c805 100644 (file)
@@ -320,8 +320,10 @@ Session::non_realtime_stop (bool abort)
                }
                
                if (change_end) {
-                       add_undo (sigc::retype_return<void>(sigc::bind (mem_fun (*loc, &Location::set_end), loc->end())));
-                       add_redo (sigc::retype_return<void>(sigc::bind (mem_fun (*loc, &Location::set_end), _transport_frame)));
+                        XMLNode &before = loc->get_state();
+                        loc->set_end(_transport_frame);
+                        XMLNode &after = loc->get_state();
+                        add_command (MementoCommand<Location>(*loc, before, after));
                }
 
                _end_location_is_free = false;