Cleanup: API docs
[blender.git] / doc / python_api / examples / bpy.types.Menu.py
1 """
2 Basic Menu Example
3 ++++++++++++++++++
4
5 Here is an example of a simple menu. Menus differ from panels in that they must
6 reference from a header, panel or another menu.
7
8 Notice the 'CATEGORY_MT_name' in  :class:`Menu.bl_idname`, this is a naming
9 convention for menus.
10
11 .. note::
12    Menu subclasses must be registered before referencing them from blender.
13
14 .. note::
15    Menus have their :class:`Layout.operator_context` initialized as
16    'EXEC_REGION_WIN' rather than 'INVOKE_DEFAULT' (see :ref:`Execution Context <operator-execution_context>`).
17    If the operator context needs to initialize inputs from the
18    :class:`Operator.invoke` function, then this needs to be explicitly set.
19 """
20 import bpy
21
22
23 class BasicMenu(bpy.types.Menu):
24     bl_idname = "OBJECT_MT_select_test"
25     bl_label = "Select"
26
27     def draw(self, context):
28         layout = self.layout
29
30         layout.operator("object.select_all", text="Select/Deselect All").action = 'TOGGLE'
31         layout.operator("object.select_all", text="Inverse").action = 'INVERT'
32         layout.operator("object.select_random", text="Random")
33
34
35 bpy.utils.register_class(BasicMenu)
36
37 # test call to display immediately.
38 bpy.ops.wm.call_menu(name="OBJECT_MT_select_test")