Commit: ee36ae1356611708fb03bf8f6194f3369de75d22
Author: Campbell Barton
Date: Fri Jun 9 14:25:52 2017 +1000
Branches: custom-manipulators
https://developer.blender.org/rBee36ae1356611708fb03bf8f6194f3369de75d22
Expose wmManipulatorGroupType.setup & refresh callbacks
===================================================================
M source/blender/makesrna/intern/rna_wm_manipulator.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_wm_manipulator.c
b/source/blender/makesrna/intern/rna_wm_manipulator.c
index a2fbe5c8376..c053883e307 100644
--- a/source/blender/makesrna/intern/rna_wm_manipulator.c
+++ b/source/blender/makesrna/intern/rna_wm_manipulator.c
@@ -506,6 +506,42 @@ static wmKeyMap
*rna_manipulatorgroup_setup_keymap_cb(const wmManipulatorGroupTy
return keymap;
}
+static void rna_manipulatorgroup_refresh_cb(const bContext *C,
wmManipulatorGroup *wgroup)
+{
+ extern FunctionRNA rna_ManipulatorGroup_refresh_func;
+
+ PointerRNA wgroup_ptr;
+ ParameterList list;
+ FunctionRNA *func;
+
+ RNA_pointer_create(NULL, wgroup->type->ext.srna, wgroup, &wgroup_ptr);
+ func = &rna_ManipulatorGroup_refresh_func; /*
RNA_struct_find_function(&wgroupr, "refresh"); */
+
+ RNA_parameter_list_create(&list, &wgroup_ptr, func);
+ RNA_parameter_set_lookup(&list, "context", &C);
+ wgroup->type->ext.call((bContext *)C, &wgroup_ptr, func, &list);
+
+ RNA_parameter_list_free(&list);
+}
+
+static void rna_manipulatorgroup_draw_prepare_cb(const bContext *C,
wmManipulatorGroup *wgroup)
+{
+ extern FunctionRNA rna_ManipulatorGroup_draw_prepare_func;
+
+ PointerRNA wgroup_ptr;
+ ParameterList list;
+ FunctionRNA *func;
+
+ RNA_pointer_create(NULL, wgroup->type->ext.srna, wgroup, &wgroup_ptr);
+ func = &rna_ManipulatorGroup_draw_prepare_func; /*
RNA_struct_find_function(&wgroupr, "draw_prepare"); */
+
+ RNA_parameter_list_create(&list, &wgroup_ptr, func);
+ RNA_parameter_set_lookup(&list, "context", &C);
+ wgroup->type->ext.call((bContext *)C, &wgroup_ptr, func, &list);
+
+ RNA_parameter_list_free(&list);
+}
+
void BPY_RNA_manipulatorgroup_wrapper(wmManipulatorGroupType *wgt, void
*userdata);
static StructRNA *rna_ManipulatorGroup_register(
@@ -522,7 +558,7 @@ static StructRNA *rna_ManipulatorGroup_register(
PointerRNA wgptr;
/* Two sets of functions. */
- int have_function[3];
+ int have_function[5];
/* setup dummy manipulatorgroup & manipulatorgroup type to store static
properties in */
dummywg.type = &dummywgt;
@@ -576,8 +612,10 @@ static StructRNA *rna_ManipulatorGroup_register(
/* We used to register widget group types like this, now we do it
similar to
* operator types. Thus we should be able to do the same as operator
types now. */
dummywgt.poll = (have_function[0]) ? rna_manipulatorgroup_poll_cb :
NULL;
- dummywgt.setup_keymap = (have_function[1]) ?
rna_manipulatorgroup_setup_keymap_cb : NULL;
- dummywgt.setup = (have_function[2]) ? rna_manipulatorgroup_setup_cb :
NULL;
+ dummywgt.setup_keymap = (have_function[1]) ?
rna_manipulatorgroup_setup_keymap_cb : NULL;
+ dummywgt.setup = (have_function[2]) ?
rna_manipulatorgroup_setup_cb : NULL;
+ dummywgt.refresh = (have_function[3]) ?
rna_manipulatorgroup_refresh_cb : NULL;
+ dummywgt.draw_prepare = (have_function[4]) ?
rna_manipulatorgroup_draw_prepare_cb : NULL;
RNA_def_struct_duplicate_pointers(dummywgt.ext.srna);
dummywgt.idname = dummywgt.ext.srna->identifier;
@@ -911,13 +949,26 @@ static void rna_def_manipulatorgroup(BlenderRNA *brna)
RNA_def_property_flag(parm, PROP_NEVER_NULL);
RNA_def_function_return(func, parm);
- /* draw */
+ /* setup */
func = RNA_def_function(srna, "setup", NULL);
RNA_def_function_ui_description(func, "Create manipulators function for
the manipulator group");
RNA_def_function_flag(func, FUNC_REGISTER);
parm = RNA_def_pointer(func, "context", "Context", "", "");
RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
+ /* refresh */
+ func = RNA_def_function(srna, "refresh", NULL);
+ RNA_def_function_ui_description(func, "Refresh data (called on common
state changes such as selection)");
+ RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
+ parm = RNA_def_pointer(func, "context", "Context", "", "");
+ RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
+
+ func = RNA_def_function(srna, "draw_prepare", NULL);
+ RNA_def_function_ui_description(func, "Run before each redraw");
+ RNA_def_function_flag(func, FUNC_REGISTER_OPTIONAL);
+ parm = RNA_def_pointer(func, "context", "Context", "", "");
+ RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED);
+
/* --------------------------------------------------------------------
*/
/* Instance Variables */
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs