X-Git-Url: http://git.maemo.org/git/?p=watersofshiloah;a=blobdiff_plain;f=src%2Fmormonchannel_gtk.py;h=fb2132df82d7f3368a3ce4e1277e894aae3cde52;hp=0ddff73acc382743e274e9ace71794293a35233b;hb=f77cda973fab5dd7c1d4f6621650c6bce1725aa7;hpb=4fe668385d73efc85dc6a61dda036a2bbb906986 diff --git a/src/mormonchannel_gtk.py b/src/mormonchannel_gtk.py index 0ddff73..fb2132d 100755 --- a/src/mormonchannel_gtk.py +++ b/src/mormonchannel_gtk.py @@ -2,8 +2,13 @@ # -*- coding: utf-8 -*- """ +@todo Need to confirm id's are persistent (not just for todos but broken behavior on transition) + @todo Track recent + @todo Persisted Pause + @todo Favorites +@todo Sleep timer @todo Reverse order option. Toggle between playing ascending/descending chronological order -@todo Track recent +@todo Podcast integration """ from __future__ import with_statement @@ -12,14 +17,12 @@ import gc import logging import ConfigParser +import gobject +import dbus +import dbus.mainloop.glib import gtk try: - import hildon -except ImportError: - hildon = None - -try: import osso except ImportError: osso = None @@ -30,6 +33,7 @@ import util.misc as misc_utils import imagestore import player +import stream_index import windows @@ -41,24 +45,31 @@ class MormonChannelProgram(hildonize.get_app_class()): def __init__(self): super(MormonChannelProgram, self).__init__() - self._player = player.Player() self._store = imagestore.ImageStore("../data", "../data") + self._index = stream_index.AudioIndex() + self._player = player.Player(self._index) - if not hildonize.IS_HILDON_SUPPORTED: - _moduleLogger.info("No hildonization support") - - if osso is not None: - self._osso_c = osso.Context(constants.__app_name__, constants.__version__, False) - self._deviceState = osso.DeviceState(self._osso_c) - self._deviceState.set_device_state_callback(self._on_device_state_change, 0) - else: - _moduleLogger.info("No osso support") - self._osso_c = None - self._deviceState = None - - self._sourceSelector = windows.SourceSelector(self._player, self._store) - self._sourceSelector.window.connect("destroy", self._on_destroy) - self._load_settings() + self._index.start() + try: + if not hildonize.IS_HILDON_SUPPORTED: + _moduleLogger.info("No hildonization support") + + if osso is not None: + self._osso_c = osso.Context(constants.__app_name__, constants.__version__, False) + self._deviceState = osso.DeviceState(self._osso_c) + self._deviceState.set_device_state_callback(self._on_device_state_change, 0) + else: + _moduleLogger.info("No osso support") + self._osso_c = None + self._deviceState = None + + self._sourceSelector = windows.source.SourceSelector(self._player, self._store, self._index) + self._sourceSelector.window.connect("destroy", self._on_destroy) + self._sourceSelector.show() + self._load_settings() + except: + self._index.stop() + raise def _save_settings(self): config = ConfigParser.SafeConfigParser() @@ -89,9 +100,14 @@ class MormonChannelProgram(hildonize.get_app_class()): @misc_utils.log_exception(_moduleLogger) def _on_destroy(self, widget = None, data = None): + self.quit() + + def quit(self): try: self._save_settings() + self._index.stop() + try: self._deviceState.close() except AttributeError: @@ -119,11 +135,18 @@ class MormonChannelProgram(hildonize.get_app_class()): def run(): - if hildonize.IS_HILDON_SUPPORTED: - gtk.set_application_name(constants.__pretty_app_name__) + gobject.threads_init() + gtk.gdk.threads_init() + l = dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + + hildonize.set_application_title(constants.__pretty_app_name__) app = MormonChannelProgram() if not PROFILE_STARTUP: - gtk.main() + try: + gtk.main() + except KeyboardInterrupt: + app.quit() + raise if __name__ == "__main__":