diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-01-31 10:04:57 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-01-31 10:08:01 +0300 |
commit | 0f3f117311d25805fa1591aa2eed3240e50c4a6f (patch) | |
tree | c794a657da8053615659e58a77f99207667d91e6 /doc | |
parent | 24f95a1991d2a2de52244c5675ab2c026b1b31b2 (diff) |
Docs: add preset menu example
Diffstat (limited to 'doc')
-rw-r--r-- | doc/python_api/examples/bpy.types.Menu.3.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/doc/python_api/examples/bpy.types.Menu.3.py b/doc/python_api/examples/bpy.types.Menu.3.py new file mode 100644 index 00000000000..47c81366db4 --- /dev/null +++ b/doc/python_api/examples/bpy.types.Menu.3.py @@ -0,0 +1,80 @@ +""" +Preset Menus +++++++++++++ + +Preset menus are simply a convention that uses a menu sub-class +to perform the common task of managing presets. + +This example shows how you can add a preset menu. + +This example uses the object draw options, +however you can use properties defined by your own scripts too. +""" + +import bpy +from bpy.types import Operator, Menu +from bl_operators.presets import AddPresetBase + + +class OBJECT_MT_draw_presets(Menu): + bl_label = "Object Draw Presets" + preset_subdir = "object/draw" + preset_operator = "script.execute_preset" + draw = Menu.draw_preset + + +class AddPresetObjectDraw(AddPresetBase, Operator): + '''Add a Object Draw Preset''' + bl_idname = "camera.object_draw_preset_add" + bl_label = "Add Object Draw Preset" + preset_menu = "OBJECT_MT_draw_presets" + + # variable used for all preset values + preset_defines = [ + "obj = bpy.context.object" + ] + + # properties to store in the preset + preset_values = [ + "obj.draw_type", + "obj.show_bounds", + "obj.draw_bounds_type", + "obj.show_name", + "obj.show_axis", + "obj.show_wire", + ] + + # where to store the preset + preset_subdir = "object/draw" + + +# Draw into an existing panel +def panel_func(self, context): + layout = self.layout + + row = layout.row(align=True) + row.menu(OBJECT_MT_draw_presets.__name__, text=OBJECT_MT_draw_presets.bl_label) + row.operator(AddPresetObjectDraw.bl_idname, text="", icon='ZOOMIN') + row.operator(AddPresetObjectDraw.bl_idname, text="", icon='ZOOMOUT').remove_active = True + + +classes = ( + OBJECT_MT_draw_presets, + AddPresetObjectDraw, + ) + + +def register(): + for cls in classes: + bpy.utils.register_class(cls) + bpy.types.OBJECT_PT_display.prepend(panel_func) + + +def unregister(): + for cls in classes: + bpy.utils.unregister_class(cls) + bpy.types.OBJECT_PT_display.remove(panel_func) + + +if __name__ == "__main__": + register() |