示例#1
0
    def Update(self, InputEvents):
        '''-------------------------------------------------------------------------------------------------------------
        ------------------------------------------------PARTIE SCROLL---------------------------------------------------
        -------------------------------------------------------------------------------------------------------------'''
        '''
        Partie qui recupere les entrees tactiles pour voir s'il y a un scroll, et ajuste le scroll de maniere generale :
            - Quand il y a scroll, bouge tous les panels dans la direction du scroll
            - Limite ce scroll entre la zone des deux panels pour eviter qu'on depasse et aille trop loin
            - Enregistre quand l'utilisateur a fini de scroller pour permettre a la partie suivante de code de se mettre
                a recentrer les panels dans le cas ou l'utilisateur a arrete son scroll en plein milieu
        '''
        for event in InputEvents:
            if "SCROLL " in event:
                self.scrolling = True
                scroll_distanceY = Helpers.get_message_x_y(event)[1]
                self.ancrage -= scroll_distanceY
                if self.ancrage < 0: self.ancrage = 0
                if self.ancrage > self.WindowRes[1]:
                    self.ancrage = self.WindowRes[1]
            if "ENDSCROLL" in event:
                self.scrolling = False
        '''
        Partie qui s'occupe de l'animation du retour de scrolling (quand on lache le doigt et que l'ecran se recentre
        automatiquement)
        '''
        if self.ancrage != 0 and self.ancrage != self.WindowRes[
                1] and self.scrolling == False:
            if self.ancrage > self.WindowRes[1] / 2:
                self.ancrage = Helpers.mathlerp(self.ancrage,
                                                self.WindowRes[1], 0.55)
                if self.ancrage > self.WindowRes[1] - 2:
                    self.ancrage = self.WindowRes[1]
            if self.ancrage <= self.WindowRes[1] / 2:
                self.ancrage = Helpers.mathlerp(self.ancrage, 0, 0.55)
                if self.ancrage < 2: self.ancrage = 0
        '''-------------------------------------------------------------------------------------------------------------
        ----------------------------------------------PARTIE TRANSITIONS -----------------------------------------------
        -------------------------------------------------------------------------------------------------------------'''
        '''
        Si l'utilisateur a fait un swype (et uniquement pendant qu'il est sur le panel ecran d'acceuil),
        On envoie un texto comme quoi on commence a disparaitre et on enregistre la direction de l'utilisateur
        pour plus tard (voir fade_out()).
        '''
        '''
        if "LEFT" in InputEvents and self.ancrage < 40:
            self.ScreenStatus = "FADING_OUT"
            self.fade_direction = "LEFT"
            self.animation.reset()
        if "RIGHT" in InputEvents and self.ancrage < 40:
            self.ScreenStatus = "FADING_OUT"
            self.fade_direction = "RIGHT"
            self.animation.reset()
        '''
        for event in InputEvents:
            if "TOUCH" in event:
                for line in range(0, 2):
                    for app in range(0, 4):
                        if Helpers.is_in_rect(pygame.mouse.get_pos(), [
                                50 + (app + 1) * 700 / 4 - 700 / 8 -
                                self.app_icons[app].get_rect().width / 2,
                                45 + line * 180 - 450 + self.ancrage, 140, 140
                        ]):
                            app_name = self.app_descriptions[app + line * 4]
                            print app_name
                            self.ScreenStatus = "FADING_OUT"
                            self.animation.reset()

                            if app_name is "Meteo":
                                self.TransitionDestination = "WEATHERSCREEN"
                            if app_name is "Calendrier":
                                self.TransitionDestination = "CALENDARSCREEN"
                            if app_name is "Horloges":
                                self.TransitionDestination = "TIMESCREEN"
                            if app_name is "Actualites":
                                self.TransitionDestination = "NEWSSCREEN"

                            if app_name is "Calculatrice":
                                self.TransitionDestination = "CALCULATORSCREEN"
                            if app_name is "Bourse":
                                self.TransitionDestination = "STOCKSSCREEN"
                            if app_name is "Snake":
                                self.TransitionDestination = "SNAKESCREEN"
                            if app_name is "Domotique":
                                self.TransitionDestination = "AUTOMATIONSCREEN"
                '''
                Si quelqu'un clique sur le texte APPLICATIONS en haut, on déclenche une animation qui l'indique qu'on peut
                glisser vers le bas.
                '''
                if Helpers.is_in_rect(
                        pygame.mouse.get_pos(),
                    [self.WindowRes[0] / 2 - 90, 0, 180, 35]):
                    self.hint_animation_activated = True
                    self.hint_chrono.reset()
                    print "activated"
        '''
        # Animation qu'on a retiree car trop moche, pour l'instant.
        if self.hint_animation_activated is True:
            x = self.hint_chrono.elapsed_time()
            if x > 0 and x < 1:
                s = 0.1
                self.ancrage = 30 *  (1 / (s * math.sqrt(2 * math.pi))) * math.exp(- (((x - 0.5) ** 2) / (2 * (s ** 2))))
                print "animation"
            elif x >= 1:
                self.hint_animation_activated = False
                self.ancrage = 0
        '''

        if self.ScreenStatus is "FADING_IN":
            self.fade_in()
        if self.ScreenStatus is "FADING_OUT":
            self.fade_out()
        '''-------------------------------------------------------------------------------------------------------------
        -------------------------------------------PARTIE FONCTIONNALITES-----------------------------------------------
        -------------------------------------------------------------------------------------------------------------'''
        '''
        On laisse le manager de widgets updater les widgets.
        HomeScreen ne s'occupe pas des widgets, seul WidgetManager dessine, update et distribue les inputs.
        '''
        self.widget_manager.Update(InputEvents)