[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25291] trunk/blender/source/blender: operator report function so python operators can report errors

Campbell Barton ideasman42 at gmail.com
Thu Dec 10 17:52:44 CET 2009


Revision: 25291
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25291
Author:   campbellbarton
Date:     2009-12-10 17:52:44 +0100 (Thu, 10 Dec 2009)

Log Message:
-----------
operator report function so python operators can report errors
TODO - reports are currently shown upside down.

Modified Paths:
--------------
    trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
    trunk/blender/source/blender/makesrna/RNA_enum_types.h
    trunk/blender/source/blender/makesrna/intern/rna_wm.c
    trunk/blender/source/blender/makesrna/intern/rna_wm_api.c

Modified: trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-12-10 14:47:07 UTC (rev 25290)
+++ trunk/blender/source/blender/makesdna/DNA_windowmanager_types.h	2009-12-10 16:52:44 UTC (rev 25291)
@@ -60,7 +60,7 @@
 #define OP_MAX_TYPENAME	64
 #define KMAP_MAX_NAME	64
 
-
+/* keep in sync with 'wm_report_items' in wm_rna.c */
 typedef enum ReportType {
 	RPT_DEBUG					= 1<<0,
 	RPT_INFO					= 1<<1,

Modified: trunk/blender/source/blender/makesrna/RNA_enum_types.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_enum_types.h	2009-12-10 14:47:07 UTC (rev 25290)
+++ trunk/blender/source/blender/makesrna/RNA_enum_types.h	2009-12-10 16:52:44 UTC (rev 25291)
@@ -72,6 +72,8 @@
 
 extern EnumPropertyItem keymap_propvalue_items[];
 
+extern EnumPropertyItem wm_report_items[];
+
 struct bContext;
 struct PointerRNA;
 EnumPropertyItem *rna_TransformOrientation_itemf(struct bContext *C, struct PointerRNA *ptr, int *free);

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c	2009-12-10 14:47:07 UTC (rev 25290)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c	2009-12-10 16:52:44 UTC (rev 25291)
@@ -251,6 +251,18 @@
 		{OPERATOR_PASS_THROUGH, "PASS_THROUGH", 0, "Pass Through", ""}, // used as a flag
 		{0, NULL, 0, NULL, NULL}};
 
+/* flag/enum */
+EnumPropertyItem wm_report_items[] = {
+		{RPT_DEBUG, "DEBUG", 0, "Debug", ""},
+		{RPT_INFO, "INFO", 0, "Info", ""},
+		{RPT_OPERATOR, "OPERATOR", 0, "Operator", ""},
+		{RPT_WARNING, "WARNING", 0, "Warning", ""},
+		{RPT_ERROR, "ERROR", 0, "Error", ""},
+		{RPT_ERROR_INVALID_INPUT, "ERROR_INVALID_INPUT", 0, "Invalid Input", ""},\
+		{RPT_ERROR_INVALID_CONTEXT, "ERROR_INVALID_CONTEXT", 0, "Invalid Context", ""},
+		{RPT_ERROR_OUT_OF_MEMORY, "ERROR_OUT_OF_MEMORY", 0, "Out of Memory", ""},
+		{0, NULL, 0, NULL, NULL}};
+
 #define KMI_TYPE_KEYBOARD	0
 #define KMI_TYPE_MOUSE		1
 #define KMI_TYPE_TWEAK		2
@@ -601,10 +613,13 @@
 	RNA_def_property_ui_text(prop, "Properties", "");
 	RNA_def_property_pointer_funcs(prop, "rna_Operator_properties_get", NULL, NULL);
 
+	RNA_api_operator(srna);
+
 	srna= RNA_def_struct(brna, "OperatorProperties", NULL);
 	RNA_def_struct_ui_text(srna, "Operator Properties", "Input properties of an Operator.");
 	RNA_def_struct_refine_func(srna, "rna_OperatorProperties_refine");
 	RNA_def_struct_idproperties_func(srna, "rna_OperatorProperties_idproperties");
+
 }
 
 static void rna_def_macro_operator(BlenderRNA *brna)

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm_api.c	2009-12-10 14:47:07 UTC (rev 25290)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm_api.c	2009-12-10 16:52:44 UTC (rev 25291)
@@ -134,6 +134,11 @@
 	return WM_keymap_add_item(km, idname, type, value, modifier, keymodifier);
 }
 
+static void rna_Operator_report(wmOperator *op, int type, char *msg)
+{
+	BKE_report(op->reports, type, msg);
+}
+
 #else
 
 void RNA_api_wm(StructRNA *srna)
@@ -177,6 +182,18 @@
 	parm= RNA_def_int(func, "height", 20, 0, INT_MAX, "", "Height of the popup.", 0, INT_MAX);
 }
 
+void RNA_api_operator(StructRNA *srna)
+{
+	FunctionRNA *func;
+	PropertyRNA *parm;
+
+	func= RNA_def_function(srna, "report", "rna_Operator_report");
+	parm= RNA_def_enum(func, "type", wm_report_items, 0, "Type", "");
+	RNA_def_property_flag(parm, PROP_REQUIRED|PROP_ENUM_FLAG);
+	parm= RNA_def_string(func, "message", "", 0, "Report Message", "");
+	RNA_def_property_flag(parm, PROP_REQUIRED);
+}
+
 void RNA_api_keyconfig(StructRNA *srna)
 {
 	FunctionRNA *func;





More information about the Bf-blender-cvs mailing list