[pitivi] Add undo support for splitting object. Redo still broken.
- From: Edward Hervey <edwardrv src gnome org>
- To: svn-commits-list gnome org
- Subject: [pitivi] Add undo support for splitting object. Redo still broken.
- Date: Thu, 11 Jun 2009 12:39:58 -0400 (EDT)
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]