[pitivi] track.py: preserve shape of curve after splitting



commit 207512d6f3ebcb0e6ee375608f23aa1a0726eccd
Author: Brandon Lewis <brandon_lewis alum berkeley edu>
Date:   Tue Jan 5 14:03:03 2010 -0800

    track.py: preserve shape of curve after splitting

 pitivi/timeline/track.py |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)
---
diff --git a/pitivi/timeline/track.py b/pitivi/timeline/track.py
index 9a83a82..9603cc4 100644
--- a/pitivi/timeline/track.py
+++ b/pitivi/timeline/track.py
@@ -139,6 +139,7 @@ class Interpolator(Signallable, Loggable):
         Loggable.__init__(self)
         self.debug("track:%r, element:%r, property:%r", trackobject, element, prop)
         self._keyframes = []
+        self.trackobject = trackobject
 
         if minimum is None:
             minimum = prop.minimum
@@ -274,6 +275,9 @@ class Interpolator(Signallable, Loggable):
         self._keyframeTimeValueChanged(self.end, stop, self.end.value)
         self.end.setObjectTime(stop)
 
+    def valueAt(self, time):
+        return self._controller.get(self._property.name, time)
+
     keyframes = property(getKeyframes)
 
 class TrackObject(Signallable, Loggable):
@@ -366,6 +370,7 @@ class TrackObject(Signallable, Loggable):
             else:
                 interpolator.attachToElementProperty(gst_object_property,
                         gst_object)
+                interpolator.updateMediaStop(self.media_stop)
 
                 # remove and add again the keyframes so they are set on the
                 # current controller
@@ -533,10 +538,18 @@ class TrackObject(Signallable, Loggable):
 
         other = self.copy()
 
+        # update interpolators
+        for prop, i in self.interpolators.itervalues():
+            value = i.valueAt(position)
+            i.end.setValue(value)
+
+        for prop, i in other.interpolators.itervalues():
+            value = i.valueAt(position)
+            i.start.setValue(value)
+
         other.trimObjectStart(position)
         self.setObjectDuration(position - self.gnl_object.props.start)
         self.setObjectMediaDuration(position - self.gnl_object.props.start)
-
         return other
 
     # True when the track object is part of the timeline's current selection



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