| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | /* 
 | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * $Id$ | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * ***** BEGIN GPL LICENSE BLOCK ***** | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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 | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * of the License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  * 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 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2008-04-16 22:40:48 +00:00
										 |  |  |  * ***** END GPL LICENSE BLOCK ***** | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* python types */ | 
					
						
							|  |  |  | #include "DNA_userdef_types.h"
 | 
					
						
							| 
									
										
										
										
											2007-04-18 14:40:01 +00:00
										 |  |  | #include "../api2_2x/gen_utils.h"
 | 
					
						
							|  |  |  | #include "bpy_config.h"
 | 
					
						
							| 
									
										
										
										
											2008-04-17 21:14:55 +00:00
										 |  |  | #include "BKE_utildefines.h"
 | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	char *param = NULL; | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2008-04-17 21:14:55 +00:00
										 |  |  | 	switch( GET_INT_FROM_POINTER(type) ) { | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	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" ); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-06-29 08:59:26 +00:00
										 |  |  | 	return PyString_FromString( param ); | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * 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"); | 
					
						
							|  |  |  | 	 | 
					
						
							| 
									
										
										
										
											2008-04-17 21:14:55 +00:00
										 |  |  | 	switch( GET_INT_FROM_POINTER(type) ) { | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	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 ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int param; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-17 21:14:55 +00:00
										 |  |  | 	switch( GET_INT_FROM_POINTER(type) ) { | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	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" ); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-06-29 08:59:26 +00:00
										 |  |  | 	return PyInt_FromLong( param ); | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * set integer attributes which require clamping | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static int setIntAttrClamp( BPy_Config *self, PyObject *value, void *type ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	void *param; | 
					
						
							|  |  |  | 	int min, max, size; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-17 21:14:55 +00:00
										 |  |  | 	switch( GET_INT_FROM_POINTER(type) ) { | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	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, | 
					
						
							| 
									
										
										
										
											2007-05-05 06:09:03 +00:00
										 |  |  | 	 "time for textures to stay in openGL memory", | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	 (void *)EXPP_CONF_ATTR_TEX_TIMEOUT}, | 
					
						
							|  |  |  | 	{"textureCollectRate", | 
					
						
							|  |  |  | 	 (getter)getIntAttr, (setter)setIntAttrClamp, | 
					
						
							| 
									
										
										
										
											2007-05-05 06:09:03 +00:00
										 |  |  | 	 "intervel for textures to be tagged as used", | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	 (void *)EXPP_CONF_ATTR_TEX_COLLECT_RATE}, | 
					
						
							|  |  |  | 	{"sequenceMemCacheLimit", | 
					
						
							|  |  |  | 	 (getter)getIntAttr, (setter)setIntAttrClamp, | 
					
						
							| 
									
										
										
										
											2007-05-05 06:09:03 +00:00
										 |  |  | 	 "maximum memory for the sequencer to use as cache", | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	 (void *)EXPP_CONF_ATTR_MEM_CACHE_LIMIT}, | 
					
						
							|  |  |  | 	{"fontSize", | 
					
						
							|  |  |  | 	 (getter)getIntAttr, (setter)setIntAttrClamp, | 
					
						
							| 
									
										
										
										
											2007-05-05 06:09:03 +00:00
										 |  |  | 	 "user interface font size", | 
					
						
							| 
									
										
										
										
											2007-03-18 04:46:54 +00:00
										 |  |  | 	 (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 | 
					
						
							|  |  |  | }; |