[pitivi] ui: seek only when timeline/ruler has focus. Fixes #579319.
- From: Edward Hervey <edwardrv src gnome org>
- To: svn-commits-list gnome org
- Subject: [pitivi] ui: seek only when timeline/ruler has focus. Fixes #579319.
- Date: Tue, 19 May 2009 14:02:48 -0400 (EDT)
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]