[pitivi/ges: 3/287] Implement the seek function
- From: Jean-FranÃois Fortin Tam <jfft src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi/ges: 3/287] Implement the seek function
- Date: Thu, 15 Mar 2012 16:26:05 +0000 (UTC)
commit 6eea9e73b988b4ff02189461dbedcd044f3f985b
Author: Mathieu Duponchelle <seeed laposte net>
Date: Tue Jul 19 16:31:58 2011 +0200
Implement the seek function
pitivi/ui/viewer.py | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/pitivi/ui/viewer.py b/pitivi/ui/viewer.py
index f595e81..1252b16 100644
--- a/pitivi/ui/viewer.py
+++ b/pitivi/ui/viewer.py
@@ -106,8 +106,6 @@ class PitiviViewer(gtk.VBox, Loggable):
Loggable.__init__(self)
self.log("New PitiviViewer")
- self.seeker = Seeker(80)
- self.seeker.connect('seek', self._seekerSeekCb)
self.action = action
self.pipeline = None
@@ -163,6 +161,8 @@ class PitiviViewer(gtk.VBox, Loggable):
self.pipeline.set_state(gst.STATE_PAUSED)
self.currentState = gst.STATE_PAUSED
self._setUiActive()
+ self.seeker = self.app.projectManager.current.seeker
+ self.seeker.connect('seek', self._seekerSeekCb)
def setAction(self, action):
"""
@@ -459,7 +459,10 @@ class PitiviViewer(gtk.VBox, Loggable):
def _seekerSeekCb(self, seeker, position, format):
try:
- self.pipeline.seek(position, format)
+ self.pipeline.seek(1.0, format, gst.SEEK_FLAG_FLUSH,
+ gst.SEEK_TYPE_SET, position,
+ gst.SEEK_TYPE_NONE, -1)
+ self.app.gui.timeline.timelinePositionChanged(position)
except PipelineError:
self.error("seek failed %s %s", gst.TIME_ARGS(position), format)
@@ -468,6 +471,8 @@ class PitiviViewer(gtk.VBox, Loggable):
self.current_time = value
self.current_frame = frame
self.timecode_entry.setWidgetValue(value, False)
+ position = self.pipeline.query_position(gst.FORMAT_TIME)[0]
+ self.app.gui.timeline.timelinePositionChanged(position)
if not self.moving_slider:
self.posadjust.set_value(float(value))
return False
@@ -513,9 +518,11 @@ class PitiviViewer(gtk.VBox, Loggable):
def _playButtonCb(self, unused_button, playing):
if playing:
+ self.playing = True
self.pipeline.set_state(gst.STATE_PLAYING)
gobject.timeout_add(300, self._posCb)
else:
+ self.playing = False
self.pipeline.set_state(gst.STATE_PAUSED)
def _forwardCb(self, unused_button):
@@ -603,6 +610,10 @@ class PitiviViewer(gtk.VBox, Loggable):
def seekRelative(self, time):
try:
+ seekvalue = max(0, min(position + time,
+ self.getDuration()))
+ self.seek(seekvalue)
+ position = self.pipeline.query_position(gst.FORMAT_TIME)[0]
self.pipeline.seekRelative(time)
except:
self.warning("seek failed")
@@ -611,6 +622,8 @@ class PitiviViewer(gtk.VBox, Loggable):
position = self.pipeline.query_position(gst.FORMAT_TIME)[0]
self._newTime(position)
self.app.gui.timeline._canvas.timelinePositionChanged(position)
+ if not self.playing :
+ return False
return True
def _currentStateCb(self, state):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]