[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [529] contrib/py/scripts/addons/ space_view3d_dynamic_menu.py: contrib/py/scripts/addons/ space_view3d_dynamic_menu.py

Brendon Murphy meta.androcto1 at gmail.com
Tue Mar 30 16:54:29 CEST 2010


Revision: 529
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=529
Author:   meta-androcto
Date:     2010-03-30 16:54:29 +0200 (Tue, 30 Mar 2010)

Log Message:
-----------
contrib/py/scripts/addons/space_view3d_dynamic_menu.py
added extended 3d view menu.

Added Paths:
-----------
    contrib/py/scripts/addons/space_view3d_dynamic_menu.py

Added: contrib/py/scripts/addons/space_view3d_dynamic_menu.py
===================================================================
--- contrib/py/scripts/addons/space_view3d_dynamic_menu.py	                        (rev 0)
+++ contrib/py/scripts/addons/space_view3d_dynamic_menu.py	2010-03-30 14:54:29 UTC (rev 529)
@@ -0,0 +1,246 @@
+#3d_cursor_menu.py (c) 2010 Jonathan Smith (JayDez)
+#Original Script by: Mariano Hidalgo (uselessdreamer)
+#contributed to by: Crouch, sim88, sam, meta-androcto
+#
+#Tested with r27779
+#
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+bl_addon_info = {
+    'name': '3d View: Dynamic Menu',
+    'author': 'JayDez, sim88, meta-androcto',
+    'version': '2.4',
+    'blender': (2, 5, 3),
+    'location': 'View3D > Mouse > Menu ',
+    'url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/3d_Cursor_Menu',
+    'category': '3D View'}
+"Add Extended 3D Cursor Menu (Right click in View3D)"
+
+"""
+Name: '3D Cursor Menu'
+Blender: 250
+"""
+
+__author__ = ["JayDez, sim88, meta-androcto, sam"]
+__version__ = '2.5'
+__url__ = [""]
+__bpydoc__= """
+3D Cursor Menu
+This adds a 3D Cursor Menu in the 3DView.
+May be merged with 3D Dynamic Menu script in the future...
+
+Usage:
+* Right click in an empty space in the 3D View(that means nothing
+selectable is there). If your select mouse is set to left then left
+click in the 3D View.
+
+* Choose your function from the menu.
+
+Version history:
+v2.5 - (meta-androcto) - rewrite. Added editmode menu.
+v2.4 - (JayDez) - Added bpydoc as well as changing to click only
+    (instead of double click).
+v2.3 - (JayDez) - Added revert_pivot() which allows you to change
+    pivot point back to normal(which right now is median point).
+v2.2 - (Crouch) - Fix in register function, fix with random quotation
+    mark which crashed script.
+v2.1 - (Crouch) - added unregister() and set pivot point to cursor.
+v2.0 - (JayDez) - 2.5 script (initial revision)
+v1.0 - Original 2.49 script
+
+"""
+import bpy
+from bpy import *
+
+class pivot_cursor(bpy.types.Operator):
+    bl_idname = "view3d.pivot_cursor"
+    bl_label = "Cursor as Pivot Point"
+    
+    def poll(self, context):
+        return bpy.context.space_data.pivot_point != 'CURSOR'
+    
+    def execute(self, context):
+        bpy.context.space_data.pivot_point = 'CURSOR'
+        return {'FINISHED'}
+    
+class revert_pivot(bpy.types.Operator):
+    bl_idname = "view3d.revert_pivot"
+    bl_label = "Reverts Pivot Point to median"
+
+    def poll(self, context):
+        return bpy.context.space_data.pivot_point != 'MEDIAN_POINT'
+    
+    def execute(self, context):
+        bpy.context.space_data.pivot_point = 'MEDIAN_POINT'
+        #change this to 'BOUDNING_BOX_CENTER' if needed...
+        return{'FINISHED'}
+
+class VIEW3D_MT_3D_Cursor_Menu(bpy.types.Menu):
+    bl_label = "Dynamic Menu"
+
+    def draw(self, context):
+        layout = self.layout
+        layout.operator_context = 'INVOKE_REGION_WIN'
+
+        ob = context
+        if ob.mode == 'OBJECT':
+
+            layout.menu("INFO_MT_mesh_add", text="Add Mesh", icon='OUTLINER_OB_MESH')
+            layout.separator()
+            layout.operator("transform.translate", icon='MAN_TRANS')
+            layout.operator("transform.rotate", icon='MAN_ROT')
+            layout.operator("transform.resize", text="Scale", icon='MAN_SCALE')
+            layout.separator()
+            layout.operator_menu_enum("object.lamp_add", "type", icon="OUTLINER_OB_LAMP")
+            layout.operator_menu_enum("object.curve_add", "type", icon='OUTLINER_OB_CURVE')
+            layout.menu("INFO_MT_armature_add", text="Add Armature", icon='OUTLINER_OB_ARMATURE')
+            layout.operator("object.add", text="Add Empty", icon='OUTLINER_OB_EMPTY')
+            layout.separator()
+            layout.menu("VIEW3D_MT_object_group", icon='GROUP')
+            layout.operator("object.modifier_add", icon='MODIFIER')
+            layout.separator()
+            layout.operator("object.parent_set", icon= 'ROTACTIVE')
+            layout.separator()
+            layout.operator("object.delete", text="Delete Object", icon='CANCEL')
+
+        elif ob.mode == 'EDIT_MESH':
+
+#create block
+            bl_label = "Create"
+            layout.separator()
+            layout.menu("INFO_MT_mesh_add", text="Add Mesh", icon='OUTLINER_OB_MESH')
+#transform block
+            layout.operator("transform.translate", icon='MAN_TRANS')
+            layout.operator("transform.rotate", icon='MAN_ROT')
+            layout.operator("transform.resize", text="Scale", icon='MAN_SCALE')
+            layout.separator()
+#select block
+            layout.menu("VIEW3D_MT_edit_mesh_selection_mode", icon='EDIT')
+            layout.menu("VIEW3D_MT_selectS", icon='OBJECT_DATAMODE')
+#edit block
+            layout.menu("VIEW3D_MT_edit_mesh_vertices", icon='VERTEXSEL')
+            layout.menu("VIEW3D_MT_edit_mesh_edges", icon='EDGESEL')
+            layout.menu("VIEW3D_MT_edit_mesh_faces", icon='FACESEL')
+            layout.operator("mesh.loopcut_slide",text="Loopcut", icon= 'EDIT_VEC')
+#tools block
+            layout.menu("VIEW3D_MT_edit_mesh_specials", icon='MODIFIER')
+            layout.menu("VIEW3D_MT_uv_map", icon='MOD_UVPROJECT')
+            layout.operator("mesh.delete", icon='CANCEL')
+#History block
+        layout.menu("VIEW3D_MT_undoS", icon='ARROW_LEFTRIGHT')
+        layout.separator()
+        layout.operator("transform.snap_type", text="Snap Tools", icon= 'SNAP_ON')
+        layout.menu("VIEW3D_MT_curs", icon= 'CURSOR')
+        layout.separator()
+        layout.operator("object.editmode_toggle", icon='EDITMODE_HLT')
+
+class VIEW3D_MT_selectS(bpy.types.Menu):
+    bl_label = "Selections"
+
+    def draw(self, context):
+
+        layout = self.layout
+        layout.operator_context = 'INVOKE_REGION_WIN'
+        layout.operator("mesh.select_all")
+        layout.operator("mesh.select_inverse")
+        layout.operator("mesh.select_more")
+        layout.operator("mesh.select_less")
+        layout.operator("view3d.select_circle")
+        layout.operator("view3d.select_border")
+
+
+class VIEW3D_MT_undoS(bpy.types.Menu):
+    bl_label = "Undo/Redo"
+
+    def draw(self, context):
+
+        layout = self.layout
+        layout.operator_context = 'INVOKE_REGION_WIN'
+        layout.operator("ed.undo", icon='TRIA_LEFT')
+        layout.operator("ed.redo", icon='TRIA_RIGHT')
+
+
+class VIEW3D_MT_curs(bpy.types.Menu):
+    bl_label = "Cursor Menu"
+
+    def draw(self, context):
+
+        layout = self.layout
+        layout.operator_context = 'INVOKE_REGION_WIN'
+        layout.operator("view3d.snap_cursor_to_center", text="Snap Cursor to Center")
+        layout.operator("view3d.snap_cursor_to_grid", text="Snap Cursor to Grid")
+        layout.operator("view3d.snap_cursor_to_selected", text="Snap Cursor to Selected")
+        layout.operator("view3d.snap_selected_to_cursor", text="Snap Selected to Cursor")
+        layout.separator()
+        layout.operator("view3d.pivot_cursor", text="Set Cursor as Pivot Point")
+        layout.operator("view3d.revert_pivot", text="Revert Pivot Point")
+
+
+class VIEW3D_MT_editM_Edge(bpy.types.Menu):
+    bl_label = "Edges"
+
+    def draw(self, context):
+        layout = self.layout
+        layout.operator_context = 'INVOKE_REGION_WIN'
+        layout.separator()
+        layout.operator("mesh.mark_seam")
+        layout.operator("mesh.mark_seam", text="Clear Seam").clear = True
+        layout.separator()
+        layout.operator("mesh.mark_sharp")
+        layout.operator("mesh.mark_sharp", text="Clear Sharp").clear = True
+        layout.operator("mesh.extrude_move_along_normals",text="Extrude")
+        layout.separator()
+        layout.operator("mesh.edge_rotate", text="Rotate Edge CW").direction = 'CW'
+        layout.operator("mesh.edge_rotate", text="Rotate Edge CCW").direction = 'CCW'
+        layout.separator()
+        layout.operator("TFM_OT_edge_slide", text="Edge Slide")
+        layout.operator("mesh.loop_multi_select", text="Edge Loop")
+        layout.operator("mesh.loop_multi_select", text="Edge Ring").ring = True
+        layout.operator("mesh.loop_to_region")
+        layout.operator("mesh.region_to_loop")
+
+def register():
+    bpy.types.register(VIEW3D_MT_3D_Cursor_Menu)
+    bpy.types.register(pivot_cursor)
+    bpy.types.register(revert_pivot)
+    bpy.types.register(VIEW3D_MT_curs)
+    bpy.types.register(VIEW3D_MT_editM_Edge)
+    bpy.types.register(VIEW3D_MT_selectS)
+    bpy.types.register(VIEW3D_MT_undoS)
+    km = bpy.context.manager.active_keyconfig.keymaps['3D View']
+    kmi = km.add_item('wm.call_menu', 'SELECTMOUSE', 'CLICK')
+    kmi.properties.name = "VIEW3D_MT_3D_Cursor_Menu"
+
+def unregister():
+    bpy.types.unregister(VIEW3D_MT_3D_Cursor_Menu)
+    bpy.types.unregister(pivot_cursor)
+    bpy.types.unregister(revert_pivot)
+    bpy.types.unregister(VIEW3D_MT_curs)
+    bpy.types.unregister(VIEW3D_MT_editM_Edge)
+    bpy.types.unregister(VIEW3D_MT_selectS)
+    bpy.types.unregister(VIEW3D_MT_undoS)
+    km = bpy.context.manager.active_keyconfig.keymaps['3D View']
+    for kmi in km.items:
+        if kmi.idname == 'wm.call_menu':
+            if kmi.properties.name == "VIEW3D_MT_3D_Cursor_Menu":
+                km.remove_item(kmi)
+                break
+
+if __name__ == "__main__":
+    register()
\ No newline at end of file




More information about the Bf-extensions-cvs mailing list