diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-07-24 01:47:11 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-07-24 01:47:11 +0400 |
commit | 2029b0205ac8cdc632ebe38400926f4963d8cb5c (patch) | |
tree | 555e9564c3985b12ebcdadfab1d558b1e106cd56 | |
parent | 37246b3ca17cf908d8c5855c9f0a6f0686646ea2 (diff) |
mask layer rna api: add exception when removing incorrect masklayer from mask, add mask.layers.clear()
-rw-r--r-- | source/blender/makesrna/intern/rna_mask.c | 25 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_object.c | 6 |
2 files changed, 24 insertions, 7 deletions
diff --git a/source/blender/makesrna/intern/rna_mask.c b/source/blender/makesrna/intern/rna_mask.c index 2987057aeb6..ba2ac978ff9 100644 --- a/source/blender/makesrna/intern/rna_mask.c +++ b/source/blender/makesrna/intern/rna_mask.c @@ -324,7 +324,7 @@ static void rna_MaskSplinePoint_handle_type_set(PointerRNA *ptr, int value) /* ** API ** */ -static MaskLayer *rna_Mask_layer_new(Mask *mask, const char *name) +static MaskLayer *rna_Mask_layers_new(Mask *mask, const char *name) { MaskLayer *masklay = BKE_mask_layer_new(mask, name); @@ -333,13 +333,25 @@ static MaskLayer *rna_Mask_layer_new(Mask *mask, const char *name) return masklay; } -void rna_Mask_layer_remove(Mask *mask, MaskLayer *masklay) +void rna_Mask_layers_remove(Mask *mask, ReportList *reports, MaskLayer *masklay) { + if (BLI_findindex(&mask->masklayers, masklay) == -1) { + BKE_reportf(reports, RPT_ERROR, "MaskLayer '%s' not found in mask '%s'", masklay->name, mask->id.name + 2); + return; + } + BKE_mask_layer_remove(mask, masklay); WM_main_add_notifier(NC_MASK | NA_EDITED, mask); } +static void rna_Mask_layers_clear(Mask *mask) +{ + BKE_mask_layer_free_list(&mask->masklayers); + + WM_main_add_notifier(NC_MASK | NA_EDITED, mask); +} + static void rna_MaskLayer_spline_add(ID *id, MaskLayer *masklay, int number) { Mask *mask = (Mask*) id; @@ -680,16 +692,21 @@ static void rna_def_masklayers(BlenderRNA *brna, PropertyRNA *cprop) RNA_def_struct_sdna(srna, "Mask"); RNA_def_struct_ui_text(srna, "Mask Layers", "Collection of layers used by mask"); - func = RNA_def_function(srna, "new", "rna_Mask_layer_new"); + func = RNA_def_function(srna, "new", "rna_Mask_layers_new"); RNA_def_function_ui_description(func, "Add layer to this mask"); RNA_def_string(func, "name", "", 0, "Name", "Name of new layer"); parm = RNA_def_pointer(func, "layer", "MaskLayer", "", "New mask layer"); RNA_def_function_return(func, parm); - func = RNA_def_function(srna, "remove", "rna_Mask_layer_remove"); + func = RNA_def_function(srna, "remove", "rna_Mask_layers_remove"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Remove layer from this mask"); RNA_def_pointer(func, "layer", "MaskLayer", "", "Shape to be removed"); + /* clear all layers */ + func = RNA_def_function(srna, "clear", "rna_Mask_layers_clear"); + RNA_def_function_ui_description(func, "Remove all mask layers"); + /* active layer */ prop = RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "MaskLayer"); diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index ce6b028beb5..7aedbf40eba 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -1759,7 +1759,7 @@ static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop) /* RNA_def_property_collection_active(prop, prop_act); */ #endif - /* add target */ + /* add modifier */ func = RNA_def_function(srna, "new", "rna_Object_modifier_new"); RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Add a new modifier"); @@ -1772,11 +1772,11 @@ static void rna_def_object_modifiers(BlenderRNA *brna, PropertyRNA *cprop) parm = RNA_def_pointer(func, "modifier", "Modifier", "", "Newly created modifier"); RNA_def_function_return(func, parm); - /* remove target */ + /* remove modifier */ func = RNA_def_function(srna, "remove", "rna_Object_modifier_remove"); RNA_def_function_flag(func, FUNC_USE_CONTEXT | FUNC_USE_REPORTS); RNA_def_function_ui_description(func, "Remove an existing modifier from the object"); - /* target to remove*/ + /* modifier to remove */ parm = RNA_def_pointer(func, "modifier", "Modifier", "", "Modifier to remove"); RNA_def_property_flag(parm, PROP_REQUIRED | PROP_NEVER_NULL); |