Commit: b756e869ee95584a89d6914057f3c5a0e4315d48
Author: Campbell Barton
Date:   Fri Apr 27 10:03:57 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBb756e869ee95584a89d6914057f3c5a0e4315d48

WM: Add function to access last operator props

Needed for tool-settings to control options for a tool
which has not yet been executed.

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

M       source/blender/makesrna/intern/rna_wm_api.c

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

diff --git a/source/blender/makesrna/intern/rna_wm_api.c 
b/source/blender/makesrna/intern/rna_wm_api.c
index c053f980ff3..a0f864d841d 100644
--- a/source/blender/makesrna/intern/rna_wm_api.c
+++ b/source/blender/makesrna/intern/rna_wm_api.c
@@ -384,6 +384,23 @@ static void rna_PieMenuEnd(bContext *C, PointerRNA *handle)
        UI_pie_menu_end(C, handle->data);
 }
 
+static PointerRNA rna_WindoManager_operator_properties_last(const char *idname)
+{
+       wmOperatorType *ot = WM_operatortype_find(idname, true);
+
+       if (ot != NULL) {
+               /* Could make optional. */
+               if (ot->last_properties == NULL) {
+                       IDPropertyTemplate val = {0};
+                       ot->last_properties = IDP_New(IDP_GROUP, &val, 
"wmOperatorProperties");
+               }
+               PointerRNA ptr;
+               RNA_pointer_create(NULL, ot->srna, ot->last_properties, &ptr);
+               return ptr;
+       }
+       return PointerRNA_NULL;
+}
+
 #else
 
 #define WM_GEN_INVOKE_EVENT (1 << 0)
@@ -594,6 +611,17 @@ void RNA_api_wm(StructRNA *srna)
        RNA_def_function_flag(func, FUNC_NO_SELF | FUNC_USE_CONTEXT);
        parm = RNA_def_pointer(func, "menu", "UIPieMenu", "", "");
        RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_RNAPTR);
+
+       /* access last operator options (optionally create). */
+       func = RNA_def_function(srna, "operator_properties_last", 
"rna_WindoManager_operator_properties_last");
+       RNA_def_function_flag(func, FUNC_NO_SELF);
+       parm = RNA_def_string(func, "operator", NULL, 0, "", "");
+       RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+       /* return */
+       parm = RNA_def_pointer(func, "result", "OperatorProperties", "", "");
+       RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_RNAPTR);
+       RNA_def_function_return(func, parm);
+
 }
 
 void RNA_api_operator(StructRNA *srna)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to