[Bf-blender-cvs] [ab67c6e46b6] master: WM: replace UI draw callbacks w/ property poll

Campbell Barton noreply at git.blender.org
Thu Jul 26 09:37:12 CEST 2018


Commit: ab67c6e46b689a703c22c6e04f6d098603e3b49c
Author: Campbell Barton
Date:   Thu Jul 26 17:35:33 2018 +1000
Branches: master
https://developer.blender.org/rBab67c6e46b689a703c22c6e04f6d098603e3b49c

WM: replace UI draw callbacks w/ property poll

Custom drawing functions were used just to control property display.
Move to poll function.

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

M	source/blender/editors/gpencil/gpencil_convert.c
M	source/blender/editors/mesh/editmesh_tools.c
M	source/blender/editors/object/object_data_transfer.c
M	source/blender/editors/object/object_relations.c

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

diff --git a/source/blender/editors/gpencil/gpencil_convert.c b/source/blender/editors/gpencil/gpencil_convert.c
index d6cb36d7fcd..e0c2e116b8a 100644
--- a/source/blender/editors/gpencil/gpencil_convert.c
+++ b/source/blender/editors/gpencil/gpencil_convert.c
@@ -1371,8 +1371,9 @@ static int gp_convert_layer_exec(bContext *C, wmOperator *op)
 	return OPERATOR_FINISHED;
 }
 
-static bool gp_convert_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, void *UNUSED(user_data))
+static bool gp_convert_poll_property(const bContext *UNUSED(C), wmOperator *op, const PropertyRNA *prop)
 {
+	PointerRNA *ptr = op->ptr;
 	const char *prop_id = RNA_property_identifier(prop);
 	const bool link_strokes = RNA_boolean_get(ptr, "use_link_strokes");
 	int timing_mode = RNA_enum_get(ptr, "timing_mode");
@@ -1435,18 +1436,6 @@ static bool gp_convert_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, void
 	return false;
 }
 
-static void gp_convert_ui(bContext *C, wmOperator *op)
-{
-	uiLayout *layout = op->layout;
-	wmWindowManager *wm = CTX_wm_manager(C);
-	PointerRNA ptr;
-
-	RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
-
-	/* Main auto-draw call */
-	uiDefAutoButsRNA(layout, &ptr, gp_convert_draw_check_prop, NULL, '\0');
-}
-
 void GPENCIL_OT_convert(wmOperatorType *ot)
 {
 	PropertyRNA *prop;
@@ -1460,7 +1449,7 @@ void GPENCIL_OT_convert(wmOperatorType *ot)
 	ot->invoke = WM_menu_invoke;
 	ot->exec = gp_convert_layer_exec;
 	ot->poll = gp_convert_poll;
-	ot->ui = gp_convert_ui;
+	ot->poll_property = gp_convert_poll_property;
 
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index c5c670b77ea..3e4f8232e62 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -5373,10 +5373,10 @@ static int edbm_sort_elements_exec(bContext *C, wmOperator *op)
 	return OPERATOR_FINISHED;
 }
 
-static bool edbm_sort_elements_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, void *UNUSED(user_data))
+static bool edbm_sort_elements_poll_property(const bContext *UNUSED(C), wmOperator *op, const PropertyRNA *prop)
 {
 	const char *prop_id = RNA_property_identifier(prop);
-	const int action = RNA_enum_get(ptr, "type");
+	const int action = RNA_enum_get(op->ptr, "type");
 
 	/* Only show seed for randomize action! */
 	if (STREQ(prop_id, "seed")) {
@@ -5397,18 +5397,6 @@ static bool edbm_sort_elements_draw_check_prop(PointerRNA *ptr, PropertyRNA *pro
 	return true;
 }
 
-static void edbm_sort_elements_ui(bContext *C, wmOperator *op)
-{
-	uiLayout *layout = op->layout;
-	wmWindowManager *wm = CTX_wm_manager(C);
-	PointerRNA ptr;
-
-	RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
-
-	/* Main auto-draw call. */
-	uiDefAutoButsRNA(layout, &ptr, edbm_sort_elements_draw_check_prop, NULL, '\0');
-}
-
 void MESH_OT_sort_elements(wmOperatorType *ot)
 {
 	static const EnumPropertyItem type_items[] = {
@@ -5444,7 +5432,7 @@ void MESH_OT_sort_elements(wmOperatorType *ot)
 	ot->invoke = WM_menu_invoke;
 	ot->exec = edbm_sort_elements_exec;
 	ot->poll = ED_operator_editmesh;
-	ot->ui = edbm_sort_elements_ui;
+	ot->poll_property = edbm_sort_elements_poll_property;
 
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
diff --git a/source/blender/editors/object/object_data_transfer.c b/source/blender/editors/object/object_data_transfer.c
index 44cca58fc5c..91081345069 100644
--- a/source/blender/editors/object/object_data_transfer.c
+++ b/source/blender/editors/object/object_data_transfer.c
@@ -453,8 +453,9 @@ static bool data_transfer_poll(bContext *C)
 }
 
 /* Used by both OBJECT_OT_data_transfer and OBJECT_OT_datalayout_transfer */
-static bool data_transfer_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, void *UNUSED(user_data))
+static bool data_transfer_poll_property(const bContext *UNUSED(C), wmOperator *op, const PropertyRNA *prop)
 {
+	PointerRNA *ptr = op->ptr;
 	PropertyRNA *prop_other;
 
 	const char *prop_id = RNA_property_identifier(prop);
@@ -515,19 +516,6 @@ static bool data_transfer_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, vo
 	return true;
 }
 
-/* Used by both OBJECT_OT_data_transfer and OBJECT_OT_datalayout_transfer */
-static void data_transfer_ui(bContext *C, wmOperator *op)
-{
-	uiLayout *layout = op->layout;
-	wmWindowManager *wm = CTX_wm_manager(C);
-	PointerRNA ptr;
-
-	RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
-
-	/* Main auto-draw call */
-	uiDefAutoButsRNA(layout, &ptr, data_transfer_draw_check_prop, NULL, '\0');
-}
-
 /* transfers weight from active to selected */
 void OBJECT_OT_data_transfer(wmOperatorType *ot)
 {
@@ -540,10 +528,10 @@ void OBJECT_OT_data_transfer(wmOperatorType *ot)
 
 	/* API callbacks.*/
 	ot->poll = data_transfer_poll;
+	ot->poll_property = data_transfer_poll_property;
 	ot->invoke = WM_menu_invoke;
 	ot->exec = data_transfer_exec;
 	ot->check = data_transfer_check;
-	ot->ui = data_transfer_ui;
 
 	/* Flags.*/
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -702,10 +690,10 @@ void OBJECT_OT_datalayout_transfer(wmOperatorType *ot)
 	ot->idname = "OBJECT_OT_datalayout_transfer";
 
 	ot->poll = datalayout_transfer_poll;
+	ot->poll_property = data_transfer_poll_property;
 	ot->invoke = datalayout_transfer_invoke;
 	ot->exec = datalayout_transfer_exec;
 	ot->check = data_transfer_check;
-	ot->ui = data_transfer_ui;
 
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 77b5d35db03..34f64023441 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -938,13 +938,13 @@ static int parent_set_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent
 	return OPERATOR_INTERFACE;
 }
 
-static bool parent_set_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, void *UNUSED(user_data))
+static bool parent_set_poll_property(const bContext *UNUSED(C), wmOperator *op, const PropertyRNA *prop)
 {
 	const char *prop_id = RNA_property_identifier(prop);
-	const int type = RNA_enum_get(ptr, "type");
 
 	/* Only show XMirror for PAR_ARMATURE_ENVELOPE and PAR_ARMATURE_AUTO! */
 	if (STREQ(prop_id, "xmirror")) {
+		const int type = RNA_enum_get(op->ptr, "type");
 		if (ELEM(type, PAR_ARMATURE_ENVELOPE, PAR_ARMATURE_AUTO))
 			return true;
 		else
@@ -954,18 +954,6 @@ static bool parent_set_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, void
 	return true;
 }
 
-static void parent_set_ui(bContext *C, wmOperator *op)
-{
-	uiLayout *layout = op->layout;
-	wmWindowManager *wm = CTX_wm_manager(C);
-	PointerRNA ptr;
-
-	RNA_pointer_create(&wm->id, op->type->srna, op->properties, &ptr);
-
-	/* Main auto-draw call. */
-	uiDefAutoButsRNA(layout, &ptr, parent_set_draw_check_prop, NULL, '\0');
-}
-
 void OBJECT_OT_parent_set(wmOperatorType *ot)
 {
 	/* identifiers */
@@ -977,7 +965,7 @@ void OBJECT_OT_parent_set(wmOperatorType *ot)
 	ot->invoke = parent_set_invoke;
 	ot->exec = parent_set_exec;
 	ot->poll = ED_operator_object_active;
-	ot->ui = parent_set_ui;
+	ot->poll_property = parent_set_poll_property;
 
 	/* flags */
 	ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;



More information about the Bf-blender-cvs mailing list