diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-08-16 07:40:00 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-08-16 07:40:00 +0400 |
commit | 573678df48b3c6296a22ba807b507a5421563990 (patch) | |
tree | 7bfa4a687d68809db4bcfe9065bb7db1ee8c7139 /source/blender/makesrna/intern/rna_context.c | |
parent | 177956a3a71479c56f437acb8524ad1130ba00e5 (diff) |
- 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.
Diffstat (limited to 'source/blender/makesrna/intern/rna_context.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_context.c | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/source/blender/makesrna/intern/rna_context.c b/source/blender/makesrna/intern/rna_context.c index 5d45a3513d1..7239fc1ff3d 100644 --- a/source/blender/makesrna/intern/rna_context.c +++ b/source/blender/makesrna/intern/rna_context.c @@ -31,10 +31,10 @@ #include "RNA_define.h" #include "RNA_types.h" -#ifdef RNA_RUNTIME - #include "BKE_context.h" +#ifdef RNA_RUNTIME + static PointerRNA rna_Context_manager_get(PointerRNA *ptr) { bContext *C= (bContext*)ptr->data; @@ -110,16 +110,10 @@ static PointerRNA rna_Context_user_preferences_get(PointerRNA *ptr) return newptr; } -static void rna_Context_mode_string_get(PointerRNA *ptr, char *value) +static int rna_Context_mode_get(PointerRNA *ptr) { bContext *C= (bContext*)ptr->data; - strcpy(value, CTX_data_mode_string(C)); -} - -static int rna_Context_mode_string_length(PointerRNA *ptr) -{ - bContext *C= (bContext*)ptr->data; - return strlen(CTX_data_mode_string(C)); + return CTX_data_mode_enum(C); } #else @@ -129,6 +123,23 @@ void RNA_def_context(BlenderRNA *brna) StructRNA *srna; PropertyRNA *prop; + static EnumPropertyItem mode_items[] = { + {CTX_MODE_EDIT_MESH, "EDIT_MESH", 0, "Mesh Edit", ""}, + {CTX_MODE_EDIT_CURVE, "EDIT_CURVE", 0, "Curve Edit", ""}, + {CTX_MODE_EDIT_SURFACE, "EDIT_SURFACE", 0, "Surface Edit", ""}, + {CTX_MODE_EDIT_TEXT, "EDIT_TEXT", 0, "Edit Edit", ""}, + {CTX_MODE_EDIT_ARMATURE, "EDIT_ARMATURE", 0, "Armature Edit", ""}, // PARSKEL reuse will give issues + {CTX_MODE_EDIT_METABALL, "EDIT_METABALL", 0, "Metaball Edit", ""}, + {CTX_MODE_EDIT_LATTICE, "EDIT_LATTICE", 0, "Lattice Edit", ""}, + {CTX_MODE_POSE, "POSE", 0, "Pose ", ""}, + {CTX_MODE_SCULPT, "SCULPT", 0, "Sculpt", ""}, + {CTX_MODE_PAINT_WEIGHT, "PAINT_WEIGHT", 0, "Weight Paint", ""}, + {CTX_MODE_PAINT_VERTEX, "PAINT_VERTEX", 0, "Vertex Paint", ""}, + {CTX_MODE_PAINT_TEXTURE, "PAINT_TEXTURE", 0, "Texture Paint", ""}, + {CTX_MODE_PARTICLE, "PARTICLE", 0, "Particle", ""}, + {CTX_MODE_OBJECT, "OBJECT", 0, "Object", ""}, + {0, NULL, 0, NULL, NULL}}; + srna= RNA_def_struct(brna, "Context", NULL); RNA_def_struct_ui_text(srna, "Context", "Current windowmanager and data context."); RNA_def_struct_sdna(srna, "bContext"); @@ -190,9 +201,10 @@ void RNA_def_context(BlenderRNA *brna) RNA_def_property_struct_type(prop, "UserPreferences"); RNA_def_property_pointer_funcs(prop, "rna_Context_user_preferences_get", NULL, NULL); - prop= RNA_def_property(srna, "mode_string", PROP_STRING, PROP_NONE); + prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, mode_items); RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_string_funcs(prop, "rna_Context_mode_string_get", "rna_Context_mode_string_length", NULL); + RNA_def_property_enum_funcs(prop, "rna_Context_mode_get", NULL, NULL); } #endif |