add error popup

master
Maximilian Zettler 4 years ago
parent 0885bf300a
commit 5578dd9af7
  1. 45
      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()

Loading…
Cancel
Save