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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to