def wait(self, stage=STATE_CHANNELS_LOADED): loop = MainLoop(None, True) def data_ready_cb(new_stage): if new_stage >= stage: loop.quit() self.__service.connect_to_signal('DataReady', data_ready_cb) if self.__service.GetDataStage() >= stage: loop.quit() progress_id = 0 if loop.is_running(): if sys.stdout.isatty(): progress = ['-\r', '\\\r', '|\r', '/\r'] def progress_cb(): c = progress.pop(0) sys.stdout.write(c) sys.stdout.flush() progress.append(c) return True progress_id = timeout_add(250, progress_cb) sys.stdout.write(' loading...\r') loop.run() if progress_id: source_remove(progress_id) sys.stdout.write('\r\033[K') sys.stdout.flush()
def __init__(self, bus): def player_message_cb(bus, message): if gst.MESSAGE_EOS == message.type: self.__player.set_state(gst.STATE_NULL) return True if gst.MESSAGE_ERROR == message.type: print message.structure and message.structure.to_string() or '' self.__player.set_state(gst.STATE_NULL) return True if gst.MESSAGE_STATE_CHANGED == message.type: if message.src == self.__player: self.StateChanged(*self.GetState()) self.__favorites.set_state(*self.GetState()) return True if gst.MESSAGE_TAG == message.type: valid_types = float, int, str, unicode tags = [(k, v) for k, v in dict(message.structure).items() if isinstance(v, valid_types)] self.StreamTagsChanged(dict(tags)) return True return True self.__data_stage = 0 self.__player = Player() self.__player.get_bus().add_watch(player_message_cb) self.__httplib = Http(cache=get_cache_filename()) self.__favorites = Favorites() self.__stations = list() self.__stream_tags = dict() proxy = SessionBus().get_object('org.freedesktop.Notifications', '/org/freedesktop/Notifications') self.__notifications = Interface(proxy, 'org.freedesktop.Notifications') self.__notify_id = 0 name = BusName(Service.name, bus) super(Service, self).__init__(bus, '/', name) self.__loop = MainLoop(None, True) Thread(target=self.__load).start()
def __init__(self, g_file): self._folder = None self._loop = MainLoop() # Make the archive uri uri = g_file.get_uri() uri = 'archive://' + quote(uri, '') # Mount the archive if needed g_file = File(uri) # Already mounted ? if g_file.query_exists(): self._folder = g_file else: mount_operation = MountOperation() mount_operation.set_anonymous(True) g_file.mount_enclosing_volume(mount_operation, self._mount_end) # Wait self._loop.run()