=ID Property Script update and api bugfix=

Turned out somehow I managed to miss adding the proper
type refs in Blender.Types for IDGroupType and IDArrayType,
which made the script not work.  So, I've got it all fixed now.
Or at least hopefully :)
This commit is contained in:
Joseph Eagar 2007-01-15 07:54:08 +00:00
parent 1645e8d287
commit 7a19fe19f6
5 changed files with 21 additions and 14 deletions

@ -20,6 +20,7 @@ etc.
from Blender import *
from Blender.BGL import *
from Blender.Types import IDGroupType, IDArrayType
import Blender
def IsInRectWH(mx, my, x, y, wid, hgt):

@ -932,7 +932,7 @@ extern PyTypeObject IDGroup_Iter_Type;
void M_Blender_Init(void)
{
PyObject *module;
PyObject *dict, *smode, *SpaceHandlers, *UnpackModes, *PropertyTypes;
PyObject *dict, *smode, *SpaceHandlers, *UnpackModes;
/* G.scene should only aver be NULL if blender is executed in
background mode, not loading a blend file and executing a python script eg.
@ -965,18 +965,6 @@ void M_Blender_Init(void)
PyModule_AddObject(module, "SpaceHandlers", SpaceHandlers);
}
PropertyTypes = PyConstant_New();
if (PropertyTypes) {
BPy_constant *d = (BPy_constant*)PropertyTypes;
PyConstant_Insert(d,"STRING",PyInt_FromLong(IDP_STRING));
PyConstant_Insert(d,"INT",PyInt_FromLong(IDP_INT));
PyConstant_Insert(d,"FLOAT",PyInt_FromLong(IDP_FLOAT));
PyConstant_Insert(d,"ARRAY",PyInt_FromLong(IDP_ARRAY));
PyConstant_Insert(d,"GROUP",PyInt_FromLong(IDP_GROUP));
PyModule_AddObject(module, "PropertyTypes", PropertyTypes);
}
if (G.background)
smode = PyString_FromString("background");
else

@ -36,6 +36,7 @@
is only need here now
*/
extern PyTypeObject IDGroup_Type, IDArray_Type;
extern PyTypeObject Action_Type, Armature_Type;
extern PyTypeObject Pose_Type;
extern PyTypeObject BezTriple_Type, Bone_Type, Button_Type;
@ -249,6 +250,9 @@ PyObject *Types_Init( void )
( PyObject * ) &ThemeSpace_Type);
PyDict_SetItemString( dict, "ThemeUI_Type",
( PyObject * ) &ThemeUI_Type);
PyDict_SetItemString( dict, "IDGroupType",
( PyObject * ) &IDGroup_Type);
PyDict_SetItemString( dict, "IDArrayType",
( PyObject * ) &IDArray_Type);
return submodule;
}

@ -24,6 +24,18 @@ class IDGroup:
del group['property']
To get the type of a property, use the type() operator, for example::
if type(group['bleh']) == str: pass
To tell if the property is a group or array type, import the Blender.Types module and test
against IDGroupType and IDArrayType, like so::
from Blender.Types import IDGroupType, IDArrayType.
if type(group['bleghr']) == IDGroupType:
(do something)
@ivar name: The name of the property
@type name: string
"""

@ -65,4 +65,6 @@ objects.
@var rgbTupleType: Blender rgbTuple. A (red, green, blue) triplet.
@var TextureType: Blender Texture.
@var MTexType: Blender MTex. Links materials to a texture.
@var IDGroupType: Blender IDProperty Group type.
@var IDArrayType: Blender IDProperty Array type.
"""