add error popup

master
Maximilian Zettler 4 years ago
parent 0885bf300a
commit 5578dd9af7
  1. 41
      timebot/gui.py

@ -2,13 +2,15 @@ import datetime
from PyQt5 import QtGui from PyQt5 import QtGui
from PyQt5.QtCore import QTimer, QObject, pyqtSignal, QThread 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 from timebot.timebot import TimeBot
class Worker(QObject): class TimebotApiWorker(QObject):
sendmsg = pyqtSignal(object) status_msg = pyqtSignal(object)
hours_present_msg = pyqtSignal(object)
error = pyqtSignal(object)
finished = pyqtSignal() finished = pyqtSignal()
def __init__(self, timebot: TimeBot): def __init__(self, timebot: TimeBot):
@ -16,10 +18,13 @@ class Worker(QObject):
self.timebot = timebot self.timebot = timebot
def run(self): def run(self):
try:
hours_present = self.timebot.get_hours_present() hours_present = self.timebot.get_hours_present()
hours_present = hours_present - datetime.timedelta(microseconds=hours_present.microseconds) hours_present = hours_present - datetime.timedelta(microseconds=hours_present.microseconds)
self.sendmsg.emit(f"STATUS:\n{self.timebot.status()}\n" self.hours_present_msg.emit(str(hours_present))
f"HOURS_PRESENT:\n{hours_present}") self.status_msg.emit(self.timebot.status())
except Exception as e:
self.error.emit(e)
self.finished.emit() self.finished.emit()
@ -34,12 +39,14 @@ class TimebotMain(QWidget):
self.setWindowIcon(QtGui.QIcon.fromTheme('face-devilish')) self.setWindowIcon(QtGui.QIcon.fromTheme('face-devilish'))
self.resize(300, 270) 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.btn_update_status = QPushButton("Refresh Status")
self.btnPress2 = QPushButton("Button 2") self.btnPress2 = QPushButton("Button 2")
layout = QVBoxLayout() 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.btn_update_status)
layout.addWidget(self.btnPress2) layout.addWidget(self.btnPress2)
self.setLayout(layout) self.setLayout(layout)
@ -51,9 +58,21 @@ class TimebotMain(QWidget):
self.status_timer.timeout.connect(self.update_status) self.status_timer.timeout.connect(self.update_status)
self.status_timer.start(29999) 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_running = False
self.update_status() 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): def update_status_started(self):
self.btn_update_status.setEnabled(False) self.btn_update_status.setEnabled(False)
self.btn_update_status.setText("Refreshing...") self.btn_update_status.setText("Refreshing...")
@ -68,14 +87,16 @@ class TimebotMain(QWidget):
if self.update_status_running: if self.update_status_running:
return return
self.status_thread = QThread() 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_worker.moveToThread(self.status_thread)
self.status_thread.started.connect(self.status_worker.run) 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_thread.quit)
self.status_worker.finished.connect(self.status_worker.deleteLater) self.status_worker.finished.connect(self.status_worker.deleteLater)
self.status_thread.finished.connect(self.status_thread.deleteLater) self.status_thread.finished.connect(self.status_thread.deleteLater)
self.status_thread.finished.connect(lambda: self.update_status_finished()) self.status_thread.finished.connect(self.update_status_finished)
self.status_worker.sendmsg.connect(self.text_box_update_status.setText) 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.status_thread.start()
self.update_status_started() self.update_status_started()

Loading…
Cancel
Save