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)