diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-03-14 06:15:29 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-03-15 09:05:18 +0300 |
commit | f29b80ff79ec7c6a2532d0b0eb5841d00cc7af1b (patch) | |
tree | fdb3ea22965f327a403d1ea3fb662796f16d9966 /release/scripts/templates_py | |
parent | d4156b46d7a4acb22f3abfde14b05c46ead34b43 (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.py | 65 |
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() |