morse-light/controllers/controllerConfig.py

85 lines
3.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

##########
# IMPORT #
##########
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMessageBox, QRadioButton, QDialog
from morse import TraducteurMorse as morse
import logging
# TODO lier le mode verbose
# TODO changer le QLineEdit par une zone de texte
######################
# INITIALISATION DES #
# VARIABLES #
######################
__author__ = "rick@gnous.eu"
__licence__ = "GPL3 or later"
class ControllerConfig:
def __init__(self, fenetreConfig):
"""
initialise le controller
Parameters
---------
fenetreConfig : QDialog
Fenetre liée au controller
"""
if not isinstance(fenetreConfig, QDialog):
raise TypeError("ControllerConfig: fenetreConfig doit etre de type QDialog.")
self.fenetreConfig = fenetreConfig
self.fenetrePrincipale = fenetreConfig.fenetrePrincipale
def rafraichissement(self):
"""
Remets à jour linterface de configuration.
"""
self.fenetreConfig.portGpio.setValue(self.fenetrePrincipale.controller.traducteur.portGpio)
self.fenetreConfig.tempsPoint.setValue(self.fenetrePrincipale.controller.traducteur.point)
self.fenetreConfig.barreStatus.setText("")
self.fenetreConfig.barreStatus.setStyleSheet("QLineEdit { background: white }")
def majMorse(self, point, portGpio):
"""
Permet de mettre à jour la classe morse avec les valeurs entrées
Parameters
---------
point : float
temps en seconde dun point
portGpio : int
port gpio du raspberry qui sera utilisé
"""
try:
traducteur = morse(portGpio, point)
self.fenetrePrincipale.controller.traducteur = traducteur
self.fenetreConfig.accept()
if self.fenetreConfig.vraiVerbose.isChecked():
logging.getLogger('morse-light').setLevel(logging.INFO)
else:
self.fenetrePrincipale.barreDeStatus.setText("")
self.fenetrePrincipale.barreDeStatus.setStyleSheet("QLineEdit { background: white }")
logging.getLogger('morse-light').setLevel(logging.WARNING)
except Exception as err:
message = QMessageBox(QMessageBox.Warning, "Erreur", "Une des valeurs entrées n'est pas bonne", QMessageBox.Ok)
message.exec()
self.fenetreConfig.barreStatus.setText(str(err))
self.fenetreConfig.barreStatus.setStyleSheet("QLineEdit { background: #ff5050 }")
def check(self):
"""
Vérifie si les valeurs entrées sont correctes, génére une fenetre derreur sinon.
"""
point = self.fenetreConfig.tempsPoint.value()
portGpio = self.fenetreConfig.portGpio.value()
if point >= 2:
message = QMessageBox(QMessageBox.Question, "Attention", "Le temps entré est supérieur à 2 secondes. Souhaitez-vous continuer ?", QMessageBox.Yes | QMessageBox.No)
res = message.exec_()
if res == QMessageBox.Yes:
self.majMorse(point, portGpio)
else:
self.majMorse(point, portGpio)