[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22497] branches/blender2.5/blender: - replace rna context.mode_string with an enum context.mode, that way its self documenting and is used as a string from py anyway.

Campbell Barton ideasman42 at gmail.com
Sun Aug 16 05:40:00 CEST 2009


Revision: 22497
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22497
Author:   campbellbarton
Date:     2009-08-16 05:40:00 +0200 (Sun, 16 Aug 2009)

Log Message:
-----------
- replace rna context.mode_string with an enum context.mode, that way its self documenting and is used as a string from py anyway.

- view3d use select menus use the context.mode enum value.

- if selectmenu in dir(bpy.types) # creates a list of 1400+ strings, does a lookup and throws them away, better avoid this for redrawing.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/space_view3d.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/makesrna/intern/rna_context.c

Modified: branches/blender2.5/blender/release/ui/space_view3d.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d.py	2009-08-16 03:39:30 UTC (rev 22496)
+++ branches/blender2.5/blender/release/ui/space_view3d.py	2009-08-16 03:40:00 UTC (rev 22497)
@@ -10,7 +10,7 @@
 		layout = self.layout
 		
 		view = context.space_data
-		mode_string = context.mode_string
+		mode_string = context.mode
 
 		layout.template_header()
 		
@@ -21,11 +21,10 @@
 			row.itemM("VIEW3D_MT_view")
 			
 			# Select Menu
-			selectmenu = "VIEW3D_MT_select_%s" % mode_string
-			if selectmenu in dir(bpy.types):
-				row.itemM(selectmenu)
+			if mode_string not in ('EDIT_TEXT', ):
+				row.itemM("VIEW3D_MT_select_%s" % mode_string)
 			
-			if mode_string == 'objectmode':
+			if mode_string == 'OBJECT':
 				row.itemM("VIEW3D_MT_object")
 
 		layout.template_header_3D()
@@ -109,9 +108,9 @@
 		layout.item_floatO("view3d.zoom", "delta", 1.0, text="Zoom In")
 		layout.item_floatO("view3d.zoom", "delta", -1.0, text="Zoom Out")
 
-# ********** Select menus **********
+# ********** Select menus, suffix from context.mode **********
 
-class VIEW3D_MT_select_objectmode(bpy.types.Menu):
+class VIEW3D_MT_select_OBJECT(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -127,9 +126,9 @@
 		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")
+		layout.itemO("object.select_grouped", text="Select Grouped")
 
-class VIEW3D_MT_select_posemode(bpy.types.Menu):
+class VIEW3D_MT_select_POSE(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -146,14 +145,14 @@
 		
 		layout.itemS()
 		
-		layout.item_enumO("pose.select_hierarchy", "direction", "PARENT")
-		layout.item_enumO("pose.select_hierarchy", "direction", "CHILD")
+		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):
+class VIEW3D_MT_select_PARTICLE(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -175,7 +174,7 @@
 		layout.itemO("particle.select_more")
 		layout.itemO("particle.select_less")
 
-class VIEW3D_MT_select_mesh_edit(bpy.types.Menu):
+class VIEW3D_MT_select_EDIT_MESH(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -197,9 +196,9 @@
 
 		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.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()
@@ -219,7 +218,7 @@
 		layout.itemO("mesh.loop_to_region")
 		layout.itemO("mesh.region_to_loop")
 
-class VIEW3D_MT_select_curve_edit(bpy.types.Menu):
+class VIEW3D_MT_select_EDIT_CURVE(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -248,7 +247,7 @@
 		layout.itemO("curve.select_more")
 		layout.itemO("curve.select_less")
 
-class VIEW3D_MT_select_surface_edit(bpy.types.Menu):
+class VIEW3D_MT_select_EDIT_SURFACE(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -274,7 +273,7 @@
 		layout.itemO("curve.select_more")
 		layout.itemO("curve.select_less")
 
-class VIEW3D_MT_select_mball_edit(bpy.types.Menu):
+class VIEW3D_MT_select_EDIT_METABALL(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -292,7 +291,7 @@
 		
 		layout.itemL(text="Random")
 
-class VIEW3D_MT_select_lattice_edit(bpy.types.Menu):
+class VIEW3D_MT_select_EDIT_LATTICE(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -305,7 +304,7 @@
 		
 		layout.itemO("lattice.select_all_toggle", text="Select/Deselect All")
 
-class VIEW3D_MT_select_armature_edit(bpy.types.Menu):
+class VIEW3D_MT_select_EDIT_ARMATURE(bpy.types.Menu):
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -321,14 +320,14 @@
 
 		layout.itemS()
 		
-		layout.item_enumO("armature.select_hierarchy", "direction", "PARENT")
-		layout.item_enumO("armature.select_hierarchy", "direction", "CHILD")
+		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):
+class VIEW3D_MT_select_FACE(bpy.types.Menu):# XXX no matching enum
 	__space_type__ = "VIEW_3D"
 	__label__ = "Select"
 
@@ -570,16 +569,16 @@
 bpy.types.register(VIEW3D_MT_view) #View Menus
 bpy.types.register(VIEW3D_MT_view_navigation)
 
-bpy.types.register(VIEW3D_MT_select_objectmode) # Select Menus
-bpy.types.register(VIEW3D_MT_select_posemode)
-bpy.types.register(VIEW3D_MT_select_particlemode)
-bpy.types.register(VIEW3D_MT_select_mesh_edit)
-bpy.types.register(VIEW3D_MT_select_curve_edit)
-bpy.types.register(VIEW3D_MT_select_surface_edit)
-bpy.types.register(VIEW3D_MT_select_mball_edit)
-bpy.types.register(VIEW3D_MT_select_lattice_edit)
-bpy.types.register(VIEW3D_MT_select_armature_edit)
-bpy.types.register(VIEW3D_MT_select_facesel)
+bpy.types.register(VIEW3D_MT_select_OBJECT) # Select Menus
+bpy.types.register(VIEW3D_MT_select_POSE)
+bpy.types.register(VIEW3D_MT_select_PARTICLE)
+bpy.types.register(VIEW3D_MT_select_EDIT_MESH)
+bpy.types.register(VIEW3D_MT_select_EDIT_CURVE)
+bpy.types.register(VIEW3D_MT_select_EDIT_SURFACE)
+bpy.types.register(VIEW3D_MT_select_EDIT_METABALL)
+bpy.types.register(VIEW3D_MT_select_EDIT_LATTICE)
+bpy.types.register(VIEW3D_MT_select_EDIT_ARMATURE)
+bpy.types.register(VIEW3D_MT_select_FACE) # XXX todo
 
 bpy.types.register(VIEW3D_MT_object) # Object Menu
 bpy.types.register(VIEW3D_MT_object_clear)

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2009-08-16 03:39:30 UTC (rev 22496)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h	2009-08-16 03:40:00 UTC (rev 22497)
@@ -86,6 +86,25 @@
 	int used;
 } bContextStore;
 
+/* for the conrtext's rna mode enum
+ * keep aligned with data_mode_strings in context.c */
+enum {
+	CTX_MODE_EDIT_MESH = 0,
+	CTX_MODE_EDIT_CURVE,
+	CTX_MODE_EDIT_SURFACE,
+	CTX_MODE_EDIT_TEXT,
+	CTX_MODE_EDIT_ARMATURE,
+	CTX_MODE_EDIT_METABALL,
+	CTX_MODE_EDIT_LATTICE,
+	CTX_MODE_POSE,
+	CTX_MODE_SCULPT,
+	CTX_MODE_PAINT_WEIGHT,
+	CTX_MODE_PAINT_VERTEX,
+	CTX_MODE_PAINT_TEXTURE,
+	CTX_MODE_PARTICLE,
+	CTX_MODE_OBJECT
+};
+
 /* Context */
 
 bContext *CTX_create(void);
@@ -192,6 +211,7 @@
 struct ToolSettings *CTX_data_tool_settings(const bContext *C);
 
 char *CTX_data_mode_string(const bContext *C);
+int CTX_data_mode_enum(const bContext *C);
 
 void CTX_data_main_set(bContext *C, struct Main *bmain);
 void CTX_data_scene_set(bContext *C, struct Scene *bmain);

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-08-16 03:39:30 UTC (rev 22496)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c	2009-08-16 03:40:00 UTC (rev 22497)
@@ -661,44 +661,69 @@
 		return C->data.scene;
 }
 
-char *CTX_data_mode_string(const bContext *C)
+int CTX_data_mode_enum(const bContext *C)
 {
 	Object *obedit= CTX_data_edit_object(C);
 
 	if(obedit) {
 		switch(obedit->type) {
 			case OB_MESH:
-				return "mesh_edit";
+				return CTX_MODE_EDIT_MESH;
 			case OB_CURVE:
-				return "curve_edit";
+				return CTX_MODE_EDIT_CURVE;
 			case OB_SURF:
-				return "surface_edit";
+				return CTX_MODE_EDIT_SURFACE;
 			case OB_FONT:
-				return "text_edit";
+				return CTX_MODE_EDIT_TEXT;
 			case OB_ARMATURE:
-				return "armature_edit";
+				return CTX_MODE_EDIT_ARMATURE;
 			case OB_MBALL:
-				return "mball_edit";
+				return CTX_MODE_EDIT_METABALL;
 			case OB_LATTICE:
-				return "lattice_edit";
+				return CTX_MODE_EDIT_LATTICE;
 		}
 	}
 	else {
 		Object *ob = CTX_data_active_object(C);
-		
+
 		if(ob) {
-			if(ob->mode & OB_MODE_POSE) return "posemode";
-			else if(ob->mode & OB_MODE_SCULPT)  return "sculpt_mode";
-			else if(ob->mode & OB_MODE_WEIGHT_PAINT) return "weightpaint";
-			else if(ob->mode & OB_MODE_VERTEX_PAINT) return "vertexpaint";
-			else if(ob->mode & OB_MODE_TEXTURE_PAINT) return "texturepaint";
-			else if(ob->mode & OB_MODE_PARTICLE_EDIT) return "particlemode";
+			if(ob->mode & OB_MODE_POSE) return CTX_MODE_POSE;
+			else if(ob->mode & OB_MODE_SCULPT)  return CTX_MODE_SCULPT;
+			else if(ob->mode & OB_MODE_WEIGHT_PAINT) return CTX_MODE_PAINT_WEIGHT;
+			else if(ob->mode & OB_MODE_VERTEX_PAINT) return CTX_MODE_PAINT_VERTEX;
+			else if(ob->mode & OB_MODE_TEXTURE_PAINT) return CTX_MODE_PAINT_TEXTURE;
+			else if(ob->mode & OB_MODE_PARTICLE_EDIT) return CTX_MODE_PARTICLE;
 		}
 	}
-	
-	return "objectmode";
+
+	return CTX_MODE_OBJECT;
 }
 
+
+/* would prefer if we can use the enum version below over this one - Campbell */
+/* must be aligned with above enum  */
+static char *data_mode_strings[] = {
+	"mesh_edit",
+	"curve_edit",
+	"surface_edit",
+	"text_edit",
+	"armature_edit",
+	"mball_edit",
+	"lattice_edit",
+	"posemode",
+	"sculpt_mode",
+	"weightpaint",
+	"vertexpaint",
+	"texturepaint",
+	"particlemode",
+	"objectmode",
+	0
+};
+char *CTX_data_mode_string(const bContext *C)
+{
+	return data_mode_strings[CTX_data_mode_enum(C)];
+}
+
 void CTX_data_scene_set(bContext *C, Scene *scene)
 {
 	C->data.scene= scene;

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_context.c
===================================================================

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list