diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-04-02 15:06:41 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-04-02 15:06:41 +0400 |
commit | d85279e58cf075beb30d74f267cba8a31a3bedcb (patch) | |
tree | de06e114ec3e749ef11a512244acf8bd4b585ada /source/blender/makesrna/intern/rna_gpencil.c | |
parent | 3bc59fe77130a6975c85d8be8606cb289d5b1e55 (diff) |
move grese pencil layers[i].active (boolean) -> layers.active (GPencil Layer).
Diffstat (limited to 'source/blender/makesrna/intern/rna_gpencil.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_gpencil.c | 94 |
1 files changed, 77 insertions, 17 deletions
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c index d6f13444247..c5d413b0c49 100644 --- a/source/blender/makesrna/intern/rna_gpencil.c +++ b/source/blender/makesrna/intern/rna_gpencil.c @@ -45,7 +45,7 @@ static int rna_GPencilLayer_active_frame_editable(PointerRNA *ptr) { bGPDlayer *gpl= (bGPDlayer *)ptr->data; - + /* surely there must be other criteria too... */ if (gpl->flag & GP_LAYER_LOCKED) return 0; @@ -53,22 +53,43 @@ static int rna_GPencilLayer_active_frame_editable(PointerRNA *ptr) return 1; } -static void rna_GPencilLayer_active_set(PointerRNA *ptr, int value) +static PointerRNA rna_GPencil_active_layer_get(PointerRNA *ptr) { bGPdata *gpd= ptr->id.data; - bGPDlayer *gpl= ptr->data; - - /* disabled all other layers anyway */ - if (GS(gpd->id.name) == ID_GD) { + + if (GS(gpd->id.name) == ID_GD) { /* why would this ever be not GD */ bGPDlayer *gl; - - for (gl= gpd->layers.first; gl; gl= gl->next) - gl->flag &= ~GP_LAYER_ACTIVE; - } - - /* if enabling value, make it active */ - if (value) - gpl->flag |= GP_LAYER_ACTIVE; + + for (gl= gpd->layers.first; gl; gl= gl->next) { + if(gl->flag & GP_LAYER_ACTIVE) { + break; + } + } + + if(gl) { + return rna_pointer_inherit_refine(ptr, &RNA_GPencilLayer, gl); + } + } + + return rna_pointer_inherit_refine(ptr, NULL, NULL); +} + +static void rna_GPencil_active_layer_set(PointerRNA *ptr, PointerRNA value) +{ + bGPdata *gpd= ptr->id.data; + + if (GS(gpd->id.name) == ID_GD) { /* why would this ever be not GD */ + bGPDlayer *gl; + + for (gl= gpd->layers.first; gl; gl= gl->next) { + if(gl == value.data) { + gl->flag |= GP_LAYER_ACTIVE; + } + else { + gl->flag &= ~GP_LAYER_ACTIVE; + } + } + } } #else @@ -218,13 +239,16 @@ static void rna_def_gpencil_layer(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_FRAMELOCK); RNA_def_property_ui_text(prop, "Frame Locked", "Lock current frame displayed by layer"); RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); - + + /* expose as layers.active */ + /* prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_ACTIVE); RNA_def_property_boolean_funcs(prop, NULL, "rna_GPencilLayer_active_set"); RNA_def_property_ui_text(prop, "Active", "Set active layer for editing"); RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); - + */ + prop= RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_SELECT); RNA_def_property_ui_text(prop, "Select", "Layer is selected for editing in the DopeSheet"); @@ -243,6 +267,41 @@ static void rna_def_gpencil_layer(BlenderRNA *brna) RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL); } +static void rna_def_gpencil_layers(BlenderRNA *brna, PropertyRNA *cprop) +{ + StructRNA *srna; + PropertyRNA *prop; + + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "GreasePencilLayers"); + srna= RNA_def_struct(brna, "GreasePencilLayers", NULL); + RNA_def_struct_sdna(srna, "bGPdata"); + RNA_def_struct_ui_text(srna, "Grease Pencil Layers", "Collection of grease pencil layers"); + +#if 0 + func= RNA_def_function(srna, "new", "rna_GPencil_layer_new"); + RNA_def_function_ui_description(func, "Add a new spline to the curve."); + parm= RNA_def_enum(func, "type", curve_type_items, CU_POLY, "", "type for the new spline."); + RNA_def_property_flag(parm, PROP_REQUIRED); + parm= RNA_def_pointer(func, "spline", "Spline", "", "The newly created spline."); + RNA_def_function_return(func, parm); + + func= RNA_def_function(srna, "remove", "rna_GPencil_layer_remove"); + RNA_def_function_ui_description(func, "Remove a spline from a curve."); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm= RNA_def_pointer(func, "spline", "Spline", "", "The spline to remove."); + RNA_def_property_flag(parm, PROP_REQUIRED|PROP_NEVER_NULL); +#endif + + prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); + RNA_def_property_struct_type(prop, "GreasePencil"); + RNA_def_property_pointer_funcs(prop, "rna_GPencil_active_layer_get", "rna_GPencil_active_layer_set", NULL, NULL); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Active Layer", "Active grease pencil layer"); +} + static void rna_def_gpencil_data(BlenderRNA *brna) { StructRNA *srna; @@ -265,6 +324,7 @@ static void rna_def_gpencil_data(BlenderRNA *brna) RNA_def_property_collection_sdna(prop, NULL, "layers", NULL); RNA_def_property_struct_type(prop, "GPencilLayer"); RNA_def_property_ui_text(prop, "Layers", ""); + rna_def_gpencil_layers(brna, prop); /* Flags */ prop= RNA_def_property(srna, "draw_mode", PROP_ENUM, PROP_NONE); @@ -284,7 +344,7 @@ static void rna_def_gpencil_data(BlenderRNA *brna) void RNA_def_gpencil(BlenderRNA *brna) { rna_def_gpencil_data(brna); - + rna_def_gpencil_layer(brna); rna_def_gpencil_frame(brna); rna_def_gpencil_stroke(brna); |