diff --git a/client.py b/client.py index ac1aa42..b63a50c 100644 --- a/client.py +++ b/client.py @@ -207,7 +207,7 @@ class RCFClientAgent(object): override = umsgpack.unpackb(msg[2]) if key in self.property_map.keys(): - if self.property_map[key].id == self.id: + if self.property_map[key].body['id'] == self.id.decode(): if value == 'None': value = helpers.dump(key) value['id'] = self.id.decode() @@ -263,7 +263,10 @@ class RCFClientAgent(object): elif command == b"LIST": dump_list = [] for k,v in self.property_map.items(): - dump_list.append([k,v.id]) + if 'Client' in k: + dump_list.append([k,v.id.decode()]) + else: + dump_list.append([k,v.body['id']]) self.pipe.send(umsgpack.packb(dump_list) if dump_list else umsgpack.packb('')) @@ -319,7 +322,7 @@ def rcf_client_agent(ctx, pipe, queue): with lock: client_dict = helpers.init_client(key=client_key) - + client_dict['id'] = agent.id.decode() client_store = message.RCFMessage( key=client_key, id=agent.id, body=client_dict) logger.info(client_store) diff --git a/helpers.py b/helpers.py index 76cf8be..d36958f 100644 --- a/helpers.py +++ b/helpers.py @@ -77,17 +77,18 @@ def resolve_bpy_path(path): def load_client(client=None, data=None): C = bpy.context D = bpy.data + if client and data: # localy_selected = get_selected_objects(C.scene) # Draw client client_data = data # Load selected object - for obj in C.scene.objects: - if obj.id == client: - D.objects[obj.name].hide_select = True - else: - D.objects[obj.name].hide_select = False + # for obj in C.scene.objects: + # if obj.id == client: + # D.objects[obj.name].hide_select = True + # else: + # D.objects[obj.name].hide_select = False # if client_data['active_objects'] and obj.name in client_data['active_objects']: # D.objects[obj.name].hide_select = True # else: diff --git a/operators.py b/operators.py index 8bc0b41..ce925ad 100644 --- a/operators.py +++ b/operators.py @@ -43,7 +43,7 @@ def client_list_callback(scene, context): for k in client_keys: if 'Client' in k[0]: - name = k[1].decode() + name = k[1] items.append((name, name, "")) return items @@ -144,6 +144,17 @@ def update_selected_object(context): # return False +def update_rights(): + + C = bpy.context + D = bpy.data + client = C.scene.session_settings.username + + for obj in C.scene.objects: + if obj.id == client: + D.objects[obj.name].hide_select = False + else: + D.objects[obj.name].hide_select = True def init_datablocks(): global client_instance @@ -175,6 +186,9 @@ def draw_tick(): # refresh_window() # Upload upload_client_instance_position() + + update_rights() + return .2 diff --git a/ui.py b/ui.py index 655cfa0..4177123 100644 --- a/ui.py +++ b/ui.py @@ -156,8 +156,9 @@ class SessionPropertiesPanel(bpy.types.Panel): for item in operators.client_keys: owner = 'toto' try: - owner = item[1].decode() + owner = item[1] except: + owner = item[1].decode() pass item_box = area_msg.box()