mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-15 20:57:56 +08:00
68 lines
1.6 KiB
Python
68 lines
1.6 KiB
Python
import platform
|
|
|
|
from PySide2.QtCore import QObject, Signal
|
|
|
|
# Detect OS
|
|
WINDOWS = (platform.system() == "Windows")
|
|
LINUX = (platform.system() == "Linux")
|
|
MAC = (platform.system() == "Darwin")
|
|
|
|
|
|
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)
|