# Bryan Schumaker (4 / 20 / 2011) import gtk import gobject import libsaria import queue from ocarina import body from ocarina import settings from ocarina.body import footer from libsaria import callbacks import playlist import library def on_play(): footer.on_play() callbacks.on_play = on_play def on_pause(): footer.on_pause() callbacks.on_pause = on_pause def on_load(file, attrs): footer.on_load(attrs) queue.refresh() body.cur_page_goto() callbacks.on_load = on_load def on_like(like): footer.on_like(like) callbacks.on_like = on_like # A bit of a hack to force setting album art in the main thread # Basically, I create a new signal and trigger it when new album # art arrives gobject.signal_new("get_art", gobject.GObject, gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_INT, gobject.TYPE_STRING)) def on_get_art_helper(obj, id, path): if id == libsaria.sources.get_cur_id(): footer.set_art(path) on_get_art_obj = gobject.GObject() on_get_art_obj.connect("get_art", on_get_art_helper) def on_get_art(path, id): on_get_art_obj.emit("get_art", id, path) callbacks.on_get_art = on_get_art def on_load_playlist(): playlist.refresh() callbacks.on_load_playlist = on_load_playlist def library_updated(): library.refresh() settings.library.refresh() callbacks.on_library_updated = library_updated def on_queue_changed(): queue.refresh() callbacks.on_queue_changed = on_queue_changed def on_refilter(): queue.refilter() playlist.refilter() library.refilter() callbacks.on_refilter = on_refilter