Added a module bpy.utils.toolsystem which only exposes ToolDef, to avoid scripts referencing bl_ui internals.
36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
# This example adds an object mode tool to the toolbar.
|
|
# This is just the circle-select tool.
|
|
import bpy
|
|
from bpy.utils.toolsystem import ToolDef
|
|
|
|
@ToolDef.from_fn
|
|
def my_tool():
|
|
def draw_settings(context, layout, tool):
|
|
props = tool.operator_properties("view3d.select_circle")
|
|
layout.prop(props, "radius")
|
|
return dict(
|
|
text="My Circle Select",
|
|
description=(
|
|
"This is a tooltip\n"
|
|
"with multiple lines"
|
|
),
|
|
icon="ops.generic.select_circle",
|
|
widget=None,
|
|
keymap=(
|
|
("view3d.select_circle", dict(deselect=False), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
("view3d.select_circle", dict(deselect=True), dict(type='ACTIONMOUSE', value='PRESS', ctrl=True)),
|
|
),
|
|
draw_settings=draw_settings,
|
|
)
|
|
|
|
|
|
def register():
|
|
bpy.utils.register_tool('VIEW_3D', 'OBJECT', my_tool)
|
|
|
|
|
|
def unregister():
|
|
bpy.utils.unregister_tool('VIEW_3D', 'OBJECT', my_tool)
|
|
|
|
if __name__ == "__main__":
|
|
register()
|