gui multiprocess - experimental feature (#780)

This commit is contained in:
Charlotte Weaver
2019-06-06 10:52:05 -07:00
committed by GitHub
parent 9f9393a486
commit 3edb87d125
4 changed files with 205 additions and 73 deletions
+42
View File
@@ -13,13 +13,55 @@ class WorkerSignals(QObject):
Defines the signals available from a running worker thread.
Supported signals are:
finished
ready
error - `str` error message
result - `object` data returned from processing, anything
"""
finished = Signal()
engine_error = Signal(str)
server_error = Signal(str)
error = Signal(str)
result = Signal(object)
ready = Signal()
class SiteReadySignals(QObject):
"""
Defines the signals available from a running worker thread.
Supported signals are:
timeout
ready
error - `str` error message
"""
ready = Signal()
timeout = Signal()
error = Signal(str)
class FileLoadSignals(QObject):
selectedFile = Signal(str)
class Emitter:
def __init__(self, transport, signals):
self.transport = transport
self.signals = signals()
def _emit(self, signature, args=None):
if args is None:
getattr(self.signals, signature).emit()
else:
getattr(self.signals, signature).emit(args)
def run(self):
while True:
try:
signature = self.transport.recv()
except EOFError:
# Server done
break
except Exception as e:
self.signals.error.emit(str(e))
break
else:
self._emit(*signature)