[pitivi] ui.timeline: finally get layers and track controls to appear properly



commit 429f4113a6e32ff7186e09526c0e507123eb602f
Author: Brandon Lewis <brandon_lewis berkeley edu>
Date:   Sat Mar 14 14:38:53 2009 -0700

    ui.timeline: finally get layers and track controls to appear properly
---
 pitivi/ui/timeline.py         |    1 +
 pitivi/ui/timelinecontrols.py |   35 ++++++++++++++++++++++-------------
 2 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/pitivi/ui/timeline.py b/pitivi/ui/timeline.py
index 3e012d1..2208ee7 100644
--- a/pitivi/ui/timeline.py
+++ b/pitivi/ui/timeline.py
@@ -249,6 +249,7 @@ class Timeline(gtk.Table, Loggable, Zoomable):
     def setProject(self, project):
         self.project = project
         self.timeline = project.timeline
+        self._controls.timeline = self.timeline
         self._canvas.timeline = self.timeline
         self._canvas.zoomChanged()
 
diff --git a/pitivi/ui/timelinecontrols.py b/pitivi/ui/timelinecontrols.py
index 81f0522..25fb22e 100644
--- a/pitivi/ui/timelinecontrols.py
+++ b/pitivi/ui/timelinecontrols.py
@@ -19,28 +19,37 @@ class TrackControls(gtk.Expander):
 
     def __init__(self, track):
         gtk.Expander.__init__(self, track_name(track))
+        self.props.use_markup = True
         self.track = track
         self.set_size_request(TRACK_CONTROL_WIDTH, LAYER_HEIGHT_EXPANDED)
-        self.tracks = {}
 
-class TimelineControls(gtk.HBox):
+class TimelineControls(gtk.VBox):
 
     def __init__(self, timeline):
-        gtk.HBox.__init__(self)
-        self.timeline = timeline
-        self.set_size_request(TRACK_CONTROL_WIDTH, 50)
+        gtk.VBox.__init__(self)
+        self._tracks = []
         self.set_spacing(LAYER_SPACING)
+        self.timeline = timeline
+
+## Timeline callbacks
 
-    timeline = receiver()
+    def _set_timeline(self):
+        while self._tracks:
+            self._trackRemoved(None, 0)
+        if self.timeline:
+            for track in self.timeline.tracks:
+                self._trackAdded(None, track)
+
+    timeline = receiver(_set_timeline)
 
     @handler(timeline, "track-added")
     def _trackAdded(self, timeline, track):
-        tc = TrackControls(track)
-        self.pack_start(tc)
-        tc.show()
-        self.tracks[track] = tc
+        track = TrackControls(track)
+        self._tracks.append(track)
+        self.pack_start(track, False, False)
 
     @handler(timeline, "track-removed")
-    def _trackRemoved(self, timeline, track):
-        self.remove(self.tracks[track])
-
+    def _trackRemoved(self, unused_timeline, position):
+        track = self._tracks[position]
+        del self._tracks[position]
+        self.remove(track)



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