#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Ecran d'attente (minimaliste) : logique applicative.
Implémentation générique de AbstractScreenWait.
"""
# imports :
from labpyproject.apps.labpyrinthe.gui.skinBase.interfaces import AbstractScreenWait
# Evite l'ajout non désiré de certains imports à la doc sphinx
__all__ = ["ScreenWaitBase"]
# classe :
[docs]class ScreenWaitBase(AbstractScreenWait):
"""
Ecran d'attente minimaliste
"""
# états:
STATE_NEUTRAL = "STATE_NEUTRAL" #: marqueur d'état
STATE_LOADING = "STATE_LOADING" #: marqueur d'état
STATE_CREATING = "STATE_CREATING" #: marqueur d'état
STATE_RESIZE = "STATE_RESIZE" #: marqueur d'état
# ressources associées
STATE_NEUTRAL_RSC = "neutre" #: ressource associée à un état
STATE_LOADING_RSC = "txt_loading" #: ressource associée à un état
STATE_CREATING_RSC = "txt_partie" #: ressource associée à un état
STATE_RESIZE_RSC = "txt_resize" #: ressource associée à un état
# méthodes
def __init__(self, skin, initialstate):
"""
Constructeur
"""
# ref au skin :
self.skin = skin
# identification de l'image associée :
self.cat_img = "screens"
self.name_img = None
# état initial :
self._initialstate = initialstate
# graphisme :
self.draw_interface()
self.set_state(self._initialstate)
[docs] def get_initial_state(self):
"""
Retourne l'état initial : permet de distinguer l'écran de chargement
initial de l'écran de chargement de partie.
"""
return self._initialstate
[docs] def draw_interface(self):
"""
Création de l'interface
"""
# à subclasser
[docs] def set_state(self, statename):
"""
Modification du visuel
"""
if statename == ScreenWaitBase.STATE_LOADING:
self.name_img = ScreenWaitBase.STATE_LOADING_RSC
elif statename == ScreenWaitBase.STATE_RESIZE:
self.name_img = ScreenWaitBase.STATE_RESIZE_RSC
elif statename == ScreenWaitBase.STATE_CREATING:
self.name_img = ScreenWaitBase.STATE_CREATING_RSC
elif statename == ScreenWaitBase.STATE_NEUTRAL:
self.name_img = ScreenWaitBase.STATE_NEUTRAL_RSC
else:
self.name_img = None
img = self.skin.get_image(self.cat_img, self.name_img)
self.show_image(img)
[docs] def show_image(self, img):
"""
Affiche l'image img
"""
# à subclasser