Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/modules/bpy')
-rw-r--r--release/scripts/modules/bpy/__init__.py1
-rw-r--r--release/scripts/modules/bpy/ops.py15
-rw-r--r--release/scripts/modules/bpy/utils/__init__.py67
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