From 3680a751aa13f3f06efed27413609f3afd2c2463 Mon Sep 17 00:00:00 2001 From: Swann Date: Thu, 26 Mar 2020 14:04:47 +0100 Subject: [PATCH] fix: jsondiff import error Related to #78 --- multi_user/__init__.py | 111 +++++--------------------------------- multi_user/preferences.py | 84 ++++++++++++++++++++++++++++- 2 files changed, 96 insertions(+), 99 deletions(-) diff --git a/multi_user/__init__.py b/multi_user/__init__.py index 2990789..f27d541 100644 --- a/multi_user/__init__.py +++ b/multi_user/__init__.py @@ -22,7 +22,7 @@ import sys import bpy from bpy.app.handlers import persistent -from . import environment, utils, presence, preferences +from . import environment, utils from .libs.replication.replication.constants import RP_COMMON @@ -36,89 +36,6 @@ DEPENDENCIES = { logger = logging.getLogger(__name__) logger.setLevel(logging.WARNING) -def client_list_callback(scene, context): - from . import operators - - items = [(RP_COMMON, RP_COMMON, "")] - - username = utils.get_preferences().username - cli = operators.client - if cli: - client_ids = cli.online_users.keys() - for id in client_ids: - name_desc = id - if id == username: - name_desc += " (self)" - - items.append((id, name_desc, "")) - - return items - -class SessionUser(bpy.types.PropertyGroup): - """Session User - - Blender user information property - """ - username: bpy.props.StringProperty(name="username") - current_frame: bpy.props.IntProperty(name="current_frame") - - -class SessionProps(bpy.types.PropertyGroup): - is_admin: bpy.props.BoolProperty( - name="is_admin", - default=False - ) - session_mode: bpy.props.EnumProperty( - name='session_mode', - description='session mode', - items={ - ('HOST', 'hosting', 'host a session'), - ('CONNECT', 'connexion', 'connect to a session')}, - default='HOST') - clients: bpy.props.EnumProperty( - name="clients", - description="client enum", - items=client_list_callback) - enable_presence: bpy.props.BoolProperty( - name="Presence overlay", - description='Enable overlay drawing module', - default=True, - update=presence.update_presence - ) - presence_show_selected: bpy.props.BoolProperty( - name="Show selected objects", - description='Enable selection overlay ', - default=True, - update=presence.update_overlay_settings - ) - presence_show_user: bpy.props.BoolProperty( - name="Show users", - description='Enable user overlay ', - default=True, - update=presence.update_overlay_settings - ) - presence_show_far_user: bpy.props.BoolProperty( - name="Show different scenes", - description="Show user on different scenes", - default=False, - update=presence.update_overlay_settings - ) - filter_owned: bpy.props.BoolProperty( - name="filter_owned", - description='Show only owned datablocks', - default=True - ) - user_snap_running: bpy.props.BoolProperty( - default=False - ) - time_snap_running: bpy.props.BoolProperty( - default=False - ) - -classes = ( - SessionUser, - SessionProps, -) libs = os.path.dirname(os.path.abspath(__file__))+"\\libs\\replication\\replication" @@ -134,23 +51,20 @@ def register(): from . import preferences from . import addon_updater_ops - for cls in classes: - bpy.utils.register_class(cls) - - bpy.types.WindowManager.session = bpy.props.PointerProperty( - type=SessionProps) - bpy.types.ID.uuid = bpy.props.StringProperty(default="") - bpy.types.WindowManager.online_users = bpy.props.CollectionProperty( - type=SessionUser - ) - bpy.types.WindowManager.user_index = bpy.props.IntProperty() - preferences.register() addon_updater_ops.register(bl_info) presence.register() operators.register() ui.register() + bpy.types.WindowManager.session = bpy.props.PointerProperty( + type=preferences.SessionProps) + bpy.types.ID.uuid = bpy.props.StringProperty(default="") + bpy.types.WindowManager.online_users = bpy.props.CollectionProperty( + type=preferences.SessionUser + ) + bpy.types.WindowManager.user_index = bpy.props.IntProperty() + def unregister(): from . import presence from . import operators @@ -163,7 +77,8 @@ def unregister(): ui.unregister() operators.unregister() preferences.unregister() - del bpy.types.WindowManager.session - for cls in reversed(classes): - bpy.utils.unregister_class(cls) + del bpy.types.WindowManager.session + del bpy.types.ID.uuid + del bpy.types.WindowManager.online_users + del bpy.types.WindowManager.user_index diff --git a/multi_user/preferences.py b/multi_user/preferences.py index 3230b6d..e329e1d 100644 --- a/multi_user/preferences.py +++ b/multi_user/preferences.py @@ -1,7 +1,7 @@ import logging import bpy -from . import utils, bl_types, environment, addon_updater_ops +from . import utils, bl_types, environment, addon_updater_ops, presence logger = logging.getLogger(__name__) @@ -225,7 +225,89 @@ class SessionPrefs(bpy.types.AddonPreferences): new_db.bl_name = type_module_class.bl_id +def client_list_callback(scene, context): + from . import operators + + items = [(RP_COMMON, RP_COMMON, "")] + + username = utils.get_preferences().username + cli = operators.client + if cli: + client_ids = cli.online_users.keys() + for id in client_ids: + name_desc = id + if id == username: + name_desc += " (self)" + + items.append((id, name_desc, "")) + + return items + + +class SessionUser(bpy.types.PropertyGroup): + """Session User + + Blender user information property + """ + username: bpy.props.StringProperty(name="username") + current_frame: bpy.props.IntProperty(name="current_frame") + + +class SessionProps(bpy.types.PropertyGroup): + is_admin: bpy.props.BoolProperty( + name="is_admin", + default=False + ) + session_mode: bpy.props.EnumProperty( + name='session_mode', + description='session mode', + items={ + ('HOST', 'hosting', 'host a session'), + ('CONNECT', 'connexion', 'connect to a session')}, + default='HOST') + clients: bpy.props.EnumProperty( + name="clients", + description="client enum", + items=client_list_callback) + enable_presence: bpy.props.BoolProperty( + name="Presence overlay", + description='Enable overlay drawing module', + default=True, + update=presence.update_presence + ) + presence_show_selected: bpy.props.BoolProperty( + name="Show selected objects", + description='Enable selection overlay ', + default=True, + update=presence.update_overlay_settings + ) + presence_show_user: bpy.props.BoolProperty( + name="Show users", + description='Enable user overlay ', + default=True, + update=presence.update_overlay_settings + ) + presence_show_far_user: bpy.props.BoolProperty( + name="Show different scenes", + description="Show user on different scenes", + default=False, + update=presence.update_overlay_settings + ) + filter_owned: bpy.props.BoolProperty( + name="filter_owned", + description='Show only owned datablocks', + default=True + ) + user_snap_running: bpy.props.BoolProperty( + default=False + ) + time_snap_running: bpy.props.BoolProperty( + default=False + ) + classes = ( + SessionUser, + SessionProps, ReplicatedDatablock, SessionPrefs, )