Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-07-24 01:47:11 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-07-24 01:47:11 +0400
commit2029b0205ac8cdc632ebe38400926f4963d8cb5c (patch)
tree555e9564c3985b12ebcdadfab1d558b1e106cd56 /source/blender/makesrna/intern/rna_mask.c
parent37246b3ca17cf908d8c5855c9f0a6f0686646ea2 (diff)
mask layer rna api: add exception when removing incorrect masklayer from mask, add mask.layers.clear()
Diffstat (limited to 'source/blender/makesrna/intern/rna_mask.c')
-rw-r--r--source/blender/makesrna/intern/rna_mask.c25
1 files changed, 21 insertions, 4 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");