84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
##########
|
||
# 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 l’interface 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 d’un 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 d’erreur 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)
|