[pitivi] viewer: Handle project video size changes



commit ba2e588a9fc56a42039760321b4b20611b9016b6
Author: Thibault Saunier <tsaunier gnome org>
Date:   Fri Apr 1 16:42:47 2016 +0200

    viewer: Handle project video size changes
    
    So that we recompute the viewer overlays properly

 pitivi/project.py        |    8 +++++++-
 pitivi/viewer/overlay.py |   16 +++++++++++++++-
 2 files changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/pitivi/project.py b/pitivi/project.py
index 34b3337..fe35038 100644
--- a/pitivi/project.py
+++ b/pitivi/project.py
@@ -724,6 +724,7 @@ class Project(Loggable, GES.Project):
                                         GObject.TYPE_PYOBJECT,)),
         "settings-set-from-imported-asset": (GObject.SignalFlags.RUN_LAST, None,
                                              (GES.Asset,)),
+        "video-size-changed": (GObject.SignalFlags.RUN_LAST, None, ()),
     }
 
     def __init__(self, app, name="", uri=None, scenario=None, **unused_kwargs):
@@ -905,7 +906,12 @@ class Project(Loggable, GES.Project):
 
     def setVideoRestriction(self, name, value):
         self._has_default_video_settings = False
-        return Project._set_restriction(self.video_profile, name, value)
+        res = Project._set_restriction(self.video_profile, name, value)
+
+        if res:
+            self.emit("video-size-changed")
+
+        return res
 
     def __setAudioRestriction(self, name, value):
         self._has_default_audio_settings = False
diff --git a/pitivi/viewer/overlay.py b/pitivi/viewer/overlay.py
index 4873ed2..15302e0 100644
--- a/pitivi/viewer/overlay.py
+++ b/pitivi/viewer/overlay.py
@@ -19,6 +19,9 @@
 # License along with this program; if not, write to the
 # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 # Boston, MA 02110-1301, USA.
+"""
+Base class for the video viewer overlays
+"""
 
 import numpy
 
@@ -39,8 +42,16 @@ class Overlay(Gtk.DrawingArea, Loggable):
         self._source = source
         self.click_source_position = None
         self.stack = stack
+
         project = stack.app.project_manager.current_project
-        self.project_size = numpy.array([project.videowidth, project.videoheight])
+        project.connect("video-size-changed", self._canvas_size_changed_cb)
+        self.project_size = numpy.array([project.videowidth,
+                                         project.videoheight])
+
+    def _canvas_size_changed_cb(self, project):
+        project = self.stack.app.project_manager.current_project
+        self.project_size = numpy.array([project.videowidth,
+                                         project.videoheight])
 
     def _is_hovered(self):
         return self.stack.hovered_overlay == self
@@ -67,6 +78,9 @@ class Overlay(Gtk.DrawingArea, Loggable):
         self.stack.hovered_overlay = self
 
     def unhover(self):
+        """
+        Mark @self as not over anymore
+        """
         self.stack.hovered_overlay = None
         self.queue_draw()
 


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