[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