Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-04-18 18:40:01 +0400
committerCampbell Barton <ideasman42@gmail.com>2007-04-18 18:40:01 +0400
commit3e1a5ce7a2596ebc135455f9934d128223cc089a (patch)
treee9d12a0e39c1de8e33e2b32965a91d8bd90a18c1 /source/blender/python/api2_2x/bpy_config.c
parenta59f7c08cef1fd4f0ce60463fe93eb53a8dadffa (diff)
PyAPI.
moved bpy into bpy.data and bpy will be eventually replace the root level 'Blender' module. currently we have bpy.library bpy.config and bpy.data
Diffstat (limited to 'source/blender/python/api2_2x/bpy_config.c')
-rw-r--r--source/blender/python/api2_2x/bpy_config.c429
1 files changed, 429 insertions, 0 deletions
diff --git a/source/blender/python/api2_2x/bpy_config.c b/source/blender/python/api2_2x/bpy_config.c
new file mode 100644
index 00000000000..bdb5e3c3b47
--- /dev/null
+++ b/source/blender/python/api2_2x/bpy_config.c
@@ -0,0 +1,429 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version. The Blender
+ * Foundation also sells licenses for use in proprietary software under
+ * the Blender License. See http://www.blender.org/BL/ for information
+ * about this.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * This is a new part of Blender.
+ *
+ * Contributor(s): Campbell Barton
+ *
+ * ***** END GPL/BL DUAL LICENSE BLOCK *****
+*/
+
+/* python types */
+#include "DNA_userdef_types.h"
+#include "../api2_2x/gen_utils.h"
+#include "bpy_config.h"
+
+enum conf_consts {
+ /*string*/
+ EXPP_CONF_ATTR_PATH_YF_EXPORT = 0,
+ EXPP_CONF_ATTR_PATH_FONT,
+ EXPP_CONF_ATTR_PATH_RENDER,
+ EXPP_CONF_ATTR_PATH_TEXTURE,
+ EXPP_CONF_ATTR_PATH_PYTHON,
+ EXPP_CONF_ATTR_PATH_TEX_PLUGIN,
+ EXPP_CONF_ATTR_PATH_SOUND,
+ EXPP_CONF_ATTR_PATH_SEQ_PLUGIN,
+ EXPP_CONF_ATTR_PATH_TEMP,
+
+ /*int*/
+ EXPP_CONF_ATTR_UNDOSTEPS,
+ EXPP_CONF_ATTR_TEX_TIMEOUT,
+ EXPP_CONF_ATTR_TEX_COLLECT_RATE,
+ EXPP_CONF_ATTR_MEM_CACHE_LIMIT,
+ EXPP_CONF_ATTR_FONT_SIZE
+};
+
+PyObject *Config_CreatePyObject( )
+{
+ BPy_Config *conf = PyObject_NEW( BPy_Config, &Config_Type);
+ return (PyObject *)conf;
+}
+
+/*
+ * repr function
+ * callback functions building meaninful string to representations
+ */
+static PyObject *Config_repr( BPy_Config * self )
+{
+ return PyString_FromFormat( "[Blender Configuration Data]");
+}
+
+
+/*-----------------------Config module Init())-----------------------------*/
+/* see Main.c */
+/*
+static struct PyMethodDef BPy_Config_methods[] = {
+ {"new", (PyCFunction)MainSeq_new, METH_VARARGS,
+ "(name) - Create a new object in this scene from the obdata given and return a new object"},
+ {"load", (PyCFunction)MainSeq_load, METH_VARARGS,
+ "(filename) - loads the given filename for image, font and sound types"},
+ {"unlink", (PyCFunction)MainSeq_unlink, METH_VARARGS,
+ "unlinks the object from the scene"},
+ {NULL, NULL, 0, NULL}
+};*/
+
+/*
+ * get integer attributes
+ */
+static PyObject *getStrAttr( BPy_Config *self, void *type )
+{
+ PyObject *attr = NULL;
+ char *param = NULL;
+
+
+ switch( (int)type ) {
+ case EXPP_CONF_ATTR_PATH_YF_EXPORT:
+ param = U.yfexportdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_FONT:
+ param = U.fontdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_RENDER:
+ param = U.renderdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_TEXTURE:
+ param = U.textudir;
+ break;
+ case EXPP_CONF_ATTR_PATH_PYTHON:
+ param = U.pythondir;
+ break;
+ case EXPP_CONF_ATTR_PATH_TEX_PLUGIN:
+ param = U.plugtexdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_SOUND:
+ param = U.sounddir;
+ break;
+ case EXPP_CONF_ATTR_PATH_SEQ_PLUGIN:
+ param = U.plugseqdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_TEMP:
+ param = U.tempdir;
+ break;
+
+ default:
+ return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+ "undefined type in getStrAttr" );
+ }
+
+ attr = PyString_FromString( param );
+
+ if( attr )
+ return attr;
+
+ return EXPP_ReturnPyObjError( PyExc_MemoryError,
+ "PyString_FromString() failed!" );
+}
+
+/*
+ * set integer attributes which require clamping
+ */
+
+static int setStrAttr( BPy_Config *self, PyObject *value, void *type )
+{
+ char *param;
+ int len=160;
+ char *str = PyString_AsString(value);
+
+ if (!str)
+ return EXPP_ReturnIntError( PyExc_TypeError,
+ "error, must assign a python string for setStrAttr");
+
+ switch( (int)type ) {
+ case EXPP_CONF_ATTR_PATH_YF_EXPORT:
+ param = U.yfexportdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_FONT:
+ param = U.fontdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_RENDER:
+ param = U.renderdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_TEXTURE:
+ param = U.textudir;
+ break;
+ case EXPP_CONF_ATTR_PATH_PYTHON:
+ param = U.pythondir;
+ break;
+ case EXPP_CONF_ATTR_PATH_TEX_PLUGIN:
+ param = U.plugtexdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_SOUND:
+ param = U.sounddir;
+ break;
+ case EXPP_CONF_ATTR_PATH_SEQ_PLUGIN:
+ param = U.plugseqdir;
+ break;
+ case EXPP_CONF_ATTR_PATH_TEMP:
+ param = U.tempdir;
+ break;
+
+ default:
+ return EXPP_ReturnIntError( PyExc_RuntimeError,
+ "undefined type in setStrAttr");
+ }
+
+ strncpy(param, str, len);
+ return 0;
+}
+
+
+/*
+ * get integer attributes
+ */
+
+static PyObject *getIntAttr( BPy_Config *self, void *type )
+{
+ PyObject *attr = NULL;
+ int param;
+
+ switch( (int)type ) {
+ case EXPP_CONF_ATTR_UNDOSTEPS:
+ param = (int)U.undosteps;
+ break;
+ case EXPP_CONF_ATTR_TEX_TIMEOUT:
+ param = U.textimeout;
+ break;
+ case EXPP_CONF_ATTR_TEX_COLLECT_RATE:
+ param = U.texcollectrate;
+ break;
+ case EXPP_CONF_ATTR_MEM_CACHE_LIMIT:
+ param = U.memcachelimit;
+ break;
+ case EXPP_CONF_ATTR_FONT_SIZE:
+ param = U.fontsize;
+ break;
+
+ default:
+ return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+ "undefined type in getIntAttr" );
+ }
+
+ attr = PyInt_FromLong( param );
+
+ if( attr )
+ return attr;
+
+ return EXPP_ReturnPyObjError( PyExc_MemoryError,
+ "PyInt_FromLong() failed!" );
+}
+
+/*
+ * set integer attributes which require clamping
+ */
+
+static int setIntAttrClamp( BPy_Config *self, PyObject *value, void *type )
+{
+ void *param;
+ int min, max, size;
+
+ switch( (int)type ) {
+ case EXPP_CONF_ATTR_UNDOSTEPS:
+ min = 0;
+ max = 64;
+ size = 'h';
+ param = (void *)&U.undosteps;
+ break;
+ case EXPP_CONF_ATTR_TEX_TIMEOUT:
+ min = 1;
+ max = 3600;
+ size = 'i';
+ param = (void *)&U.textimeout;
+ break;
+ case EXPP_CONF_ATTR_TEX_COLLECT_RATE:
+ min = 1;
+ max = 3600;
+ size = 'i';
+ param = (void *)&U.texcollectrate;
+ break;
+ case EXPP_CONF_ATTR_MEM_CACHE_LIMIT:
+ min = 1;
+ max = 1024;
+ size = 'i';
+ param = (void *)&U.memcachelimit;
+ break;
+ case EXPP_CONF_ATTR_FONT_SIZE:
+ min = 8;
+ max = 16;
+ size = 'i';
+ param = (void *)&U.fontsize;
+ break;
+
+ default:
+ return EXPP_ReturnIntError( PyExc_RuntimeError,
+ "undefined type in setIntAttrClamp");
+ }
+ return EXPP_setIValueClamped( value, param, min, max, size );
+}
+
+static PyGetSetDef Config_getseters[] = {
+
+ /* ints & shorts */
+ {"undoSteps",
+ (getter)getIntAttr, (setter)setIntAttrClamp,
+ "undo steps",
+ (void *)EXPP_CONF_ATTR_UNDOSTEPS},
+ {"textureTimeout",
+ (getter)getIntAttr, (setter)setIntAttrClamp,
+ "undo steps",
+ (void *)EXPP_CONF_ATTR_TEX_TIMEOUT},
+ {"textureCollectRate",
+ (getter)getIntAttr, (setter)setIntAttrClamp,
+ "undo steps",
+ (void *)EXPP_CONF_ATTR_TEX_COLLECT_RATE},
+ {"sequenceMemCacheLimit",
+ (getter)getIntAttr, (setter)setIntAttrClamp,
+ "undo steps",
+ (void *)EXPP_CONF_ATTR_MEM_CACHE_LIMIT},
+ {"fontSize",
+ (getter)getIntAttr, (setter)setIntAttrClamp,
+ "undo steps",
+ (void *)EXPP_CONF_ATTR_FONT_SIZE},
+
+ /* Paths */
+ {"yfExportDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "yafray export path",
+ (void *)EXPP_CONF_ATTR_PATH_YF_EXPORT},
+ {"fontDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "default font path",
+ (void *)EXPP_CONF_ATTR_PATH_FONT},
+ {"renderDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "default render path",
+ (void *)EXPP_CONF_ATTR_PATH_RENDER},
+ {"textureDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "default texture path",
+ (void *)EXPP_CONF_ATTR_PATH_TEXTURE},
+ {"userScriptsDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "user scripts path",
+ (void *)EXPP_CONF_ATTR_PATH_PYTHON},
+ {"texturePluginsDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "default texture plugins path",
+ (void *)EXPP_CONF_ATTR_PATH_TEX_PLUGIN},
+ {"soundDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "default sound path",
+ (void *)EXPP_CONF_ATTR_PATH_SOUND},
+ {"sequencePluginsDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "sequencer plugins path",
+ (void *)EXPP_CONF_ATTR_PATH_SEQ_PLUGIN},
+ {"tempDir",
+ (getter)getStrAttr, (setter)setStrAttr,
+ "temporary file path",
+ (void *)EXPP_CONF_ATTR_PATH_TEMP},
+
+ {NULL,NULL,NULL,NULL,NULL} /* Sentinel */
+};
+
+
+/*
+ * Python Config_Type structure definition
+ */
+PyTypeObject Config_Type = {
+ PyObject_HEAD_INIT( NULL ) /* required py macro */
+ 0, /* ob_size */
+ /* For printing, in format "<module>.<name>" */
+ "Blender Config", /* char *tp_name; */
+ sizeof( BPy_Config ), /* int tp_basicsize; */
+ 0, /* tp_itemsize; For allocation */
+
+ /* Methods to implement standard operations */
+
+ NULL, /* destructor tp_dealloc; */
+ NULL, /* printfunc tp_print; */
+ NULL, /* getattrfunc tp_getattr; */
+ NULL, /* setattrfunc tp_setattr; */
+ NULL, /* cmpfunc tp_compare; */
+ (reprfunc)Config_repr, /* reprfunc tp_repr; */
+
+ /* Method suites for standard classes */
+
+ NULL, /* PyNumberMethods *tp_as_number; */
+ NULL, /* PySequenceMethods *tp_as_sequence; */
+ NULL, /* PyMappingMethods *tp_as_mapping; */
+
+ /* More standard operations (here for binary compatibility) */
+
+ NULL, /* hashfunc tp_hash; */
+ NULL, /* ternaryfunc tp_call; */
+ NULL, /* reprfunc tp_str; */
+ NULL, /* getattrofunc tp_getattro; */
+ NULL, /* setattrofunc tp_setattro; */
+
+ /* Functions to access object as input/output buffer */
+ NULL, /* PyBufferProcs *tp_as_buffer; */
+
+ /*** Flags to define presence of optional/expanded features ***/
+ Py_TPFLAGS_DEFAULT, /* long tp_flags; */
+
+ NULL, /* char *tp_doc; Documentation string */
+ /*** Assigned meaning in release 2.0 ***/
+ /* call function for all accessible objects */
+ NULL, /* traverseproc tp_traverse; */
+
+ /* delete references to contained objects */
+ NULL, /* inquiry tp_clear; */
+
+ /*** Assigned meaning in release 2.1 ***/
+ /*** rich comparisons ***/
+ NULL, /* richcmpfunc tp_richcompare; */
+
+ /*** weak reference enabler ***/
+ 0, /* long tp_weaklistoffset; */
+
+ /*** Added in release 2.2 ***/
+ /* Iterators */
+ NULL, /* getiterfunc tp_iter; */
+ NULL, /* iternextfunc tp_iternext; */
+
+ /*** Attribute descriptor and subclassing stuff ***/
+ NULL, /*BPy_Config_methods*/ /* struct PyMethodDef *tp_methods; */
+ NULL, /* struct PyMemberDef *tp_members; */
+ Config_getseters, /* struct PyGetSetDef *tp_getset; */
+ NULL, /* struct _typeobject *tp_base; */
+ NULL, /* PyObject *tp_dict; */
+ NULL, /* descrgetfunc tp_descr_get; */
+ NULL, /* descrsetfunc tp_descr_set; */
+ 0, /* long tp_dictoffset; */
+ NULL, /* initproc tp_init; */
+ NULL, /* allocfunc tp_alloc; */
+ NULL, /* newfunc tp_new; */
+ /* Low-level free-memory routine */
+ NULL, /* freefunc tp_free; */
+ /* For PyObject_IS_GC */
+ NULL, /* inquiry tp_is_gc; */
+ NULL, /* PyObject *tp_bases; */
+ /* method resolution order */
+ NULL, /* PyObject *tp_mro; */
+ NULL, /* PyObject *tp_cache; */
+ NULL, /* PyObject *tp_subclasses; */
+ NULL, /* PyObject *tp_weaklist; */
+ NULL
+};