def __change_state(self, new_state): """ Internal function to move to a new state. If new_state is different to the current state, set self.state to new_state and perform any state initialisation for the new state. """ if self.state == new_state: # No change in state nothing todo! return logger.debug('Changing state from %s to %s', self.state, new_state) old_state = self.state self.state = new_state self.current_event_map = self.event_maps[new_state] # State Initialisation code if self.state == State.IDLE: self.state_dialog.hide() rc.remove_app(self) rc.post_event(PLAY_END) self.backend.set_events_enabled(False) elif self.state == State.TUNING: # Display the current state on the OSD self.__draw_state_screen() elif self.state == State.BUFFERING: self.wait_for_data_count = WAIT_FOR_DATA_COUNT # Display the current state on the OSD self.__draw_state_screen() elif self.state == State.PLAYING: # Display the current state on the OSD self.__draw_state_screen() self.player.start((self.backend.get_server_address(), config.LIVE_PAUSE2_PORT)) dialog.enable_overlay_display(self.player.get_display()) self.osd = display.get_osd()
def eventhandler(self, event, menuw=None): '''eventhandler''' if event == 'MENU_BACK_ONE_MENU': rc.remove_app(self) self.menuw.show() return True elif event == 'MENU_SELECT': # toggle mpc off on execMPC("mpc toggle", "") skin.draw('mpd', self) return True elif event in ('MENU_DOWN', 'MENU_RIGHT'): # Skip to the next track. print execMPC("mpc next", "") skin.draw('mpd', self) return True elif event in ('MENU_UP', 'MENU_LEFT'): # Move to the previous track. execMPC("mpc prev", "") skin.draw('mpd', self) return True return False
def Stop(self, channel_change=0): mixer = plugin.getbyname('MIXER') if mixer and not channel_change: mixer.setLineinVolume(0) mixer.setMicVolume(0) mixer.setIgainVolume(0) # Input on emu10k cards. if config.OSD_SINGLE_WINDOW: osd.video_window.hide() self.app.stop('quit\n') rc.remove_app(self) if os.path.exists('/tmp/freevo.wid'): os.unlink('/tmp/freevo.wid') if config.MPLAYER_OLDTVCHANNELCHANGE: lastchanfile = os.path.join(config.FREEVO_CACHEDIR, 'lastchan') lcfp = open(lastchanfile, "w") lastchan = self.fc.getChannel() lastchannum = self.fc.getChannelNum() lcfp.write(str(lastchan)) lcfp.write('\n') lcfp.write(str(lastchannum)) lcfp.write('\n') lcfp.close() dialog.disable_overlay_display()
def eventhandler(self, event, menuw=None): """eventhandler""" logger.log(9, "eventhandler(event=%s, menuw=%r)", event, menuw) if event == "MENU_BACK_ONE_MENU": rc.remove_app(self) self.menuw.show() return True elif event == "MENU_SELECT": self.weather.getForecast(force=1) skin.clear() skin.draw("oneclick", self, transition=skin.TRANSITION_IN) return True elif event in ("MENU_DOWN", "MENU_RIGHT"): self.nextSkin() skin.draw("oneclick", self, transition=skin.TRANSITION_PAGE) return True elif event in ("MENU_UP", "MENU_LEFT"): self.prevSkin() skin.draw("oneclick", self, transition=skin.TRANSITION_PAGE) return True return False
def eventhandler(self, event, menuw=None): """eventhandler""" logger.log(9, 'eventhandler(event=%s, menuw=%r)', event, menuw) if event == 'MENU_BACK_ONE_MENU': rc.remove_app(self) self.menuw.show() return True elif event == 'MENU_SELECT': self.weather.getForecast(force=1) skin.clear() skin.draw('oneclick', self, transition=skin.TRANSITION_IN) return True elif event in ('MENU_DOWN', 'MENU_RIGHT'): self.nextSkin() skin.draw('oneclick', self, transition=skin.TRANSITION_PAGE) return True elif event in ('MENU_UP', 'MENU_LEFT'): self.prevSkin() skin.draw('oneclick', self, transition=skin.TRANSITION_PAGE) return True return False
def eventhandler(self, event, menuw=None): '''eventhandler''' if event == 'MENU_BACK_ONE_MENU': rc.remove_app(self) self.menuw.show() return True elif event == 'MENU_SELECT': # toggle mpc off on execMPC("mpc toggle","") skin.draw( 'mpd', self ) return True elif event in ('MENU_DOWN', 'MENU_RIGHT'): # Skip to the next track. print execMPC("mpc next","") skin.draw( 'mpd', self ) return True elif event in ('MENU_UP', 'MENU_LEFT'): # Move to the previous track. execMPC("mpc prev","") skin.draw( 'mpd', self ) return True return False
def eventhandler(self, event, menuw=None): """eventhandler""" logger.log( 9, 'eventhandler(event=%s, menuw=%r)', event, menuw) if event == 'MENU_BACK_ONE_MENU': rc.remove_app(self) self.menuw.show() return True elif event == 'MENU_SELECT': self.weather.getForecast(force=1) skin.clear() skin.draw('oneclick', self, transition=skin.TRANSITION_IN) return True elif event in ('MENU_DOWN', 'MENU_RIGHT'): self.nextSkin() skin.draw('oneclick', self, transition=skin.TRANSITION_PAGE) return True elif event in ('MENU_UP', 'MENU_LEFT'): self.prevSkin() skin.draw('oneclick', self, transition=skin.TRANSITION_PAGE) return True return False
def stop(self, restore_menu=False): logger.debug('stop(restore_menu=%r)', restore_menu) if self.visible and self.dialog and restore_menu: self.dialog = audio.show_play_state(dialog.PLAY_STATE_STOP, self.item, self.get_time_info) self.dialog.show() global _player_ _player_ = None self.player.stop() self.running = False if self.visible: rc.remove_app(self.player) if restore_menu: skin.draw('player', self.item, transition=skin.TRANSITION_OUT) self.visible = False if self.dialog: self.dialog.hide() self.dialog.finish() self.dialog = None if self.menuw and not self.menuw.visible and restore_menu: self.menuw.show()
def play(self, player=None): logger.debug('%s.play(player=%r)', self.__module__, player) global _player_ if _player_ and _player_.player and _player_.player.is_playing(): _player_.stop() _player_ = self if self.player and self.player.is_playing(): self.stop() if player: self.player = player else: self.possible_players = [] for p in plugin.getbyname(plugin.AUDIO_PLAYER, True): rating = p.rate(self.item) * 10 if config.AUDIO_PREFERED_PLAYER == p.name: rating += 1 if hasattr( self.item, 'force_player') and p.name == self.item.force_player: rating += 100 if (rating, p) not in self.possible_players: self.possible_players += [(rating, p)] self.possible_players = filter(lambda l: l[0] > 0, self.possible_players) self.possible_players.sort(lambda l, o: -cmp(l[0], o[0])) if len(self.possible_players) > 0: self.player_rating, self.player = self.possible_players[0] if self.menuw and self.menuw.visible and self.visible: self.menuw.hide(clear=False) self.running = True error = self.player.play(self.item, self) if error: print error self.running = False if self.visible: rc.remove_app(self.player) self.item.eventhandler(PLAY_END) else: self.paused = False if self.visible and dialog.is_dialog_supported(): self.dialog = audio.show_play_state(dialog.PLAY_STATE_PLAY, self.item, self.get_time_info) self.dialog.show() if self.visible: rc.add_app(self.player) self.refresh()
def Stop(self, channel_change=0): mixer = plugin.getbyname('MIXER') if mixer and not channel_change: mixer.setLineinVolume(0) mixer.setMicVolume(0) mixer.setIgainVolume(0) # Input on emu10k cards. self.app.stop('quit\n') rc.remove_app(self)
def stop(self): logger.log( 9, 'stop()') self.app.stop() rc.remove_app(self) rc.resume() if plugin.is_active('joy'): try: plugin.getbyname('JOY').enable() except Exception, why: logger.warning('getbyname("JOY"): %s', why)
def stop(self): """ Stop vlc """ if not self.app: return self.app.kill(2) rc.remove_app(self) self.app = None
def Stop(self): """ Stop the xine player """ logger.debug('XineIvtv.Stop()') dialog.disable_overlay_display() self.mixer.Stop() self.tuner.Stop() self.xine.Stop() rc.remove_app(self) rc.post_event(PLAY_END) logger.debug('Stopped %r app', self.mode)
def hide(self): logger.debug('hide() self.visible=%r', self.visible) if self.visible: skin.draw('player', self.item, transition=skin.TRANSITION_OUT) self.visible = False # skin.clear() rc.remove_app(self.player) if self.dialog: self.dialog.hide() self.dialog.finish() self.dialog = None
def play(self, player=None): logger.debug('%s.play(player=%r)', self.__module__, player) global _player_ if _player_ and _player_.player and _player_.player.is_playing(): _player_.stop() _player_ = self if self.player and self.player.is_playing(): self.stop() if player: self.player = player else: self.possible_players = [] for p in plugin.getbyname(plugin.AUDIO_PLAYER, True): rating = p.rate(self.item) * 10 if config.AUDIO_PREFERED_PLAYER == p.name: rating += 1 if hasattr(self.item, 'force_player') and p.name == self.item.force_player: rating += 100 if (rating, p) not in self.possible_players: self.possible_players += [(rating, p)] self.possible_players = filter(lambda l: l[0] > 0, self.possible_players) self.possible_players.sort(lambda l, o: -cmp(l[0], o[0])) if len(self.possible_players) > 0: self.player_rating, self.player = self.possible_players[0] if self.menuw and self.menuw.visible and self.visible: self.menuw.hide(clear=False) self.running = True error = self.player.play(self.item, self) if error: print error self.running = False if self.visible: rc.remove_app(self.player) self.item.eventhandler(PLAY_END) else: self.paused = False if self.visible and dialog.is_dialog_supported(): self.dialog = audio.show_play_state(dialog.PLAY_STATE_PLAY, self.item, self.get_time_info) self.dialog.show() if self.visible: rc.add_app(self.player) self.refresh()
def __hide_current_dialog(self,finish=True): self.hide_dialog_timer.stop() dialog = self.current_dialog self.current_dialog = None dialog.hidden() if hasattr(dialog, 'event_context'): rc.remove_app(dialog) if finish: dialog.finish()
def __hide_current_dialog(self, finish=True): self.hide_dialog_timer.stop() dialog = self.current_dialog self.current_dialog = None dialog.hidden() if hasattr(dialog, 'event_context'): rc.remove_app(dialog) if finish: dialog.finish()
def stop(self, restore_menu=False): logger.debug('stop(restore_menu=%r)', restore_menu) global _player_ _player_ = None self.player.stop() self.running = False if self.visible: rc.remove_app(self.player) skin.draw('player', self.item, transition=skin.TRANSITION_OUT) if self.menuw and not self.menuw.visible and restore_menu: self.menuw.show()
def stop(self, restore_menu=False): logger.debug("stop(restore_menu=%r)", restore_menu) global _player_ _player_ = None self.player.stop() self.running = False if self.visible: rc.remove_app(self.player) skin.draw("player", self.item, transition=skin.TRANSITION_OUT) if self.menuw and not self.menuw.visible and restore_menu: self.menuw.show()
def stop(self, channel_change=0): """ Stop xine """ if self.app: if config.OSD_SINGLE_WINDOW: osd.video_window.hide() self.app.stop('quit\n') rc.remove_app(self) dialog.disable_overlay_display() if not channel_change: pass
def eventhandler(self, event, menuw=None, arg=None): try: if event in INPUT_ALL_NUMBERS: if self.selected == None: self.selected = event.arg elif self.schapter == None: self.schapter = event.arg if self.pop: self.pop.destroy() self.pop = None rc.remove_app(self) self.chapter() except: pass
def stop(self): """ Stop mplayer """ for p in self.plugins: command = p.stop() if not self.app: return if config.OSD_SINGLE_WINDOW: osd.video_window.hide() osd.video_window.set_geometry((0,0), (config.CONF.width,config.CONF.height)) self.app.stop('quit\n') rc.remove_app(self) dialog.disable_overlay_display() self.app = None self.play_state_dialog = None
def stop(self): """ Stop mplayer """ for p in self.plugins: command = p.stop() if not self.app: return if config.OSD_SINGLE_WINDOW: osd.video_window.hide() osd.video_window.set_geometry( (0, 0), (config.CONF.width, config.CONF.height)) self.app.stop('quit\n') rc.remove_app(self) dialog.disable_overlay_display() self.app = None self.play_state_dialog = None
def stop(self, event=None): """ Stop xine """ logger.log(9, 'stop(event=%r)', event) if not self.app: return if config.OSD_SINGLE_WINDOW: osd.video_window.hide() if self.tmp_playlist: try: os.remove(self.tmp_playlist) except: pass self.tmp_playlist = None if config.XINE_BOOKMARK: # if the file ends do nothing, else get elapsed time if event in (STOP, USER_END): command = "%s -S get_time --stdctl --no-splash --hide-gui" % config.CONF.xine handle = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) (cin, cout) = (handle.stdin, handle.stdout) try: position = cout.read() logger.debug("Elapsed = %s", position) if position: self.item.elapsed = int(position) finally: #xine should exit nicely, but if the first xine is already closed this xine will hang exit_code = handle.poll() if not exit_code and not cin.closed: cin.write('quit\n') self.app.stop('quit\n') rc.remove_app(self) dialog.disable_overlay_display() self.app = None self.play_state_dialog = None
def stop(self): if self.app: if self.viewer=='xine': self.app.stop('quit\n') else: self.app.stop() rc.remove_app(self) self.app=None if self.tcp: # retrieve and store the current channel channel=self.svdrp.current_chan() self.vdrinterface.putVar('CURRENT_TV_CHANNEL',channel) self.vdrinterface.saveVars() if self.vdrhasfreevoplugin: # turn on VDR remotes self.svdrp.write_cmd('plug freevo rctl on' + '\n') self.hitk('stop') self.svdrp.close() self.svdrp=0 if plugin.getbyname('MIXER'): plugin.getbyname('MIXER').reset() self.menuw.show()
def stop(self, event=None): """ Stop xine """ logger.log( 9, 'stop(event=%r)', event) if not self.app: return if config.OSD_SINGLE_WINDOW: osd.video_window.hide() if self.tmp_playlist: try: os.remove(self.tmp_playlist) except: pass self.tmp_playlist = None if config.XINE_BOOKMARK: # if the file ends do nothing, else get elapsed time if event in (STOP, USER_END): command = "%s -S get_time --stdctl --no-splash --hide-gui" % config.CONF.xine handle = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE ) (cin, cout) = (handle.stdin, handle.stdout) try: position = cout.read(); logger.debug("Elapsed = %s", position) if position: self.item.elapsed = int(position) finally: #xine should exit nicely, but if the first xine is already closed this xine will hang exit_code = handle.poll() if not exit_code and not cin.closed: cin.write('quit\n') self.app.stop('quit\n') rc.remove_app(self) dialog.disable_overlay_display() self.app = None self.play_state_dialog = None
def stop(self): """ Stop mplayer and set thread to idle """ logger.debug('Radio Player Stop') self.mode = 'stop' mixer = plugin.getbyname('MIXER') if mixer: mixer.setLineinVolume(0) mixer.setMicVolume(0) mixer.setIgainVolume(0) # Input on emu10k cards. else: logger.warning('Radio Player failed to find a mixer') if config.RADIO_CMD.find('ivtv-radio') >= 0: # IVTV cards os.system('killall -9 aplay') else: # BTTV cards logger.debug('%s', config.RADIO_CMD_STOP) os.system('%s' % config.RADIO_CMD_STOP) rc.post_event(PLAY_END) rc.remove_app(self)
def __exited(self, code): rc.remove_app(self) Event(PLAY_END).post()
def hide(self): logger.debug('hide()') if self.visible: self.visible = False skin.clear() rc.remove_app(self.player)
def hide(self): logger.debug("hide()") if self.visible: self.visible = False skin.clear() rc.remove_app(self.player)
def eventhandler(self, event, menuw=None): logger.log( 9, 'eventhandler(event=%s, menuw=%s)', event, menuw) # SELECT also should act as PLAY/PAUSE (-> could be done with event rerouting!?) if event == PAUSE or event == PLAY or (event == BUTTON and event.arg == 'SELECT'): if self.slideshow: rc.post_event(Event(OSD_MESSAGE, arg=_('pause'))) rc.post_event(Event('IMAGE_PAUSE_INFO', arg='')) self.slideshow = False if self.timer: self.timer.stop() self.timer = None else: rc.post_event(Event(OSD_MESSAGE, arg=_('play')+(' %ss'%self.duration))) rc.post_event(Event('IMAGE_PLAY_INFO', arg='%s' % self.duration)) self.slideshow = True self.timer = kaa.OneShotTimer(self.signalhandler) self.timer.start(self.duration) return True elif event == STOP: self.last_image = None, None self.slideshow = config.IMAGEVIEWER_AUTOPLAY if self.timer: self.timer.stop() self.timer = None if self.blend: self.blend.stop() self.blend.remove() self.blend = None rc.remove_app(self) self.__added_app = False self.fileitem.eventhandler(event) return True # up and down will stop the slideshow and pass the # event to the playlist elif event == PLAYLIST_NEXT or event == PLAYLIST_PREV: if self.timer: self.timer.stop() self.timer = None self.fileitem.eventhandler(event) return True # rotate image elif event == IMAGE_ROTATE: if event.arg == 'left': self.rotation = (self.rotation - 90) % 360 else: self.rotation = (self.rotation + 90) % 360 self.fileitem['rotation'] = self.rotation self.view(self.fileitem, zoom=self.zoom, rotation=self.rotation) if self.timer: self.timer.start(self.duration) return True # print image information elif event == TOGGLE_OSD: self.osd_mode = (self.osd_mode + 1) % (len(config.IMAGEVIEWER_OSD) + 1) # Redraw self.view(self.fileitem, zoom=self.zoom, rotation = self.rotation) return True # zoom to one third of the image # 1 is upper left, 9 is lower right, 0 zoom off elif str(event) in self.zoom_btns: self.zoom = self.zoom_btns[str(event)] if self.timer: self.timer.stop() self.slideshow = False if self.zoom: # Zoom one third of the image, don't load the next # image in the list self.view(self.fileitem, zoom=self.zoom, rotation = self.rotation) else: # Display entire picture, don't load next image in case # the user wants to zoom around some more. self.view(self.fileitem, zoom=0, rotation=self.rotation) return True elif event == IMAGE_MOVE: coord = event.arg if isinstance(self.zoom, int): self.zoom = self.zoom, coord[0], coord[1] else: self.zoom = self.zoom[0], self.zoom[1] + coord[0], self.zoom[2] + coord[1] self.view(self.fileitem, zoom=self.zoom, rotation=self.rotation) return True # save the image with the current rotation elif event == IMAGE_SAVE: if self.rotation and os.path.splitext(self.filename)[1] == ".jpg": cmd = 'jpegtran -copy all -rotate %s -outfile /tmp/freevo-iview %s' \ % ((self.rotation + 180) % 360, self.filename) os.system(cmd) os.system('mv /tmp/freevo-iview %s' % self.filename) self.rotation = 0 self.osd.bitmapcache.__delitem__(self.filename) return True # append the image filename to shoppingcart list elif event == IMAGE_TAG: if plugin.is_active('shoppingcart'): try: plugin.get('item')[0].shuntItemInCart(self.fileitem) return True except Exception, e: print 'getbyname(\'shoppingcart\')', e
def hide(self): self.visible = 0 self.osd.dialog_layer_enabled = False self.osd.dialog_layer.fill((0,0,0,0)) self.osd.update() rc.remove_app(self)