[Bf-blender-cvs] [0f3f117] master: Docs: add preset menu example

Campbell Barton noreply at git.blender.org
Sun Jan 31 08:15:45 CET 2016


Commit: 0f3f117311d25805fa1591aa2eed3240e50c4a6f
Author: Campbell Barton
Date:   Sun Jan 31 18:04:57 2016 +1100
Branches: master
https://developer.blender.org/rB0f3f117311d25805fa1591aa2eed3240e50c4a6f

Docs: add preset menu example

===================================================================

A	doc/python_api/examples/bpy.types.Menu.3.py

===================================================================

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 0000000..47c8136
--- /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()




More information about the Bf-blender-cvs mailing list