feat (ui): synchronisation tasks

This commit is contained in:
Swann Martinez
2019-05-03 11:32:14 +02:00
parent 88ebe21df9
commit 3aad7fd954
2 changed files with 25 additions and 10 deletions

View File

@ -16,14 +16,10 @@ from .libs import dump_anything, umsgpack, zmq
# import zmq # import zmq
lock = threading.Lock() lock = threading.Lock()
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO) logging.basicConfig(level=logging.INFO)
CONNECT_TIMEOUT = 2 CONNECT_TIMEOUT = 2
WAITING_TIME = 0.001 WAITING_TIME = 0.001
SERVER_MAX = 1 SERVER_MAX = 1
@ -34,6 +30,7 @@ class State(Enum):
INITIAL = 1 INITIAL = 1
SYNCING = 2 SYNCING = 2
ACTIVE = 3 ACTIVE = 3
WORKING = 4
def zpipe(ctx): def zpipe(ctx):
@ -58,6 +55,8 @@ class RCFClient(object):
pipe = None pipe = None
net_agent = None net_agent = None
store = None store = None
active_tasks = None
def __init__(self): def __init__(self):
self.ctx = zmq.Context() self.ctx = zmq.Context()
self.pipe, peer = zpipe(self.ctx) self.pipe, peer = zpipe(self.ctx)
@ -89,6 +88,10 @@ class RCFClient(object):
self.watchdog_agent.daemon = True self.watchdog_agent.daemon = True
self.watchdog_agent.start() self.watchdog_agent.start()
# Status
self.active_tasks = 0
def connect(self, id, address, port): def connect(self, id, address, port):
self.pipe.send_multipart([b"CONNECT", (id.encode() if isinstance( self.pipe.send_multipart([b"CONNECT", (id.encode() if isinstance(
id, str) else id), (address.encode() if isinstance( id, str) else id), (address.encode() if isinstance(
@ -139,7 +142,8 @@ class RCFClient(object):
def is_busy(self): def is_busy(self):
if self.serial_feed.qsize() == 0 and self.serial_product.qsize() == 0: self.active_tasks = self.serial_feed.qsize() + self.serial_product.qsize()
if self.active_tasks == 0:
return False return False
else: else:
return True return True

19
ui.py
View File

@ -28,7 +28,7 @@ class SessionSettingsPanel(bpy.types.Panel):
row = layout.row() row = layout.row()
box = row.box() box = row.box()
row = box.row() row = box.row()
row.label(text="USER", icon='GHOST_ENABLED') row.label(text="USER", icon='TRIA_RIGHT')
row = box.row() row = box.row()
row.prop(scene.session_settings, "username", text="id") row.prop(scene.session_settings, "username", text="id")
@ -39,7 +39,7 @@ class SessionSettingsPanel(bpy.types.Panel):
row = layout.row() row = layout.row()
box = row.box() box = row.box()
row = box.row() row = box.row()
row.label(text="NETWORK", icon = "TOOL_SETTINGS") row.label(text="NETWORK", icon = "TRIA_RIGHT")
row = box.row() row = box.row()
row.label(text="draw overlay:") row.label(text="draw overlay:")
@ -78,6 +78,7 @@ class SessionSettingsPanel(bpy.types.Panel):
row = layout.row() row = layout.row()
row.operator("session.stop", icon='QUIT', text="Exit") row.operator("session.stop", icon='QUIT', text="Exit")
row = layout.row()
# row = layout.row() # row = layout.row()
# row.label(text="serial ",icon="KEYTYPE_EXTREME_VEC") # row.label(text="serial ",icon="KEYTYPE_EXTREME_VEC")
@ -85,11 +86,21 @@ class SessionSettingsPanel(bpy.types.Panel):
# row.label(text="serial ",icon="KEYTYPE_BREAKDOWN_VEC") # row.label(text="serial ",icon="KEYTYPE_BREAKDOWN_VEC")
# row = layout.row() # row = layout.row()
# row.label(text="serial ",icon="KEYTYPE_JITTER_VEC") # row.label(text="serial ",icon="KEYTYPE_JITTER_VEC")
elif operators.client_state is 2:
row.label(text="connecting...") box = row.box()
row = box.row()
row.label(text="", icon='INFO')
row = box.row()
row.label(text="Sync tasks: {}".format(operators.client_instance.active_tasks))
else:
status = "connecting..."
if net_settings.is_admin:
status = "init scene...({} tasks remaining)".format(operators.client_instance.active_tasks)
row.label(text=status)
row = layout.row() row = layout.row()
row.operator("session.stop", icon='QUIT', text="CANCEL") row.operator("session.stop", icon='QUIT', text="CANCEL")
row = layout.row() row = layout.row()