From 5578dd9af762c032003d02a2c8dc2d95521fa59d Mon Sep 17 00:00:00 2001 From: Maximilian Zettler Date: Thu, 10 Mar 2022 11:16:52 +0100 Subject: [PATCH] add error popup --- timebot/gui.py | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/timebot/gui.py b/timebot/gui.py index 1978f78..e9ae08e 100644 --- a/timebot/gui.py +++ b/timebot/gui.py @@ -2,13 +2,15 @@ import datetime from PyQt5 import QtGui from PyQt5.QtCore import QTimer, QObject, pyqtSignal, QThread -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QLabel +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QLabel, QMessageBox from timebot.timebot import TimeBot -class Worker(QObject): - sendmsg = pyqtSignal(object) +class TimebotApiWorker(QObject): + status_msg = pyqtSignal(object) + hours_present_msg = pyqtSignal(object) + error = pyqtSignal(object) finished = pyqtSignal() def __init__(self, timebot: TimeBot): @@ -16,10 +18,13 @@ class Worker(QObject): self.timebot = timebot def run(self): - hours_present = self.timebot.get_hours_present() - hours_present = hours_present - datetime.timedelta(microseconds=hours_present.microseconds) - self.sendmsg.emit(f"STATUS:\n{self.timebot.status()}\n" - f"HOURS_PRESENT:\n{hours_present}") + try: + hours_present = self.timebot.get_hours_present() + hours_present = hours_present - datetime.timedelta(microseconds=hours_present.microseconds) + self.hours_present_msg.emit(str(hours_present)) + self.status_msg.emit(self.timebot.status()) + except Exception as e: + self.error.emit(e) self.finished.emit() @@ -34,12 +39,14 @@ class TimebotMain(QWidget): self.setWindowIcon(QtGui.QIcon.fromTheme('face-devilish')) self.resize(300, 270) - self.text_box_update_status = QLabel() + self.text_box_status = QLabel() + self.text_box_hours_present = QLabel() self.btn_update_status = QPushButton("Refresh Status") self.btnPress2 = QPushButton("Button 2") layout = QVBoxLayout() - layout.addWidget(self.text_box_update_status) + layout.addWidget(self.text_box_status) + layout.addWidget(self.text_box_hours_present) layout.addWidget(self.btn_update_status) layout.addWidget(self.btnPress2) self.setLayout(layout) @@ -51,9 +58,21 @@ class TimebotMain(QWidget): self.status_timer.timeout.connect(self.update_status) self.status_timer.start(29999) + self.error_msg = QMessageBox() + self.error_msg.setWindowTitle("Timebot ERROR") + self.error_msg.finished.connect(self.error_msg_finished) + self.update_status_running = False self.update_status() + def error_msg_show(self, error_text: str): + self.error_msg.setText(error_text) + self.status_timer.stop() + self.error_msg.exec_() + + def error_msg_finished(self): + self.status_timer.start(29999) + def update_status_started(self): self.btn_update_status.setEnabled(False) self.btn_update_status.setText("Refreshing...") @@ -68,14 +87,16 @@ class TimebotMain(QWidget): if self.update_status_running: return self.status_thread = QThread() - self.status_worker = Worker(self.timebot) + self.status_worker = TimebotApiWorker(self.timebot) self.status_worker.moveToThread(self.status_thread) self.status_thread.started.connect(self.status_worker.run) self.status_worker.finished.connect(self.status_thread.quit) self.status_worker.finished.connect(self.status_worker.deleteLater) self.status_thread.finished.connect(self.status_thread.deleteLater) - self.status_thread.finished.connect(lambda: self.update_status_finished()) - self.status_worker.sendmsg.connect(self.text_box_update_status.setText) + self.status_thread.finished.connect(self.update_status_finished) + self.status_worker.status_msg.connect(self.text_box_status.setText) + self.status_worker.hours_present_msg.connect(self.text_box_hours_present.setText) + self.status_worker.error.connect(lambda exp: self.error_msg_show(str(exp))) self.status_thread.start() self.update_status_started()