[Bf-blender-cvs] [96f20c3] master: Data Transfer operator: Add a 'freeze' setting to prevent operator from re-running when changing settings.

Bastien Montagne noreply at git.blender.org
Fri Aug 7 16:37:27 CEST 2015


Commit: 96f20c34a216215a6f4b94e1886485a0d72a4205
Author: Bastien Montagne
Date:   Fri Aug 7 16:33:48 2015 +0200
Branches: master
https://developer.blender.org/rB96f20c34a216215a6f4b94e1886485a0d72a4205

Data Transfer operator: Add a 'freeze' setting to prevent operator from re-running when changing settings.

This is likely weak design, but allows people to change several settings without having to wait
several tenth of seconds each time, when e.g. transferring UVs between heavy geometries.

===================================================================

M	source/blender/editors/object/object_data_transfer.c

===================================================================

diff --git a/source/blender/editors/object/object_data_transfer.c b/source/blender/editors/object/object_data_transfer.c
index 0b604a7..90c3f00 100644
--- a/source/blender/editors/object/object_data_transfer.c
+++ b/source/blender/editors/object/object_data_transfer.c
@@ -329,6 +329,8 @@ static int data_transfer_exec(bContext *C, wmOperator *op)
 
 	bool changed = false;
 
+	const bool is_frozen = RNA_boolean_get(op->ptr, "use_freeze");
+
 	const bool reverse_transfer = RNA_boolean_get(op->ptr, "use_reverse_transfer");
 
 	const int data_type = RNA_enum_get(op->ptr, "data_type");
@@ -358,6 +360,12 @@ static int data_transfer_exec(bContext *C, wmOperator *op)
 	SpaceTransform space_transform_data;
 	SpaceTransform *space_transform = (use_object_transform && !use_auto_transform) ? &space_transform_data : NULL;
 
+	if (is_frozen) {
+		BKE_report(op->reports, RPT_INFO,
+		           "Operator is frozen, changes to its settings won't take effect until you unfreeze it");
+		return OPERATOR_FINISHED;
+	}
+
 	if (reverse_transfer && ((ID *)(ob_src->data))->lib) {
 		/* Do not transfer to linked data, not supported. */
 		return OPERATOR_CANCELLED;
@@ -524,6 +532,10 @@ void OBJECT_OT_data_transfer(wmOperatorType *ot)
 	                       "Transfer from selected objects to active one");
 	RNA_def_property_flag(prop, PROP_HIDDEN);
 
+	RNA_def_boolean(ot->srna, "use_freeze", false, "Freeze Operator",
+	                "Prevent changes to settings to re-run the operator, "
+	                "handy to change several things at once with heavy geometry");
+
 	/* Data type to transfer. */
 	ot->prop = RNA_def_enum(ot->srna, "data_type", DT_layer_items, 0, "Data Type", "Which data to transfer");
 	RNA_def_boolean(ot->srna, "use_create", true, "Create Data", "Add data layers on destination meshes if needed");




More information about the Bf-blender-cvs mailing list