[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32433] trunk/blender/source/blender: python api:

Campbell Barton ideasman42 at gmail.com
Wed Oct 13 01:47:43 CEST 2010


Revision: 32433
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32433
Author:   campbellbarton
Date:     2010-10-13 01:47:43 +0200 (Wed, 13 Oct 2010)

Log Message:
-----------
python api:
- bpy.app.debug can now be set, removed bpy.data.debug (since this is not blendfile data)
- added bpy.app.tempdir, this is needed because the userpref temp dir isn't always set, $TEMP may be used instead and scripts need temp dir access.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_define.c
    trunk/blender/source/blender/makesrna/intern/rna_main.c
    trunk/blender/source/blender/python/intern/bpy_app.c
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_define.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_define.c	2010-10-12 22:20:10 UTC (rev 32432)
+++ trunk/blender/source/blender/makesrna/intern/rna_define.c	2010-10-12 23:47:43 UTC (rev 32433)
@@ -474,11 +474,12 @@
 	PropertyRNA *prop, *nextprop;
 	PropertyRNA *parm, *nextparm;
 
+	/*
 	if(srna->flag & STRUCT_RUNTIME) {
 		if(RNA_struct_py_type_get(srna)) {
 			fprintf(stderr, "RNA_struct_free '%s' freed while holding a python reference\n", srna->identifier);
 		}
-	}
+	} */
 
 	for(prop=srna->cont.properties.first; prop; prop=nextprop) {
 		nextprop= prop->next;

Modified: trunk/blender/source/blender/makesrna/intern/rna_main.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_main.c	2010-10-12 22:20:10 UTC (rev 32432)
+++ trunk/blender/source/blender/makesrna/intern/rna_main.c	2010-10-12 23:47:43 UTC (rev 32433)
@@ -36,20 +36,7 @@
 #include "BKE_global.h"
 
 /* all the list begin functions are added manually here, Main is not in SDNA */
-static int rna_Main_debug_get(PointerRNA *ptr)
-{
-	return G.f & G_DEBUG;
-}
 
-
-static void rna_Main_debug_set(PointerRNA *ptr, const int value)
-{
-	if (value)
-		G.f |= G_DEBUG;
-	else
-		G.f &= ~G_DEBUG;
-}
-
 static int rna_Main_is_dirty_get(PointerRNA *ptr)
 {
 	return !G.relbase_valid;
@@ -317,11 +304,6 @@
 	RNA_def_property_boolean_funcs(prop, "rna_Main_is_dirty_get", NULL);
 	RNA_def_property_ui_text(prop, "File is Saved", "Has the current session been saved to disk as a .blend file");
 
-	prop= RNA_def_property(srna, "debug", PROP_BOOLEAN, PROP_NONE);
-	RNA_def_property_boolean_funcs(prop, "rna_Main_debug_get", "rna_Main_debug_set");
-	RNA_def_property_ui_text(prop, "Debug", "Print debugging information in console");
-
-
 	for(i=0; lists[i].name; i++)
 	{
 		prop= RNA_def_property(srna, lists[i].identifier, PROP_COLLECTION, PROP_NONE);

Modified: trunk/blender/source/blender/python/intern/bpy_app.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_app.c	2010-10-12 22:20:10 UTC (rev 32432)
+++ trunk/blender/source/blender/python/intern/bpy_app.c	2010-10-12 23:47:43 UTC (rev 32433)
@@ -44,7 +44,6 @@
 	{"version", "The Blender version as a tuple of 3 numbers. eg. (2, 50, 11)"},
 	{"version_string", "The Blender version formatted as a string"},
 	{"binary_path", "The location of blenders executable, useful for utilities that spawn new instances"},
-	{"debug", "Boolean, set when blender is running in debug mode (started with -d)"},
 	{"background", "Boolean, True when blender is running without a user interface (started with -b)"},
 
 	/* buildinfo */
@@ -85,7 +84,6 @@
 	SetObjItem(Py_BuildValue("(iii)", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION));
 	SetObjItem(PyUnicode_FromFormat("%d.%02d (sub %d)", BLENDER_VERSION/100, BLENDER_VERSION%100, BLENDER_SUBVERSION));
 	SetStrItem(bprogname);
-	SetObjItem(PyBool_FromLong(G.f & G_DEBUG));
 	SetObjItem(PyBool_FromLong(G.background));
 
 	/* build info */
@@ -96,11 +94,11 @@
 	SetStrItem(build_platform);
 	SetStrItem(build_type);
 #else
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
-	SetStrItem("Unknown");
+		SetStrItem("Unknown");
+		SetStrItem("Unknown");
+		SetStrItem("Unknown");
+		SetStrItem("Unknown");
+		SetStrItem("Unknown");
 #endif
 
 #undef SetIntItem
@@ -114,10 +112,60 @@
 	return app_info;
 }
 
+/* a few getsets because it makes sense for them to be in bpy.app even though
+ * they are not static */
+static PyObject *bpy_app_debug_get(PyObject *self, void *closure)
+{
+	(void)(self);
+	(void)(closure);
+
+	return PyBool_FromLong(G.f & G_DEBUG);
+}
+
+static int bpy_app_debug_set(PyObject *self, PyObject *value, void *closure)
+{
+	int param= PyObject_IsTrue(value);
+
+	(void)(self);
+	(void)(closure);
+
+	if(param < 0) {
+		PyErr_SetString(PyExc_TypeError, "bpy.app.debug can only be True/False");
+		return -1;
+	}
+	
+	if(param)	G.f |=  G_DEBUG;
+	else		G.f &= ~G_DEBUG;
+	
+	return 0;
+}
+
+static PyObject *bpy_app_tempdir_get(PyObject *self, void *closure)
+{
+	extern char btempdir[];
+	(void)(self);
+	(void)(closure);
+
+	return PyUnicode_FromString(btempdir);
+}
+
+PyGetSetDef bpy_app_debug_getset= {"debug", bpy_app_debug_get, bpy_app_debug_set, "Boolean, set when blender is running in debug mode (started with -d)", NULL};
+PyGetSetDef bpy_app_tempdir_getset= {"tempdir", bpy_app_tempdir_get, NULL, "String, the temp directory used by blender (read-only)", NULL};
+
+static void py_struct_seq_getset_init(void)
+{
+	/* tricky dynamic members, not to py-spec! */
+	
+	PyDict_SetItemString(BlenderAppType.tp_dict, bpy_app_debug_getset.name, PyDescr_NewGetSet(&BlenderAppType, &bpy_app_debug_getset));
+	PyDict_SetItemString(BlenderAppType.tp_dict, bpy_app_tempdir_getset.name, PyDescr_NewGetSet(&BlenderAppType, &bpy_app_tempdir_getset));
+}
+/* end dynamic bpy.app */
+
+
 PyObject *BPY_app_struct(void)
 {
 	PyObject *ret;
-
+	
 	PyStructSequence_InitType(&BlenderAppType, &app_info_desc);
 
 	ret= make_app_info();
@@ -125,6 +173,10 @@
 	/* prevent user from creating new instances */
 	BlenderAppType.tp_init = NULL;
 	BlenderAppType.tp_new = NULL;
-	
+
+	/* kindof a hack ontop of PyStructSequence */
+	py_struct_seq_getset_init();
+
 	return ret;
 }
+

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2010-10-12 22:20:10 UTC (rev 32432)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2010-10-12 23:47:43 UTC (rev 32433)
@@ -964,7 +964,7 @@
 			else
 				param = PyLong_AsLong( value );
 			
-			if( param < 0 || param > 1) {
+			if(param < 0) {
 				PyErr_Format(PyExc_TypeError, "%.200s %.200s.%.200s expected True/False or 0/1", error_prefix, RNA_struct_identifier(ptr->type), RNA_property_identifier(prop));
 				return -1;
 			} else {





More information about the Bf-blender-cvs mailing list