blender/scripts/templates_py/UI/menu.py
quackarooni a0dafebac9 UI: subdirectory support for Menu.menu_path, use for text templates
Create submenus for common template types in the text editor as the menu
was getting too long.

Common categories such as Gizmo, UI & Operators are now in their own
directories, displayed as submenus.

Menu.menu_path now supports expanding sub-menus recursively.

Ref !154643
2026-03-05 11:04:52 +11:00

50 lines
1.2 KiB
Python

import bpy
class CustomMenu(bpy.types.Menu):
bl_label = "Custom Menu"
bl_idname = "OBJECT_MT_custom_menu"
def draw(self, context):
layout = self.layout
layout.operator("wm.open_mainfile")
layout.operator("wm.save_as_mainfile").copy = True
layout.operator("object.shade_smooth")
layout.label(text="Hello world!", icon='WORLD_DATA')
# use an operator enum property to populate a sub-menu
layout.operator_menu_enum(
"object.select_by_type",
property="type",
text="Select All by Type",
)
# call another menu
layout.operator("wm.call_menu", text="Unwrap").name = "VIEW3D_MT_uv_map"
def draw_item(self, context):
layout = self.layout
layout.menu(CustomMenu.bl_idname)
def register():
bpy.utils.register_class(CustomMenu)
# lets add ourselves to the main header
bpy.types.INFO_HT_header.append(draw_item)
def unregister():
bpy.utils.unregister_class(CustomMenu)
bpy.types.INFO_HT_header.remove(draw_item)
if __name__ == "__main__":
register()
# The menu can also be called from scripts
bpy.ops.wm.call_menu(name=CustomMenu.bl_idname)