[pitivi/ges: 87/287] ui: Enhance layer and vertical scrollbar management in the timeline



commit 467375dfdfa2d78dc3ebe989d3ab07cfd5aedc3b
Author: Thibault Saunier <thibault saunier collabora com>
Date:   Tue Dec 13 20:46:38 2011 -0300

    ui: Enhance layer and vertical scrollbar management in the timeline

 pitivi/ui/timeline.py |   28 +++++++++++++++++++++-------
 1 files changed, 21 insertions(+), 7 deletions(-)
---
diff --git a/pitivi/ui/timeline.py b/pitivi/ui/timeline.py
index e350c55..af07c7a 100644
--- a/pitivi/ui/timeline.py
+++ b/pitivi/ui/timeline.py
@@ -730,37 +730,51 @@ class Timeline(gtk.Table, Loggable, Zoomable):
 
         self.delTimeline()
         self._timeline = timeline
+
+        # Connecting to timeline signals
         for track in self._timeline.get_tracks():
             self._tcks_sig_ids[track] = track.connect("notify::duration",
                     self.setDuration)
-        self._layer_sig_ids.append(self._timeline.connect("layer-added", self._layerAddedCb))
-        self._layer_sig_ids.append(self._timeline.connect("layer-removed", self._layerRemovedCb))
+        self._layer_sig_ids.append(self._timeline.connect("layer-added",
+                self._layerAddedCb))
+        self._layer_sig_ids.append(self._timeline.connect("layer-removed",
+                self._layerRemovedCb))
+
+        # Make sure to set the current layer in use
         self._layerAddedCb(None, None)
 
     def getTimeline(self):
         return self._timeline
 
     def delTimeline(self):
+        # Disconnect signal
         for track, sigid in self._tcks_sig_ids.iteritems():
             track.disconnect(sigid)
 
         for sigid in self._layer_sig_ids:
             self._timeline.disconnect(sigid)
 
+        # clear dictionaries
+        self._tcks_sig_ids = {}
+        self._layer_sig_ids = []
         self._timeline = None
 
     timeline = property(getTimeline, setTimeline, delTimeline,
             "The GESTimeline")
 
     def _layerAddedCb(self, unused_layer, unused_user_data):
+        self.updateVScrollAdjustments()
+
+    def _layerRemovedCb(self, unused_layer, unused_user_data):
+        self.updateVScrollAdjustments()
+
+    def updateVScrollAdjustments(self):
         layers = self._timeline.get_layers()
         num_layers = len(layers)
 
-        self.vadj.props.upper = (LAYER_HEIGHT_EXPANDED + LAYER_SPACING + TRACK_SPACING) * 2 * num_layers
-
-    def _layerRemovedCb(self, unused_layer, unused_user_data):
-        self.vadj.props.upper = LAYER_HEIGHT_EXPANDED *\
-            (len(self._timeline.get_layers())) + TRACK_SPACING
+        # Ensure height of the scrollbar
+        self.vadj.props.upper = (LAYER_HEIGHT_EXPANDED + LAYER_SPACING
+                + TRACK_SPACING) * 2 * num_layers
 
     def updateScrollAdjustments(self):
         a = self.get_allocation()



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