[pitivi] timeline/elements: hide keyframes when the element is not selected.



commit 38145f6c9a7031570db02ac2e6893128c1261ff2
Author: Mathieu Duponchelle <mathieu duponchelle epitech eu>
Date:   Tue Jun 25 16:04:16 2013 +0200

    timeline/elements: hide keyframes when the element is not selected.

 pitivi/timeline/elements.py |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/pitivi/timeline/elements.py b/pitivi/timeline/elements.py
index 1da3310..f87f990 100644
--- a/pitivi/timeline/elements.py
+++ b/pitivi/timeline/elements.py
@@ -350,6 +350,7 @@ class TimelineElement(Clutter.Actor, Zoomable):
         self.lines = []
         self.keyframes = []
         self.source = None
+        self.keyframedElement = None
         size = self.bElement.get_duration()
 
         self._createBackground(track)
@@ -414,23 +415,32 @@ class TimelineElement(Clutter.Actor, Zoomable):
         self.keyframes = sorted(self.keyframes, key=lambda keyframe: keyframe.value.timestamp)
         self.updateKeyframes()
 
-    def showKeyframes(self, effect, propname):
-        binding = effect.get_control_binding(propname.name)
+    def showKeyframes(self, element, propname):
+        binding = element.get_control_binding(propname.name)
         if not binding:
             source = GstController.InterpolationControlSource()
             source.props.mode = GstController.InterpolationMode.LINEAR
-            if not (effect.set_control_source(source, propname.name, "direct")):
+            if not (element.set_control_source(source, propname.name, "direct")):
                 print "There was something like a problem captain"
                 return
             val = float(propname.default_value) / (propname.maximum - propname.minimum)
             source.set(self.bElement.props.in_point, val)
             source.set(self.bElement.props.duration, val)
-            binding = effect.get_control_binding(propname.name)
+            binding = element.get_control_binding(propname.name)
         self.binding = binding
         self.source = self.binding.props.control_source
         self.prop = propname
+        self.keyframedElement = element
         self.updateKeyframes()
 
+    def hideKeyframes(self):
+        for keyframe in self.keyframes:
+            self.remove_child(keyframe)
+
+        self.keyframes = []
+
+        self.drawLines()
+
     def setKeyframePosition(self, keyframe, value):
         x = self.nsToPixel(value.timestamp) - KEYFRAME_SIZE / 2
         y = EXPANDED_SIZE - (value.value * EXPANDED_SIZE)
@@ -587,6 +597,10 @@ class TimelineElement(Clutter.Actor, Zoomable):
         pass
 
     def _selectedChangedCb(self, selected, isSelected):
+        if not isSelected:
+            self.hideKeyframes()
+        elif self.keyframedElement:
+            self.showKeyframes(self.keyframedElement, self.prop)
         self.marquee.props.visible = isSelected
 
 
@@ -889,9 +903,6 @@ class URISourceElement(TimelineElement):
         self._context.editTo(new_start, priority)
         self._context.finish()
 
-    def _selectedChangedCb(self, selected, isSelected):
-        self.marquee.props.visible = isSelected
-
 
 class TransitionElement(TimelineElement):
     def __init__(self, bElement, track, timeline):


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