2020-05-18 15:42:06 +02:00
|
|
|
|
##########
|
|
|
|
|
# IMPORT #
|
|
|
|
|
##########
|
|
|
|
|
from PyQt5 import QtCore, QtWidgets
|
|
|
|
|
from PyQt5.QtCore import QRunnable, pyqtSlot
|
|
|
|
|
from PyQt5.QtWidgets import QApplication, QMainWindow
|
|
|
|
|
from morse import TraducteurMorse as morse
|
|
|
|
|
from utils.morseHandler import MorseHandler
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
######################
|
|
|
|
|
# INITIALISATION DES #
|
|
|
|
|
# VARIABLES #
|
|
|
|
|
######################
|
2020-09-10 09:45:29 +02:00
|
|
|
|
__author__ = "rick@gnous.eu"
|
2020-05-18 15:42:06 +02:00
|
|
|
|
__licence__ = "GPL3 or later"
|
|
|
|
|
|
|
|
|
|
class ControllerMorse(QRunnable):
|
|
|
|
|
def __init__(self, fenetrePrincipale, traducteur=None):
|
|
|
|
|
"""
|
|
|
|
|
Initialise le controller
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
----------
|
|
|
|
|
fenetrePrincipale : QMainWindow
|
|
|
|
|
fenetre qui utilise le controller
|
|
|
|
|
|
|
|
|
|
traducteur : TraducteurMorse
|
|
|
|
|
classe morse qui sera utilisée pour l’envoie de message
|
|
|
|
|
"""
|
|
|
|
|
super(ControllerMorse, self).__init__()
|
|
|
|
|
if not isinstance(fenetrePrincipale, QMainWindow):
|
|
|
|
|
raise TypeError("ControllerMorse: fenetrePrincipale doit etre de type QMainWindow.")
|
|
|
|
|
|
|
|
|
|
self.fenetrePrincipale = fenetrePrincipale
|
|
|
|
|
logHandler = MorseHandler(self.fenetrePrincipale.barreDeStatus)
|
|
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
if traducteur is not None and isinstance(traducteur, morse):
|
|
|
|
|
logging.warning("ControllerMorse: traducteur n’est pas de type TraducteurMorse.")
|
|
|
|
|
self.traducteur = traducteur
|
|
|
|
|
else:
|
|
|
|
|
self.traducteur = morse()
|
|
|
|
|
logging.getLogger('morse-light').setLevel(logging.WARNING)
|
|
|
|
|
logging.getLogger('morse-light').addHandler(logHandler)
|
|
|
|
|
except Exception as err:
|
|
|
|
|
self.fenetrePrincipale.creerErreur(str(err))
|
|
|
|
|
|
|
|
|
|
@pyqtSlot()
|
|
|
|
|
def run(self):
|
|
|
|
|
mot = self.fenetrePrincipale.texteMorse.toPlainText()
|
|
|
|
|
try:
|
|
|
|
|
self.fenetrePrincipale.envoyer.setEnabled(False)
|
|
|
|
|
self.fenetrePrincipale.configuration.setEnabled(False)
|
|
|
|
|
self.traducteur.traductionEtEnvoie(mot)
|
|
|
|
|
self.fenetrePrincipale.envoyer.setEnabled(True)
|
|
|
|
|
self.fenetrePrincipale.configuration.setEnabled(True)
|
|
|
|
|
except Exception as err:
|
|
|
|
|
self.fenetrePrincipale.creerErreur(str(err))
|
|
|
|
|
finally:
|
|
|
|
|
self.fenetrePrincipale.controller = ControllerMorse(self.fenetrePrincipale, self.traducteur)
|