[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22479] branches/blender2.5/blender: 2. 5 3D_View:

Thomas Dinges dingto at gmx.de
Sat Aug 15 21:40:10 CEST 2009


Revision: 22479
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22479
Author:   dingto
Date:     2009-08-15 21:40:09 +0200 (Sat, 15 Aug 2009)

Log Message:
-----------
2.5 3D_View:
Patch [#19031] (2.5) python menus for the view3d header
by Lorenzo Pierfederici (lento). Thanks!

* Added CTX_data_mode_string() to find out in which mode we're in.
* Added some "select" menus as a test.

This patch makes it basically possible to wrap the 3D View menus to python. 

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/space_view3d.py
    branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
    branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_context.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui_api.c

Modified: branches/blender2.5/blender/release/ui/space_view3d.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d.py	2009-08-15 19:38:52 UTC (rev 22478)
+++ branches/blender2.5/blender/release/ui/space_view3d.py	2009-08-15 19:40:09 UTC (rev 22479)
@@ -95,6 +95,256 @@
 		layout.itemO("screen.region_foursplit", text="Toggle Quad View")
 		layout.itemO("screen.screen_full_area", text="Toggle Full Screen")
 
+# ********** Select menus ****************
+
+class VIEW3D_MT_select_objectmode(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+
+		layout.itemS()
+
+		layout.itemO("object.select_all_toggle", text="Select/Deselect All")
+		layout.itemO("object.select_inverse", text="Inverse")
+		layout.itemO("object.select_random", text="Random")
+		layout.itemO("object.select_by_layer", text="Select All by Layer")
+		layout.item_enumO("object.select_by_type", "type", "", text="Select All by Type")
+		layout.item_enumO("object.select_grouped", "type", "", text="Select Grouped")
+
+class VIEW3D_MT_select_posemode(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+
+		layout.itemS()
+		
+		layout.itemO("pose.select_all_toggle", text="Select/Deselect All")
+		layout.itemO("pose.select_inverse", text="Inverse")
+		layout.itemO("pose.select_constraint_target", text="Constraint Target")
+		
+		layout.itemS()
+		
+		layout.item_enumO("pose.select_hierarchy", "direction", "PARENT")
+		layout.item_enumO("pose.select_hierarchy", "direction", "CHILD")
+		
+		layout.itemS()
+		
+		layout.view3d_select_posemenu()
+
+class VIEW3D_MT_select_particlemode(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+
+		layout.itemS()
+		
+		layout.itemO("particle.select_all_toggle", text="Select/Deselect All")
+		layout.itemO("particle.select_linked")
+		
+		layout.itemS()
+		
+		#layout.itemO("particle.select_last")
+		#layout.itemO("particle.select_first")
+		
+		layout.itemO("particle.select_more")
+		layout.itemO("particle.select_less")
+
+class VIEW3D_MT_select_meshedit(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+
+		layout.itemS()
+
+		layout.itemO("mesh.select_all_toggle", text="Select/Deselect All")
+		layout.itemO("mesh.select_inverse", text="Inverse")
+
+		layout.itemS()
+
+		layout.itemO("mesh.select_random", text="Random...")
+		layout.itemO("mesh.edges_select_sharp", text="Sharp Edges")
+		layout.itemO("mesh.faces_select_linked_flat", text="Linked Flat Faces")
+
+		layout.itemS()
+
+		layout.item_enumO("mesh.select_by_number_vertices", "type", "TRIANGLES", text="Triangles")
+		layout.item_enumO("mesh.select_by_number_vertices", "type", "QUADS", text="Quads")
+		layout.item_enumO("mesh.select_by_number_vertices", "type", "OTHER", text="Loose Verts/Edges")
+		layout.itemO("mesh.select_similar", text="Similar...")
+
+		layout.itemS()
+
+		layout.itemO("mesh.select_less", text="Less")
+		layout.itemO("mesh.select_more", text="More")
+
+		layout.itemS()
+
+		layout.itemO("mesh.select_linked", text="Linked")
+		layout.itemO("mesh.select_vertex_path", text="Vertex Path")
+		layout.itemO("mesh.loop_multi_select", text="Edge Loop")
+		layout.item_booleanO("mesh.loop_multi_select", "ring", True, text="Edge Ring")
+
+		layout.itemS()
+
+		layout.itemO("mesh.loop_to_region")
+		layout.itemO("mesh.region_to_loop")
+
+class VIEW3D_MT_select_curveedit(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+		layout.itemO("view3d.select_circle")
+
+		layout.itemS()
+		
+		layout.itemO("curve.select_all_toggle", text="Select/Deselect All")
+		layout.itemO("curve.select_inverse")
+		layout.itemO("curve.select_random")
+		layout.itemO("curve.select_every_nth")
+
+		layout.itemS()
+		
+		layout.itemO("curve.de_select_first")
+		layout.itemO("curve.de_select_last")
+		layout.itemO("curve.select_next")
+		layout.itemO("curve.select_previous")
+
+		layout.itemS()
+		
+		layout.itemO("curve.select_more")
+		layout.itemO("curve.select_less")
+
+class VIEW3D_MT_select_surfaceedit(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+		layout.itemO("view3d.select_circle")
+
+		layout.itemS()
+		
+		layout.itemO("curve.select_all_toggle", text="Select/Deselect All")
+		layout.itemO("curve.select_inverse")
+		layout.itemO("curve.select_random")
+		layout.itemO("curve.select_every_nth")
+
+		layout.itemS()
+		
+		layout.itemO("curve.select_row")
+
+		layout.itemS()
+		
+		layout.itemO("curve.select_more")
+		layout.itemO("curve.select_less")
+
+class VIEW3D_MT_select_mballedit(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+		
+		layout.itemS()
+		
+		layout.itemL(text="Select/Deselect All")
+		layout.itemL(text="Inverse")
+		
+		layout.itemS()
+		
+		layout.itemL(text="Random")
+
+class VIEW3D_MT_select_latticeedit(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+
+		layout.itemS()
+		
+		layout.itemO("lattice.select_all_toggle", text="Select/Deselect All")
+
+class VIEW3D_MT_select_armatureedit(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.itemO("view3d.select_border")
+
+		layout.itemS()
+		
+		layout.itemO("armature.select_all_toggle", text="Select/Deselect All")
+		layout.itemO("armature.select_inverse", text="Inverse")
+
+		layout.itemS()
+		
+		layout.item_enumO("armature.select_hierarchy", "direction", "PARENT")
+		layout.item_enumO("armature.select_hierarchy", "direction", "CHILD")
+		
+		layout.itemS()
+		
+		layout.view3d_select_armaturemenu()
+
+class VIEW3D_MT_select_facesel(bpy.types.Menu):
+	__space_type__ = "VIEW_3D"
+	__label__ = "Select"
+
+	def draw(self, context):
+		layout = self.layout
+
+		layout.view3d_select_faceselmenu()
+
+class VIEW3D_HT_header(bpy.types.Header):
+	__space_type__ = "VIEW_3D"
+
+	def draw(self, context):
+		view = context.space_data
+		mode_string = context.mode_string
+		layout = self.layout
+
+		layout.template_header()
+		
+		# menus
+		if context.area.show_menus:
+			row = layout.row()
+
+			row.itemM("VIEW3D_MT_view")
+			
+			selectmenu = "VIEW3D_MT_select_%s" % mode_string
+			if selectmenu in dir(bpy.types):
+				layout.itemM(selectmenu)
+
+		layout.template_header_3D()
+
 # ********** Panel ****************
 
 class VIEW3D_PT_3dview_properties(bpy.types.Panel):
@@ -200,6 +450,16 @@
 
 bpy.types.register(VIEW3D_MT_view_navigation)
 bpy.types.register(VIEW3D_MT_view)
+bpy.types.register(VIEW3D_MT_select_objectmode)
+bpy.types.register(VIEW3D_MT_select_posemode)
+bpy.types.register(VIEW3D_MT_select_particlemode)
+bpy.types.register(VIEW3D_MT_select_meshedit)
+bpy.types.register(VIEW3D_MT_select_curveedit)
+bpy.types.register(VIEW3D_MT_select_surfaceedit)
+bpy.types.register(VIEW3D_MT_select_mballedit)
+bpy.types.register(VIEW3D_MT_select_latticeedit)
+bpy.types.register(VIEW3D_MT_select_armatureedit)
+bpy.types.register(VIEW3D_MT_select_facesel)
 bpy.types.register(VIEW3D_HT_header)
 bpy.types.register(VIEW3D_PT_3dview_properties)
 bpy.types.register(VIEW3D_PT_3dview_display)

Modified: branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d_toolbar.py	2009-08-15 19:38:52 UTC (rev 22478)
+++ branches/blender2.5/blender/release/ui/space_view3d_toolbar.py	2009-08-15 19:40:09 UTC (rev 22479)
@@ -1,14 +1,15 @@
 
 import bpy
 
-# ********** default tools for objectmode ****************
 
 class View3DPanel(bpy.types.Panel):
 	__space_type__ = "VIEW_3D"
 	__region_type__ = "TOOLS"
-	__context__ = "objectmode"
 
+# ********** default tools for objectmode ****************
+
 class VIEW3D_PT_tools_objectmode(View3DPanel):
+	__context__ = "objectmode"
 	__label__ = "Object Tools"
 
 	def draw(self, context):
@@ -43,12 +44,8 @@
 
 # ********** default tools for editmode_mesh ****************
 
-class View3DPanel(bpy.types.Panel):
-	__space_type__ = "VIEW_3D"
-	__region_type__ = "TOOLS"
-	__context__ = "editmode_mesh"
-
-class VIEW3D_PT_tools_editmode_mesh(View3DPanel):
+class VIEW3D_PT_tools_meshedit(View3DPanel):
+	__context__ = "meshedit"
 	__label__ = "Mesh Tools"
 
 	def draw(self, context):
@@ -90,12 +87,8 @@
 
 # ********** default tools for editmode_curve ****************
 
-class View3DPanel(bpy.types.Panel):
-	__space_type__ = "VIEW_3D"
-	__region_type__ = "TOOLS"
-	__context__ = "editmode_curve"
-
-class VIEW3D_PT_tools_editmode_curve(View3DPanel):
+class VIEW3D_PT_tools_curveedit(View3DPanel):
+	__context__ = "curveedit"
 	__label__ = "Curve Tools"
 
 	def draw(self, context):
@@ -124,12 +117,8 @@
 
 # ********** default tools for editmode_surface ****************
 
-class View3DPanel(bpy.types.Panel):
-	__space_type__ = "VIEW_3D"
-	__region_type__ = "TOOLS"
-	__context__ = "editmode_surface"
-
-class VIEW3D_PT_tools_editmode_surface(View3DPanel):
+class VIEW3D_PT_tools_surfaceedit(View3DPanel):
+	__context__ = "surfaceedit"
 	__label__ = "Surface Tools"
 
 	def draw(self, context):
@@ -158,12 +147,8 @@
 
 # ********** default tools for editmode_text ****************
 
-class View3DPanel(bpy.types.Panel):
-	__space_type__ = "VIEW_3D"
-	__region_type__ = "TOOLS"
-	__context__ = "editmode_text"
-
-class VIEW3D_PT_tools_editmode_text(View3DPanel):
+class VIEW3D_PT_tools_textedit(View3DPanel):
+	__context__ = "textedit"
 	__label__ = "Text Tools"
 
 	def draw(self, context):
@@ -179,12 +164,8 @@
 
 # ********** default tools for editmode_armature ****************
 
-class View3DPanel(bpy.types.Panel):
-	__space_type__ = "VIEW_3D"
-	__region_type__ = "TOOLS"
-	__context__ = "editmode_armature"
-
-class VIEW3D_PT_tools_editmode_armature(View3DPanel):
+class VIEW3D_PT_tools_armatureedit(View3DPanel):
+	__context__ = "armatureedit"

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list