[pitivi/ges: 161/287] playback: Create a utils/playback.py file



commit 049949519143da301f4e1b291494045a51498555
Author: Thibault Saunier <thibault saunier collabora com>
Date:   Mon Jan 9 14:07:21 2012 -0300

    playback: Create a utils/playback.py file
    
    This file should contained all the utils that are related to the playback
    
    Add The Seeker class to it

 pitivi/project.py                 |    2 +-
 pitivi/ui/clipproperties.py       |    2 +-
 pitivi/ui/effectsconfiguration.py |    2 +-
 pitivi/ui/ruler.py                |    2 +-
 pitivi/utils/Makefile.am          |    1 +
 pitivi/utils/misc.py              |   88 ---------------------------
 pitivi/utils/playback.py          |  120 +++++++++++++++++++++++++++++++++++++
 7 files changed, 125 insertions(+), 92 deletions(-)
---
diff --git a/pitivi/project.py b/pitivi/project.py
index ad8d0ab..25bf5d2 100644
--- a/pitivi/project.py
+++ b/pitivi/project.py
@@ -26,7 +26,7 @@ Project class
 import ges
 import gst
 
-from pitivi.utils.misc import Seeker
+from pitivi.utils.playback import Seeker
 from pitivi.utils.loggable import Loggable
 from pitivi.sourcelist import SourceList
 from pitivi.settings import MultimediaSettings
diff --git a/pitivi/ui/clipproperties.py b/pitivi/ui/clipproperties.py
index 038e7b3..a7f26d8 100644
--- a/pitivi/ui/clipproperties.py
+++ b/pitivi/ui/clipproperties.py
@@ -30,7 +30,7 @@ import ges
 
 from gettext import gettext as _
 
-from pitivi.utils.misc import Seeker
+from pitivi.utils.playback import Seeker
 from pitivi.check import soft_deps
 from pitivi.configure import get_ui_dir
 from pitivi.utils.loggable import Loggable
diff --git a/pitivi/ui/effectsconfiguration.py b/pitivi/ui/effectsconfiguration.py
index 0f3a086..b26cafd 100644
--- a/pitivi/ui/effectsconfiguration.py
+++ b/pitivi/ui/effectsconfiguration.py
@@ -22,7 +22,7 @@ import gst
 import gtk
 import gobject
 
-from pitivi.utils.misc import Seeker
+from pitivi.utils.playback import Seeker
 from pitivi.ui.gstwidget import GstElementSettingsWidget
 from pitivi.ui.dynamic import FractionWidget
 
diff --git a/pitivi/ui/ruler.py b/pitivi/ui/ruler.py
index 58f18c6..f2a4771 100644
--- a/pitivi/ui/ruler.py
+++ b/pitivi/ui/ruler.py
@@ -27,7 +27,7 @@ import gobject
 import gtk
 import gst
 
-from pitivi.utils.misc import Seeker
+from pitivi.utils.playback import Seeker
 
 from pitivi.ui.zoominterface import Zoomable
 from pitivi.utils.loggable import Loggable
diff --git a/pitivi/utils/Makefile.am b/pitivi/utils/Makefile.am
index afc42b2..6ef20df 100644
--- a/pitivi/utils/Makefile.am
+++ b/pitivi/utils/Makefile.am
@@ -7,6 +7,7 @@ utils_PYTHON = 	\
 	extract.py      \
 	timeline.py     \
 	loggable.py     \
+	playback.py     \
 	misc.py
 
 clean-local:
diff --git a/pitivi/utils/misc.py b/pitivi/utils/misc.py
index bd38f92..7a3eb7b 100644
--- a/pitivi/utils/misc.py
+++ b/pitivi/utils/misc.py
@@ -268,94 +268,6 @@ def uri_is_reachable(uri):
     return os.path.isfile(gst.uri_get_location(uri))
 
 
-class Seeker(Signallable):
-    """
-    The Seeker is a singleton helper class to do various seeking
-    operations in the pipeline.
-    """
-
-    __signals__ = {
-        'seek': ['position', 'format'],
-        'flush': [],
-        'seek-relative': ['time'],
-        'position-changed': ['position']
-    }
-    _instance = None
-
-    def __new__(cls, *args, **kwargs):
-        if not cls._instance:
-            cls._instance = super(Seeker, cls).__new__(
-                                cls, *args, **kwargs)
-        return cls._instance
-
-    def __init__(self, timeout):
-        self.timeout = timeout
-        self.pending_seek_id = None
-        self.position = None
-        self.format = None
-        self._time = None
-
-    def seek(self, position, format=gst.FORMAT_TIME, on_idle=False):
-        self.format = format
-        self.position = position
-
-        if self.pending_seek_id is None:
-            if on_idle:
-                gobject.idle_add(self._seekTimeoutCb)
-            else:
-                self._seekTimeoutCb()
-            self.pending_seek_id = self._scheduleSeek(self.timeout,
-                    self._seekTimeoutCb)
-
-    def seekRelative(self, time, on_idle=False):
-        if self.pending_seek_id is None:
-            self._time = time
-            if on_idle:
-                gobject.idle_add(self._seekRelativeTimeoutCb)
-            else:
-                self._seekTimeoutCb()
-            self.pending_seek_id = self._scheduleSeek(self.timeout,
-                    self._seekTimeoutCb, True)
-
-    def flush(self):
-        try:
-            self.emit('flush')
-        except:
-            log.doLog(log.ERROR, None, "seeker", "Error while flushing", None)
-
-    def _scheduleSeek(self, timeout, callback, relative=False):
-        return gobject.timeout_add(timeout, callback, relative)
-
-    def _seekTimeoutCb(self, relative=False):
-        self.pending_seek_id = None
-        if relative:
-            try:
-                self.emit('seek-relative', self._time)
-            except:
-                log.doLog(log.ERROR, None, "seeker", "Error while seeking %s relative",
-                        self._time)
-                # if an exception happened while seeking, properly
-                # reset ourselves
-                return False
-
-            self._time = None
-        elif self.position != None and self.format != None:
-            position, self.position = self.position, None
-            format, self.format = self.format, None
-            try:
-                self.emit('seek', position, format)
-            except:
-                log.doLog(log.ERROR, None, "seeker", "Error while seeking to position:%s format:%r",
-                          (gst.TIME_ARGS(position), format))
-                # if an exception happened while seeking, properly
-                # reset ourselves
-                return False
-        return False
-
-    def setPosition(self, position):
-        self.emit("position-changed", position)
-
-
 def get_filesystem_encoding():
     return sys.getfilesystemencoding() or "utf-8"
 
diff --git a/pitivi/utils/playback.py b/pitivi/utils/playback.py
new file mode 100644
index 0000000..fc6a479
--- /dev/null
+++ b/pitivi/utils/playback.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+#
+#       seek.py
+#
+# Copyright (C) 2012 Thibault Saunier <thibaul saunier collabora com>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+
+
+import gst
+import gobject
+
+import pitivi.utils.loggable as log
+
+from pitivi.signalinterface import Signallable
+
+
+class Seeker(Signallable):
+    """
+    The Seeker is a singleton helper class to do various seeking
+    operations in the pipeline.
+    """
+
+    __signals__ = {
+        'seek': ['position', 'format'],
+        'flush': [],
+        'seek-relative': ['time'],
+        'position-changed': ['position']
+    }
+    _instance = None
+
+    def __new__(cls, *args, **kwargs):
+        if not cls._instance:
+            cls._instance = super(Seeker, cls).__new__(
+                                cls, *args, **kwargs)
+        return cls._instance
+
+    def __init__(self, timeout):
+        self.timeout = timeout
+        self.pending_seek_id = None
+        self.position = None
+        self.format = None
+        self._time = None
+
+    def seek(self, position, format=gst.FORMAT_TIME, on_idle=False):
+        self.format = format
+        self.position = position
+
+        if self.pending_seek_id is None:
+            if on_idle:
+                gobject.idle_add(self._seekTimeoutCb)
+            else:
+                self._seekTimeoutCb()
+            self.pending_seek_id = self._scheduleSeek(self.timeout,
+                    self._seekTimeoutCb)
+
+    def seekRelative(self, time, on_idle=False):
+        if self.pending_seek_id is None:
+            self._time = time
+            if on_idle:
+                gobject.idle_add(self._seekRelativeTimeoutCb)
+            else:
+                self._seekTimeoutCb()
+            self.pending_seek_id = self._scheduleSeek(self.timeout,
+                    self._seekTimeoutCb, True)
+
+    def flush(self):
+        try:
+            self.emit('flush')
+        except:
+            log.doLog(log.ERROR, None, "seeker", "Error while flushing", None)
+
+    def _scheduleSeek(self, timeout, callback, relative=False):
+        return gobject.timeout_add(timeout, callback, relative)
+
+    def _seekTimeoutCb(self, relative=False):
+        self.pending_seek_id = None
+        if relative:
+            try:
+                self.emit('seek-relative', self._time)
+            except:
+                log.doLog(log.ERROR, None, "seeker", "Error while seeking %s relative",
+                        self._time)
+                # if an exception happened while seeking, properly
+                # reset ourselves
+                return False
+
+            self._time = None
+        elif self.position != None and self.format != None:
+            position, self.position = self.position, None
+            format, self.format = self.format, None
+            try:
+                self.emit('seek', position, format)
+            except:
+                log.doLog(log.ERROR, None, "seeker", "Error while seeking to position:%s format:%r",
+                          (gst.TIME_ARGS(position), format))
+                # if an exception happened while seeking, properly
+                # reset ourselves
+                return False
+        return False
+
+    def setPosition(self, position):
+        self.emit("position-changed", position)



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