From 3aad7fd954c3b312a9e7c03eec25bcb4157d5329 Mon Sep 17 00:00:00 2001 From: Swann Martinez Date: Fri, 3 May 2019 11:32:14 +0200 Subject: [PATCH] feat (ui): synchronisation tasks --- client.py | 16 ++++++++++------ ui.py | 19 +++++++++++++++---- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/client.py b/client.py index 54d484a..544e524 100644 --- a/client.py +++ b/client.py @@ -16,14 +16,10 @@ from .libs import dump_anything, umsgpack, zmq # import zmq lock = threading.Lock() - - - logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) - CONNECT_TIMEOUT = 2 WAITING_TIME = 0.001 SERVER_MAX = 1 @@ -34,6 +30,7 @@ class State(Enum): INITIAL = 1 SYNCING = 2 ACTIVE = 3 + WORKING = 4 def zpipe(ctx): @@ -58,6 +55,8 @@ class RCFClient(object): pipe = None net_agent = None store = None + active_tasks = None + def __init__(self): self.ctx = zmq.Context() self.pipe, peer = zpipe(self.ctx) @@ -89,6 +88,10 @@ class RCFClient(object): self.watchdog_agent.daemon = True self.watchdog_agent.start() + # Status + self.active_tasks = 0 + + def connect(self, id, address, port): self.pipe.send_multipart([b"CONNECT", (id.encode() if isinstance( id, str) else id), (address.encode() if isinstance( @@ -136,10 +139,11 @@ class RCFClient(object): # self.pipe.send_multipart( # [b"ADD", umsgpack.packb(key), (umsgpack.packb(value) if value else umsgpack.packb('None'))]) - + 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 else: return True diff --git a/ui.py b/ui.py index 4e8fd86..a921deb 100644 --- a/ui.py +++ b/ui.py @@ -28,7 +28,7 @@ class SessionSettingsPanel(bpy.types.Panel): row = layout.row() box = row.box() row = box.row() - row.label(text="USER", icon='GHOST_ENABLED') + row.label(text="USER", icon='TRIA_RIGHT') row = box.row() row.prop(scene.session_settings, "username", text="id") @@ -39,7 +39,7 @@ class SessionSettingsPanel(bpy.types.Panel): row = layout.row() box = row.box() row = box.row() - row.label(text="NETWORK", icon = "TOOL_SETTINGS") + row.label(text="NETWORK", icon = "TRIA_RIGHT") row = box.row() row.label(text="draw overlay:") @@ -78,6 +78,7 @@ class SessionSettingsPanel(bpy.types.Panel): row = layout.row() row.operator("session.stop", icon='QUIT', text="Exit") + row = layout.row() # row = layout.row() # 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 = layout.row() # 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.operator("session.stop", icon='QUIT', text="CANCEL") + row = layout.row()