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:
authorCampbell Barton <ideasman42@gmail.com>2019-03-14 06:15:29 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-03-15 09:05:18 +0300
commitf29b80ff79ec7c6a2532d0b0eb5841d00cc7af1b (patch)
treefdb3ea22965f327a403d1ea3fb662796f16d9966 /release/scripts/templates_py
parentd4156b46d7a4acb22f3abfde14b05c46ead34b43 (diff)
Tool System: add tool registration API
This mimics RNA style class registration, keeping the same internal data types. Currently there is a template which shows an example of adding a tool group with a keymap. Icon generation still needs to be exposed for general use.
Diffstat (limited to 'release/scripts/templates_py')
-rw-r--r--release/scripts/templates_py/ui_tool_simple.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/release/scripts/templates_py/ui_tool_simple.py b/release/scripts/templates_py/ui_tool_simple.py
new file mode 100644
index 00000000000..9cd71d0160c
--- /dev/null
+++ b/release/scripts/templates_py/ui_tool_simple.py
@@ -0,0 +1,65 @@
+# This example adds an object mode tool to the toolbar.
+# This is just the circle-select and lasso tools tool.
+import bpy
+from bpy.utils.toolsystem import ToolDef
+from bpy.types import WorkSpaceTool
+
+class MyTool(WorkSpaceTool):
+ bl_space_type='VIEW_3D'
+ bl_context_mode='OBJECT'
+
+ # The prefix of the idname should be your add-on name.
+ bl_idname = "my_template.my_circle_select"
+ bl_label = "My Circle Select"
+ bl_description = (
+ "This is a tooltip\n"
+ "with multiple lines"
+ )
+ bl_icon = "ops.generic.select_circle"
+ bl_widget = None
+ bl_keymap = (
+ ("view3d.select_circle", {"type": 'LEFTMOUSE', "value": 'PRESS'},
+ {"properties": [("wait_for_input", False)]}),
+ ("view3d.select_circle", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
+ {"properties": [("mode", 'SUB'), ("wait_for_input", False)]}),
+ )
+
+ def draw_settings(context, layout, tool):
+ props = tool.operator_properties("view3d.select_circle")
+ layout.prop(props, "mode")
+ layout.prop(props, "radius")
+
+
+class MyOtherTool(WorkSpaceTool):
+ bl_space_type='VIEW_3D'
+ bl_context_mode='OBJECT'
+
+ bl_idname = "my_template.my_other_select"
+ bl_label = "My Lasso Tool Select"
+ bl_description = (
+ "This is a tooltip\n"
+ "with multiple lines"
+ )
+ bl_icon = "ops.generic.select_lasso"
+ bl_widget = None
+ bl_keymap = (
+ ("view3d.select_lasso", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
+ ("view3d.select_lasso", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True},
+ {"properties": [("mode", 'SUB')]}),
+ )
+
+ def draw_settings(context, layout, tool):
+ props = tool.operator_properties("view3d.select_lasso")
+ layout.prop(props, "mode")
+
+
+def register():
+ bpy.utils.register_tool(MyTool, after={"builtin.scale_cage"}, separator=True, group=True)
+ bpy.utils.register_tool(MyOtherTool, after={MyTool.bl_idname})
+
+def unregister():
+ bpy.utils.unregister_tool(MyTool)
+ bpy.utils.unregister_tool(MyOtherTool)
+
+if __name__ == "__main__":
+ register()