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
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

19
ui.py
View File

@ -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()