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/utils/__init__.py')
-rw-r--r--release/scripts/modules/bpy/utils/__init__.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py
index 80e48697b2f..bb1ba5eb719 100644
--- a/release/scripts/modules/bpy/utils/__init__.py
+++ b/release/scripts/modules/bpy/utils/__init__.py
@@ -709,6 +709,48 @@ def register_submodule_factory(module_name, submodule_names):
# -----------------------------------------------------------------------------
+# Tool Registraion
+
+def register_tool(space_type, context_mode, tool_def):
+ from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
+ cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type)
+ if cls is None:
+ raise Exception(f"Space type {space_type!r} has no toolbar")
+ tools = cls._tools[context_mode]
+
+ keymap_data = tool_def.keymap
+ if keymap_data is not None:
+ if context_mode is None:
+ context_descr = "All"
+ else:
+ context_descr = context_mode.replace("_", " ").title()
+ from bpy import context
+ wm = context.window_manager
+ kc = wm.keyconfigs.default
+ if callable(keymap_data[0]):
+ cls._km_action_simple(kc, context_descr, tool_def.text, keymap_data)
+
+ tools.append(tool_def)
+
+
+def unregister_tool(space_type, context_mode, tool_def):
+ from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
+ cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type)
+ if cls is None:
+ raise Exception(f"Space type {space_type!r} has no toolbar")
+ tools = cls._tools[context_mode]
+ tools.remove(tool_def)
+
+ keymap_data = tool_def.keymap
+ if keymap_data is not None:
+ from bpy import context
+ wm = context.window_manager
+ kc = wm.keyconfigs.default
+ km = keymap_data[0]
+ kc.keymaps.remove(km)
+
+
+# -----------------------------------------------------------------------------
# Manual lookups, each function has to return a basepath and a sequence
# of...