[pitivi] Add undo support for splitting object. Redo still broken.



commit 78c5c300745e823626eac2bba6f502f9057fa698
Author: Alessandro Decina <alessandro d gmail com>
Date:   Wed Jun 10 17:56:05 2009 +0200

    Add undo support for splitting object. Redo still broken.

 pitivi/timeline/timeline_undo.py |   22 +++++++++++++++++++---
 pitivi/ui/timelinecanvas.py      |    2 ++
 2 files changed, 21 insertions(+), 3 deletions(-)
---
diff --git a/pitivi/timeline/timeline_undo.py b/pitivi/timeline/timeline_undo.py
index 7da5d72..397caac 100644
--- a/pitivi/timeline/timeline_undo.py
+++ b/pitivi/timeline/timeline_undo.py
@@ -47,14 +47,30 @@ class TimelineObjectAdded(UndoableAction):
     def __init__(self, timeline, timeline_object):
         self.timeline = timeline
         self.timeline_object = timeline_object
+        self.timeline_object_copy = self._copyTimelineObject(timeline_object)
 
     def do(self):
+        temporary_timeline_object = \
+                self._copyTimelineObject(self.timeline_object_copy)
+        for track_object in temporary_timeline_object.track_objects:
+            track, track_object.track = track_object.track, None
+            track.addTrackObject(track_object)
+
+        self.timeline_object.track_objects = temporary_timeline_object.track_objects
         self.timeline.addTimelineObject(self.timeline_object)
-        self._done()
+        self._undone()
 
     def undo(self):
-        self.timeline.removeTimelineObject(self.timeline_object)
-        self._undone()
+        self.timeline.removeTimelineObject(self.timeline_object, deep=True)
+        self._done()
+
+    def _copyTimelineObject(self, timeline_object):
+        copy = timeline_object.copy()
+        for (track_object_copy, track_object) in \
+                    zip(copy.track_objects, timeline_object.track_objects):
+            track_object_copy.track = track_object.track
+
+        return copy
 
 class TimelineObjectRemoved(UndoableAction):
     def __init__(self, timeline, timeline_object):
diff --git a/pitivi/ui/timelinecanvas.py b/pitivi/ui/timelinecanvas.py
index 9f05c2e..7cd9d74 100644
--- a/pitivi/ui/timelinecanvas.py
+++ b/pitivi/ui/timelinecanvas.py
@@ -235,7 +235,9 @@ class TimelineCanvas(goocanvas.Canvas, Zoomable, Loggable):
         if items:
             for item in items:
                 if isinstance(item, TrackObject):
+                    self.app.action_log.begin("split object")
                     item.element.split(self.pixelToNs(x))
+                    self.app.action_log.commit()
 
         return True
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]