MyMuellDavSync/GuiWorker.py
2022-12-16 23:40:58 +01:00

36 lines
1.1 KiB
Python

from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QProgressBar, QPushButton, QStatusBar
class GuiWorker(QThread):
finished = pyqtSignal(bool, str)
rangeChanged = pyqtSignal(int, int)
progressChanged = pyqtSignal(int)
stateChanged = pyqtSignal(str)
_button = None
def __init__(self, runnable, parent=None):
QThread.__init__(self, parent)
self._callable = runnable
def connectProgressBar(self, progress_bar: QProgressBar):
self.progressChanged.connect(progress_bar.setValue)
self.rangeChanged.connect(progress_bar.setRange)
progress_bar.setTextVisible(True)
def connectButton(self, button: QPushButton):
self._button = button
self._button.clicked.connect(self.start)
def connectStatusBar(self, statusbar: QStatusBar):
self.stateChanged.connect(lambda val: statusbar.showMessage(val))
def run(self):
if self._button:
self._button.setEnabled(False)
ret = self._callable(self)
self._button.setEnabled(True)
self.finished.emit(ret[0], ret[1])