83 lines
2.9 KiB
Python
83 lines
2.9 KiB
Python
##########
|
|
# IMPORT #
|
|
##########
|
|
from sys import exit, argv
|
|
from PyQt5 import QtCore, QtWidgets, uic
|
|
from PyQt5.QtCore import QThreadPool
|
|
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QPushButton, QLineEdit, QApplication, QMessageBox
|
|
try:
|
|
from controllers.controllerMorse import ControllerMorse
|
|
from components.config import ConfigMorse as config
|
|
erreur = False
|
|
except Exception as err:
|
|
erreur = err
|
|
|
|
# TODO lier la barre de status aux warnings et aux erreurs ne provoquant pas de crash => barreDeStatus
|
|
|
|
######################
|
|
# INITIALISATION DES #
|
|
# VARIABLES #
|
|
######################
|
|
__author__ = "rick@gnous.eu"
|
|
__licence__ = "GPL3 or later"
|
|
|
|
class InterfaceMorse(QMainWindow):
|
|
def __init__(self):
|
|
super(InterfaceMorse, self).__init__()
|
|
self.threadpool = QThreadPool()
|
|
|
|
if erreur:
|
|
self.creerErreur(str(erreur))
|
|
|
|
# initialisation de la fenetre
|
|
self.setWindowTitle("Texte vers morse")
|
|
self.ui = uic.loadUi('views/interface.ui')
|
|
self.setFixedWidth(719)
|
|
self.setFixedHeight(328)
|
|
|
|
self.config = config(self)
|
|
|
|
# récupération des éléments interactifs
|
|
self.texteMorse = self.ui.findChildren(QTextEdit, 'texteMorse')[0]
|
|
self.envoyer = self.ui.findChildren(QPushButton, 'envoyer')[0]
|
|
effacer = self.ui.findChildren(QPushButton, 'effacer')[0]
|
|
self.configuration = self.ui.findChildren(QPushButton, 'configuration')[0]
|
|
quitter = self.ui.findChildren(QPushButton, 'quitter')[0]
|
|
self.barreDeStatus = self.ui.findChildren(QLineEdit, 'barreDeStatus')[0]
|
|
|
|
self.controller = ControllerMorse(self)
|
|
|
|
self.setCentralWidget(self.ui)
|
|
self.show()
|
|
|
|
# liaison avec les controllers des boutons
|
|
self.envoyer.clicked.connect(lambda checked: self.threadpool.start(self.controller))
|
|
self.configuration.clicked.connect(lambda checked: self.config.show())
|
|
effacer.clicked.connect(lambda checked: self.texteMorse.setText(""))
|
|
quitter.clicked.connect(quit)
|
|
|
|
def creerErreur(self, messageErreur):
|
|
"""
|
|
Permet de générer une erreur critique. Lorsqu'on la ferme, le programme s'arrête.
|
|
|
|
Parameters
|
|
----------
|
|
messageErreur : str
|
|
Le message qui sera affiché dans la fenêtre d'erreur.
|
|
Si le paramètre n'est pas de type str, "Vérifiez les logs" se met par défaut.
|
|
"""
|
|
if not isinstance(messageErreur, str):
|
|
messageErreur = "Vérifiez les logs."
|
|
|
|
erreur = QMessageBox(QMessageBox.Critical, "Erreur", "Erreur critique", QMessageBox.Close)
|
|
erreur.setInformativeText(messageErreur)
|
|
ret = erreur.exec()
|
|
if ret == QMessageBox.Close:
|
|
self.close()
|
|
self.threadpool.clear()
|
|
exit()
|
|
|
|
if __name__ == '__main__':
|
|
app = QApplication(argv)
|
|
window = InterfaceMorse()
|
|
exit(app.exec_())
|