class TaskManager(QtCore.QObject): def __init__(self, parent): super(TaskManager, self).__init__(parent) self._processed = 0 self._total = 0 self._daemon = DaemonProxy(self) self._daemon.task_started.connect(self.taskStarted) self._daemon.task_progress.connect(self._onTaskProgress) self._daemon.task_done.connect(self.taskDone) taskStarted = QtCore.Signal(str) taskDone = QtCore.Signal(str) def release(self): self._daemon.release() @QtCore.Slot(str, int, int) def _onTaskProgress(self, task_id, count, total): self._total = total self._processed = count self._nfy_total.emit() self._nfy_processed.emit() # daemon (read-only, non-nfy) attribute ------------ def _get_daemon(self): return self._daemon daemon = QtCore.Property(DaemonProxy, _get_daemon) # processed (read-only) attribute ------------ def _get_processed(self): return self._processed _nfy_processed = QtCore.Signal() processed = QtCore.Property(int, _get_processed, notify=_nfy_processed) # total (read-only) attribute ------------ def _get_total(self): return self._total _nfy_total = QtCore.Signal() total = QtCore.Property(int, _get_total, notify=_nfy_total) # progress (read-only) attribute ------------ def _get_progress(self): if total > 0: return float(self._processed)/float(self._total) else: return 0.0 _nfy_progress = QtCore.Signal() progress = QtCore.Property(float, _get_progress, notify=_nfy_progress)
def __init__(self, parent): super(TaskManager, self).__init__(parent) self._processed = 0 self._total = 0 self._daemon = DaemonProxy(self) self._daemon.task_started.connect(self.taskStarted) self._daemon.task_progress.connect(self._onTaskProgress) self._daemon.task_done.connect(self.taskDone)