Exemplo n.º 1
0
    def __init__(self):
        """ Le constructeur de la classe Ascenseurs est la fonction la plus
            importante. Elle :
            1. Initialise le logger (voir logger.py)
            2. lance la construction de Tkinter
            3. Customise la fenêtre de l'application
            4. Crée le panneau principal contenant tous les autres widgets
            et le positionne
            5. Charge les ressources externes (dessins)
        """
        logger.initialiser()
        logI('Construction de l\'application')

        super().__init__()

        self.geometry('800x600')

        self.panneau_principal = tk.Frame(self)
        self.panneau_principal.grid()

        ressources.chargerDessins()

        # Création du panneau de maintenance
        self.panneau_maintenance = PanneauMaintenance(
            parent=self.panneau_principal)

        # Création du panneau de puit
        self.panneau_puit = PanneauPuit(self.panneau_principal)

        # Création de la cabine
        self.cabine = Cabine(self.panneau_puit.dessin_puit)

        # Création du panneau interne de la Cabine
        self.panneau_cabine = PanneauCabine(self.panneau_principal,
                                            self.cabine)

        # Création des étages
        self.etages = Etages(self.panneau_puit.dessin_puit)

        # Création des capteurs
        self.capteurs = Capteurs(self.panneau_puit.dessin_puit, self.cabine,
                                 self.etages.etages)

        logD('Lancement de l\'animation')
        self.animation()
        self.mainloop()
Exemplo n.º 2
0
    def chargerXML(self, fichier):
        """ Vide le dictionnaire elements et le remplit avec les données du
            fichier XML """
        logI("Chargement du fichier " + str(fichier) + "...")
        self._elements.clear()
        try:
            arbre = parse(source=fichier)
        except FileNotFoundError as e:
            raise GrafcetError("Fichier : " + str(fichier) + " introuvable !")
        except ParseError as e:
            raise GrafcetError(
                "Erreur lors du chargement du fichier XML : " + fichier +
                "\nMessage du module XML : " + ErrorString(e.code))
        # TODO : vérifier intégrité du fichier xml
        etapes = arbre.find('Etapes')
        transitions = arbre.find('Transitions')
        liaisons = arbre.find('Liaisons')

        for etape_xml in etapes.findall('Etape'):
            etape = Etape()
            etape.deXml(etape_xml)
            logD(etape)
            self._elements['E' + str(etape.numero)] = etape

        for transition_xml in transitions.findall('Transition'):
            transition = Transition()
            transition.deXml(transition_xml)
            logD(transition)
            self._elements['T' + str(transition.numero)] = transition

        for liaison_xml in liaisons.findall('Liaison'):
            liaison = Liaison()
            liaison.deXml(liaison_xml, self._elements.values())
            logD(liaison)
            self._elements['L' + str(liaison.numero)] = liaison

        logI(str(len(self._elements)) + " éléments trouvés !")
Exemplo n.º 3
0
 def __init__(self, diagramme=None):
     self.evenements = []
     self.diagramme = Diagramme() if diagramme is None else diagramme
     logI('Lancement du contrôleur, période de rafraîchissement: ' +
          str(self.periode) + ' millisecondes.')
Exemplo n.º 4
0
 def build(self):
     logI('Chargement de Kivy...')
     return self.gui
Exemplo n.º 5
0
from kivy.app import App

from logger import logI
from gui import GUI
from controleur import Controleur
from diagramme import Diagramme


class GrafcetApp(App):
    """ Classe principale de l'application. Elle lance le modèle de données
        (classe Diagramme), la GUI (dépendante de kivy - www.kivy.org),
        et le contrôleur (classe Controleur).
    """

    diagramme = Diagramme()
    controleur = Controleur(diagramme)
    gui = GUI(controleur)

    def build(self):
        logI('Chargement de Kivy...')
        return self.gui


if __name__ == '__main__':
    logI("Démarrage de l'application !")
    GrafcetApp().run()
Exemplo n.º 6
0
 def update(self):
     logI("Update!")
     update_data = self.controller.update()
     self.last_updated = update_data['last_updated']
     self.next_duty = update_data['next_duty']
     self.next_reporting = update_data['next_reporting']