import util.misc as misc_utils
try:
- import stream as _stream
- stream = _stream # Silence PyFlakes
+ import stream_gst
+ stream = stream_gst
except ImportError:
- import stream_gst as stream
+ try:
+ import stream_osso
+ stream = stream_osso
+ except ImportError:
+ import stream_null
+ stream = stream_null
import stream_index
import call_monitor
),
}
-
def __init__(self):
gobject.GObject.__init__(self)
#Fields
--- /dev/null
+#!/usr/bin/env python
+
+from __future__ import with_statement
+from __future__ import division
+
+import gobject
+import logging
+
+
+_moduleLogger = logging.getLogger(__name__)
+
+
+class Stream(gobject.GObject):
+
+ STATE_PLAY = "play"
+ STATE_PAUSE = "pause"
+ STATE_STOP = "stop"
+
+ __gsignals__ = {
+ 'state-change' : (
+ gobject.SIGNAL_RUN_LAST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_STRING, ),
+ ),
+ 'eof' : (
+ gobject.SIGNAL_RUN_LAST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_STRING, ),
+ ),
+ 'error' : (
+ gobject.SIGNAL_RUN_LAST,
+ gobject.TYPE_NONE,
+ (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT),
+ ),
+ }
+
+ def __init__(self):
+ gobject.GObject.__init__(self)
+
+ @property
+ def playing(self):
+ return False
+
+ @property
+ def has_file(self):
+ return False
+
+ @property
+ def state(self):
+ return self.STATE_STOP
+
+ def set_file(self, uri):
+ self.emit("error", "Audio not supported on this platform", "")
+
+ def play(self):
+ self.emit("error", "Audio not supported on this platform", "")
+
+ def pause(self):
+ self.emit("error", "Audio not supported on this platform", "")
+
+ def stop(self):
+ self.emit("error", "Audio not supported on this platform", "")
+
+ @property
+ def elapsed(self):
+ return 0
+
+ @property
+ def duration(self):
+ return 0
+
+ def seek_time(self, ns):
+ self.emit("error", "Audio not supported on this platform", "")
+
+
+if __name__ == "__main__":
+ pass
+
def _on_player_error(self, player, err, debug):
assert not self._isDestroyed
_moduleLogger.error("%r - %r" % (err, debug))
+ self._errorBanner.push_message(err)
@misc_utils.log_exception(_moduleLogger)
def _on_navigating(self, widget, navState):
self._presenterNavigation.toplevel.add(self._presenter.toplevel)
self.connect_auto(self._presenterNavigation, "action", self._on_nav_action)
self.connect_auto(self._presenterNavigation, "navigating", self._on_navigating)
+ self.connect_auto(self._player, "error", self._on_player_error)
self._radioLayout = gtk.VBox(False)
self._radioLayout.pack_start(self._treeScroller, True, True)
return i
@misc_utils.log_exception(_moduleLogger)
+ def _on_player_error(self, player, err, debug):
+ assert not self._isDestroyed
+ _moduleLogger.error("%r - %r" % (err, debug))
+ self._errorBanner.push_message(err)
+
+ @misc_utils.log_exception(_moduleLogger)
def _on_continual_update(self, *args):
if self._isDestroyed:
return False