[pitivi] ui: seek only when timeline/ruler has focus. Fixes #579319.



commit 31109323fe70414db10e4826e09dd6caaaf779d5
Author: Brandon Lewis <brandon_lewis berkeley edu>
Date:   Fri May 15 16:02:31 2009 -0700

    ui: seek only when timeline/ruler has focus. Fixes #579319.
    
    Also move keyboard seeking to ui.timeline.
---
 pitivi/ui/mainwindow.py |   31 -------------------------------
 pitivi/ui/timeline.py   |   33 +++++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/pitivi/ui/mainwindow.py b/pitivi/ui/mainwindow.py
index 2b100f7..398db37 100644
--- a/pitivi/ui/mainwindow.py
+++ b/pitivi/ui/mainwindow.py
@@ -308,7 +308,6 @@ class PitiviMainWindow(gtk.Window, Loggable):
         self.set_geometry_hints(min_width=800, min_height=480)
         self.connect("destroy", self._destroyCb)
         self.connect("configure-event", self._configureCb)
-        self.connect("key-press-event", self._keyPressEventCb)
 
         # main menu & toolbar
         vbox = gtk.VBox(False)
@@ -448,35 +447,6 @@ class PitiviMainWindow(gtk.Window, Loggable):
         self._saveWindowSettings()
         self.app.shutdown()
 
-    def _keyPressEventCb(self, unused_widget, event):
-        kv = event.keyval
-        mod = event.get_state()
-        self._keyPress(kv, mod)
-
-    def _keyPress(self, kv, mod):
-        frame = long(self.rate * gst.SECOND)
-        now = self.timelinepos
-
-        if kv == gtk.keysyms.Left:
-            if mod & gtk.gdk.SHIFT_MASK:
-                self.viewer.seekRelative(-gst.SECOND)
-            elif mod & gtk.gdk.CONTROL_MASK:
-                ltime, rtime = self.project.timeline.edges.closest(now)
-                self.viewer.seek(ltime)
-            else:
-                self.viewer.seekRelative(-frame)
-            return True
-        elif kv == gtk.keysyms.Right:
-            if mod & gtk.gdk.SHIFT_MASK:
-                self.viewer.seekRelative(gst.SECOND)
-            elif mod & gtk.gdk.CONTROL_MASK:
-                ltime, rtime = self.project.timeline.edges.closest(now)
-                self.viewer.seek(rtime)
-            else:
-                self.viewer.seekRelative(frame)
-            return True
-        return False
-
     def _exposeEventCb(self, unused_widget, event):
         if self._do_pending_fullscreen:
             self._fullScreenAlternateCb(None)
@@ -722,7 +692,6 @@ class PitiviMainWindow(gtk.Window, Loggable):
 
     @handler(project, "settings-changed")
     def _settingsChangedCb(self, project):
-        self.rate = float(1 / self.project.settings.videorate)
         if self.viewer.action == self.project.view_action:
             sett = self.project.getSettings()
             self.viewer.setDisplayAspectRatio(float(sett.videopar * sett.videowidth) / float(sett.videoheight))
diff --git a/pitivi/ui/timeline.py b/pitivi/ui/timeline.py
index 2ebfa67..22e04f2 100644
--- a/pitivi/ui/timeline.py
+++ b/pitivi/ui/timeline.py
@@ -150,6 +150,7 @@ class Timeline(gtk.Table, Loggable, Zoomable):
         self.ruler = ruler.ScaleRuler(self.hadj)
         self.ruler.set_size_request(0, 35)
         self.ruler.set_border_width(2)
+        self.ruler.connect("key-press-event", self._keyPressEventCb)
         self.attach(self.ruler, 1, 2, 0, 1, yoptions=0)
 
         # proportional timeline
@@ -224,6 +225,7 @@ class Timeline(gtk.Table, Loggable, Zoomable):
         self.connect("drag-motion", self._dragMotionCb)
         self._canvas.connect("button-press-event", self._buttonPress)
         self._canvas.connect("button-release-event", self._buttonRelease)
+        self._canvas.connect("key-press-event", self._keyPressEventCb)
 
     def _timelineControlsTrackExpandedCb(self, timeline_controls,
             track, expanded):
@@ -232,6 +234,32 @@ class Timeline(gtk.Table, Loggable, Zoomable):
 
 ## Event callbacks
 
+    def _keyPressEventCb(self, unused_widget, event):
+        kv = event.keyval
+        mod = event.get_state()
+        frame = long(self.rate * gst.SECOND)
+        now = self.project.pipeline.getPosition()
+
+        if kv == gtk.keysyms.Left:
+            if mod & gtk.gdk.SHIFT_MASK:
+                self.project.pipeline.seekRelative(-gst.SECOND)
+            elif mod & gtk.gdk.CONTROL_MASK:
+                ltime, rtime = self.project.timeline.edges.closest(now)
+                self.project.pipeline.seek(ltime)
+            else:
+                self.project.pipeline.seekRelative(-frame)
+            return True
+        elif kv == gtk.keysyms.Right:
+            if mod & gtk.gdk.SHIFT_MASK:
+                self.project.pipeline.seekRelative(gst.SECOND)
+            elif mod & gtk.gdk.CONTROL_MASK:
+                ltime, rtime = self.project.timeline.edges.closest(now)
+                self.project.pipeline.seek(rtime)
+            else:
+                self.project.pipeline.seekRelative(frame)
+            return True
+        return False
+
     def _buttonPress(self, window, event):
         self.shrink = False
 
@@ -351,9 +379,14 @@ class Timeline(gtk.Table, Loggable, Zoomable):
             self._canvas.timeline = self.timeline
             self._canvas.zoomChanged()
             self.ruler.zoomChanged()
+            self._settingsChangedCb(self.project)
 
     project = receiver(_setProject)
 
+    @handler(project, "settings-changed")
+    def _settingsChangedCb(self, project):
+        self.rate = float(1 / self.project.getSettings().videorate)
+
 ## Timeline callbacks
 
     def _setTimeline(self):



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