Example #1
0
    def __init__(self, mode):
        self.logger = logging.getLogger('controlpanel') 
        
        self.logger.debug('Init pygame')
        pygame.init()
        self.screen = pygame.display.set_mode(mode,pygame.RESIZABLE)

        pygame.mouse.set_visible(False)

        #Init Joystick
        pygame.joystick.init()
        try:
            self.joystick = pygame.joystick.Joystick(0)
        except pygame.error:
            self.logger.info('No joystick found')
        else:
            self.joystick.init()

        #Init Clock
        self.clock = Clock()
        
        #Activate notification area
        self.notificationArea = NotificationArea(self, (60,540), (640,20))

        #Init Applets
        self.applets = []
        self.applets.append(PyMpd(self, (60,60),(640,480)))
        self.applets.append(PyEmu(self, (60,60),(640,480),'media/roms/'))
        #self.applets[1].set_mpd_commander(self.applets[0].commander)

        self.activeAppletNumber = 0
        self.activeApplet = self.applets[0]

        #Define actions for helper function
        self.actions = {
            "prev" : self.prevApplet,
            "next" : self.nextApplet
            }
Example #2
0
class Panel():
    def __init__(self, mode):
        self.logger = logging.getLogger('controlpanel') 
        
        self.logger.debug('Init pygame')
        pygame.init()
        self.screen = pygame.display.set_mode(mode,pygame.RESIZABLE)

        pygame.mouse.set_visible(False)

        #Init Joystick
        pygame.joystick.init()
        try:
            self.joystick = pygame.joystick.Joystick(0)
        except pygame.error:
            self.logger.info('No joystick found')
        else:
            self.joystick.init()

        #Init Clock
        self.clock = Clock()
        
        #Activate notification area
        self.notificationArea = NotificationArea(self, (60,540), (640,20))

        #Init Applets
        self.applets = []
        self.applets.append(PyMpd(self, (60,60),(640,480)))
        self.applets.append(PyEmu(self, (60,60),(640,480),'media/roms/'))
        #self.applets[1].set_mpd_commander(self.applets[0].commander)

        self.activeAppletNumber = 0
        self.activeApplet = self.applets[0]

        #Define actions for helper function
        self.actions = {
            "prev" : self.prevApplet,
            "next" : self.nextApplet
            }

    def __handle_events(self):
        """ 
        Handles the waiting events, if the key is not in the classes action
        list the event is forwarded to the active applet.
        """            
        for event in pygame.event.get():
            if event.type == QUIT or event.type == KEYDOWN and event.key == K_ESCAPE:
                pygame.event.clear()
                self.applets[0].exit()
                self.running = False
                break
            elif keyActions(event, JOYSTICK_ACTIONS, KEYBOARD_ACTIONS, self.actions):
                self.activeApplet= self.applets[self.activeAppletNumber]
            else:
                self.activeApplet.handle_events(event)

    def __draw(self):
        self.screen.fill(Color('black'))
        self.activeApplet.draw(self.screen)
        self.notificationArea.draw(self.screen)
        pygame.display.flip()

    def run(self):
        self.running = True
        while self.running:
            self.__draw()
            self.__handle_events()
            self.clock.tick(12)

        self.logger.debug('Terminating')
        pygame.quit()
        sys.exit()
    
    def notify(self, caption):
        """
        Prints a new caption to the notification area.
        """
        self.notificationArea.setCaption(caption)

    def prevApplet(self):
        """ Rotates through the applets forward. The next applet is displayed. """
        self.activeAppletNumber = ((self.activeAppletNumber+1) % len(self.applets))

    def nextApplet(self):
        """ Rotates through the applets backward. The next applet is displayed. """
        self.activeAppletNumber = ((self.activeAppletNumber+1) % len(self.applets))