Example #1
1
    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()
Example #2
0
    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
Example #3
0
    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()
Example #4
0
    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
Example #5
0
    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()
Example #6
0
    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
Example #7
0
    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
Example #8
0
    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
Example #9
0
    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()
Example #10
0
    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()
Example #11
0
    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()
Example #12
0
    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)
Example #13
0
    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)
Example #14
0
 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)
Example #15
0
    def stop(self):
        """
        Stop vlc
        """
        if not self.app:
            return
        self.app.kill(2)

        rc.remove_app(self)
        self.app = None
Example #16
0
 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)
Example #17
0
 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)
Example #18
0
    def stop(self):
        """
        Stop vlc
        """
        if not self.app:
            return
        self.app.kill(2)

        rc.remove_app(self)
        self.app = None
Example #19
0
 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
Example #20
0
 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
Example #21
0
    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()
Example #22
0
    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()
Example #23
0
    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()
Example #24
0
    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()
Example #25
0
    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()
Example #26
0
    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
Example #27
0
    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
Example #28
0
    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
Example #29
0
    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
Example #30
0
    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
Example #31
0
    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
Example #32
0
    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()
Example #33
0
    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
Example #34
0
    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)
Example #35
0
 def __exited(self, code):
     rc.remove_app(self)
     Event(PLAY_END).post()
Example #36
0
 def hide(self):
     logger.debug('hide()')
     if self.visible:
         self.visible = False
         skin.clear()
         rc.remove_app(self.player)
Example #37
0
 def __exited(self, code):
     rc.remove_app(self)
     Event(PLAY_END).post()
Example #38
0
 def hide(self):
     logger.debug("hide()")
     if self.visible:
         self.visible = False
         skin.clear()
         rc.remove_app(self.player)
Example #39
0
    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
Example #40
0
 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)