|
|
|
@ -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): |
|
|
|
|
try: |
|
|
|
|
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}") |
|
|
|
|
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() |
|
|
|
|
|
|
|
|
|