morse-light/controllers/controllerConfig.py

85 lines
3.1 KiB
Python
Raw Normal View History

##########
# 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 #
######################
2020-09-10 07:45:29 +00:00
__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)