[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