diff options
Diffstat (limited to 'release/scripts/modules/bpy')
-rw-r--r-- | release/scripts/modules/bpy/__init__.py | 1 | ||||
-rw-r--r-- | release/scripts/modules/bpy/ops.py | 15 | ||||
-rw-r--r-- | release/scripts/modules/bpy/utils/__init__.py | 67 |
3 files changed, 17 insertions, 66 deletions
diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index 6312c25065f..a80135a59e1 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -39,6 +39,7 @@ from _bpy import ( app, context, data, + msgbus, props, types, ) diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py index fcba6b3aafc..f4e37ebc9a8 100644 --- a/release/scripts/modules/bpy/ops.py +++ b/release/scripts/modules/bpy/ops.py @@ -153,10 +153,10 @@ class BPyOpsSubModOp: return C_dict, C_exec, C_undo @staticmethod - def _scene_update(context): - scene = context.scene - if scene: # None in background mode - scene.update() + def _view_layer_update(context): + view_layer = context.view_layer + if view_layer: # None in background mode + view_layer.update() else: import bpy for scene in bpy.data.scenes: @@ -188,7 +188,10 @@ class BPyOpsSubModOp: wm = context.window_manager # run to account for any rna values the user changes. - BPyOpsSubModOp._scene_update(context) + # NOTE: We only update active vew layer, since that's what + # operators are supposed to operate on. There might be some + # corner cases when operator need a full scene update though. + BPyOpsSubModOp._view_layer_update(context) if args: C_dict, C_exec, C_undo = BPyOpsSubModOp._parse_args(args) @@ -197,7 +200,7 @@ class BPyOpsSubModOp: ret = op_call(self.idname_py(), None, kw) if 'FINISHED' in ret and context.window_manager == wm: - BPyOpsSubModOp._scene_update(context) + BPyOpsSubModOp._view_layer_update(context) return ret diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index 5e5a35b9518..80e48697b2f 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -34,7 +34,6 @@ __all__ = ( "refresh_script_paths", "app_template_paths", "register_class", - "register_module", "register_manual_map", "unregister_manual_map", "register_classes_factory", @@ -50,7 +49,6 @@ __all__ = ( "smpte_from_seconds", "units", "unregister_class", - "unregister_module", "user_resource", ) @@ -166,10 +164,6 @@ def load_scripts(reload_scripts=False, refresh_scripts=False): for module_name in [ext.module for ext in _user_preferences.addons]: _addon_utils.disable(module_name) - # *AFTER* unregistering all add-ons, otherwise all calls to - # unregister_module() will silently fail (do nothing). - _bpy_types.TypeMap.clear() - def register_module_call(mod): register = getattr(mod, "register", None) if register: @@ -581,8 +575,13 @@ def keyconfig_set(filepath, report=None): try: error_msg = "" with open(filepath, 'r', encoding='utf-8') as keyfile: - exec(compile(keyfile.read(), filepath, "exec"), - {"__file__": filepath}) + exec( + compile(keyfile.read(), filepath, "exec"), + { + "__file__": filepath, + "__name__": "__main__", + } + ) except: import traceback error_msg = traceback.format_exc() @@ -650,58 +649,6 @@ def user_resource(resource_type, path="", create=False): return target_path -def _bpy_module_classes(module, is_registered=False): - typemap_list = _bpy_types.TypeMap.get(module, ()) - i = 0 - while i < len(typemap_list): - cls_weakref = typemap_list[i] - cls = cls_weakref() - - if cls is None: - del typemap_list[i] - else: - if is_registered == cls.is_registered: - yield cls - i += 1 - - -def register_module(module, verbose=False): - if verbose: - print("bpy.utils.register_module(%r): ..." % module) - cls = None - for cls in _bpy_module_classes(module, is_registered=False): - if verbose: - print(" %r" % cls) - try: - register_class(cls) - except: - print("bpy.utils.register_module(): " - "failed to registering class %r" % cls) - import traceback - traceback.print_exc() - if verbose: - print("done.\n") - if cls is None: - raise Exception("register_module(%r): defines no classes" % module) - - -def unregister_module(module, verbose=False): - if verbose: - print("bpy.utils.unregister_module(%r): ..." % module) - for cls in _bpy_module_classes(module, is_registered=True): - if verbose: - print(" %r" % cls) - try: - unregister_class(cls) - except: - print("bpy.utils.unregister_module(): " - "failed to unregistering class %r" % cls) - import traceback - traceback.print_exc() - if verbose: - print("done.\n") - - def register_classes_factory(classes): """ Utility function to create register and unregister functions |