[pitivi/ges] timeline: Properly reset projects when loading a new one



commit 92a78b5be4bce2655b9eabcd35a5fc4df5529497
Author: Thibault Saunier <thibault saunier collabora com>
Date:   Tue May 1 20:46:10 2012 -0400

    timeline: Properly reset projects when loading a new one

 pitivi/mainwindow.py        |    1 +
 pitivi/timeline/timeline.py |   18 +++++++++++++++---
 2 files changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/pitivi/mainwindow.py b/pitivi/mainwindow.py
index e138290..b2456e0 100644
--- a/pitivi/mainwindow.py
+++ b/pitivi/mainwindow.py
@@ -389,6 +389,7 @@ class PitiviMainWindow(gtk.Window, Loggable):
         vpaned.show()
 
         self.timeline_ui = Timeline(instance, self.uimanager)
+        self.timeline_ui.setProjectManager(self.app.projectManager)
         self.app.current = None
         vpaned.pack2(self.timeline_ui, resize=True, shrink=False)
         self.timeline_ui.show()
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index 5f2d145..634f8ac 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -591,11 +591,15 @@ class Timeline(gtk.Table, Loggable, Zoomable):
         self.pipeline_state = gst.STATE_NULL
         self._createUI()
         self.rate = gst.Fraction(1, 1)
-        self._project = None
         self._timeline = None
+
+        # Timeline edition related fields
         self._creating_tckobjs_sigid = {}
         self._move_context = None
 
+        self._project = None
+        self._projectmanager = None
+
         #Ids of the tracks notify::duration signals
         self._tcks_sig_ids = {}
         #Ids of the layer-added and layer-removed signals
@@ -1170,7 +1174,7 @@ class Timeline(gtk.Table, Loggable, Zoomable):
 
 ## Project callbacks
 
-    def _newProjectCreatedCb(self, app, project):
+    def _projectChangedCb(self, app, project):
         """
         When a new blank project is created, immediately clear the timeline.
 
@@ -1178,7 +1182,7 @@ class Timeline(gtk.Table, Loggable, Zoomable):
         media library, waiting for a "ready" signal.
         """
         self.debug("New blank project created, pre-emptively clearing the timeline")
-        self.setProject(self.app.current)
+        self.setProject(project)
 
     def setProject(self, project):
         self.debug("Setting project %s", project)
@@ -1199,6 +1203,14 @@ class Timeline(gtk.Table, Loggable, Zoomable):
             self._pipeline.connect("position", self.positionChangedCb)
             self._project.connect("settings-changed", self._settingsChangedCb)
 
+    def setProjectManager(self, projectmanager):
+        if self._projectmanager is not None:
+            self._projectmanager.disconnect_by_func(self._projectChangedCb)
+
+        self._projectmanager = projectmanager
+        if projectmanager is not None:
+            projectmanager.connect("new-project-loaded", self._projectChangedCb)
+
     def _settingsChangedCb(self, project, old, new):
         rate = new.videorate
         self.rate = float(1 / rate)



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