diff options
author | Campbell Barton <ideasman42@gmail.com> | 2007-02-25 10:36:50 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2007-02-25 10:36:50 +0300 |
commit | 436e1697fdf07f5a17bcfbdde8b18e89e44e9cf1 (patch) | |
tree | 6e7695edfd05e95a01d4772f24afb84303a8ee0e /source | |
parent | e64b887fad611917916b2ce30bbcf2aa55593ea5 (diff) |
made attributes (name, property, users, fakeUser, lib) into functions all python types can use.
removed a lot of code duplication when moving to this.
Also removed unused functions GetMaterialByName(), same for Mesh, Object, World etc.
Diffstat (limited to 'source')
24 files changed, 209 insertions, 1423 deletions
diff --git a/source/blender/python/api2_2x/Armature.c b/source/blender/python/api2_2x/Armature.c index f91c31b25db..6ce4f712381 100644 --- a/source/blender/python/api2_2x/Armature.c +++ b/source/blender/python/api2_2x/Armature.c @@ -610,28 +610,6 @@ AttributeError: "expected a list of integers" ); } -//------------------------Armature.users (getter) -static PyObject *Armature_getUsers( BPy_Armature * self ) -{ - return PyInt_FromLong( self->armature->id.us ); -} - - -//------------------------Armature.fakeUser (getter) -static PyObject *Armature_getFakeUser( BPy_Armature * self ) -{ - if (self->armature->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} -//------------------------Armature.fakeUser (setter) -static int Armature_setFakeUser( BPy_Armature * self, PyObject * value ) -{ - return SetIdFakeUser(&self->armature->id, value); -} - - //------------------------Armature.mirrorEdit (getter) static PyObject *Armature_getMirrorEdit(BPy_Armature *self, void *closure) { @@ -935,38 +913,6 @@ AttributeError: return EXPP_intError(PyExc_AttributeError, "%s%s", sArmatureBadArgs, "Expects True or False"); } -//------------------------Armature.name (getter) -//Gets the name of the armature -static PyObject *Armature_getName(BPy_Armature *self, void *closure) -{ - return PyString_FromString(self->armature->id.name +2); //*new* -} -//------------------------Armature.name (setter) -//Sets the name of the armature -static int Armature_setName(BPy_Armature *self, PyObject *value, void *closure) -{ - char *name; - - if(value){ - if(PyString_Check(value)){ - name = PyString_AsString(value); - rename_id(&self->armature->id, name); - return 0; - } - } - goto AttributeError; - -AttributeError: - return EXPP_intError(PyExc_AttributeError, "%s%s", - sArmatureBadArgs, "Expects string"); -} - -//------------------------Armature.name (getter) -//Gets the name of the armature -static PyObject *Armature_getLib(BPy_Armature *self, void *closure) -{ - return EXPP_GetIdLib((ID *)self->armature); -} //------------------------Armature.bones (getter) //Gets the name of the armature @@ -1004,10 +950,7 @@ static PyMethodDef BPy_Armature_methods[] = { //------------------------tp_getset //This contains methods for attributes that require checking static PyGetSetDef BPy_Armature_getset[] = { - {"name", (getter)Armature_getName, (setter)Armature_setName, - "The armature's name", NULL}, - {"lib", (getter)Armature_getLib, (setter)NULL, - "The armature's library or None", NULL}, + GENERIC_LIB_GETSETATTR, {"bones", (getter)Armature_getBoneDict, (setter)Armature_setBoneDict, "The armature's Bone dictionary", NULL}, {"vertexGroups", (getter)Armature_getVertexGroups, (setter)Armature_setVertexGroups, @@ -1034,10 +977,6 @@ static PyGetSetDef BPy_Armature_getset[] = { "Adds temporal IK chains while grabbing bones", NULL}, {"layers", (getter)Armature_getLayers, (setter)Armature_setLayers, "List of layers for the armature", NULL}, - {"users", (getter)Armature_getUsers, (setter)NULL, - "The number of object users", NULL}, - {"fakeUser", (getter)Armature_getFakeUser, (setter)Armature_setFakeUser, - "The fake user status of this object", NULL}, {NULL, NULL, NULL, NULL, NULL} }; //------------------------tp_new diff --git a/source/blender/python/api2_2x/Blender.c b/source/blender/python/api2_2x/Blender.c index 4544d47344d..3b2a6afce38 100644 --- a/source/blender/python/api2_2x/Blender.c +++ b/source/blender/python/api2_2x/Blender.c @@ -94,7 +94,7 @@ struct ID; /*keep me up here */ #include "Types.h" #include "Main.h" -//for the removefakeuser hack +/*for the removefakeuser hack*/ #include "NLA.h" /*This must come first*/ #include "BKE_action.h" @@ -850,7 +850,7 @@ static PyObject * Blender_UpdateMenus( PyObject * self ) static PyObject *Blender_RemoveFakeuser(PyObject *self, PyObject *args) { ID *id; - BPy_Action *py_thing; //lousy coder antont did not know how to accept any bpy thing with ID.. + BPy_Action *py_thing; /*lousy coder antont did not know how to accept any bpy thing with ID..*/ if( !PyArg_ParseTuple( args, "O!", &Action_Type, &py_thing ) ) return EXPP_ReturnPyObjError( PyExc_AttributeError, @@ -940,9 +940,9 @@ void M_Blender_Init(void) blender -P somescript.py -b The if below solves the segfaults that happen when python runs and G.scene is NULL */ - if(G.background && G.main->scene.first==0) { + if(G.background && G.main->scene.first==NULL) { Scene *sce= add_scene("1"); - //set_scene(sce); /* causes a crash */ + /*set_scene(sce);*/ /* causes a crash */ G.scene= sce; } @@ -951,7 +951,7 @@ void M_Blender_Init(void) types_InitAll(); /* set all our pytypes to &PyType_Type */ - // constants for packed files + /* constants for packed files*/ UnpackModes = Blender_UnpackModesDict( ); if( UnpackModes ) PyModule_AddObject( module, "UnpackModes", UnpackModes ); diff --git a/source/blender/python/api2_2x/Camera.c b/source/blender/python/api2_2x/Camera.c index 4ba55139463..d7fbe54d0da 100644 --- a/source/blender/python/api2_2x/Camera.c +++ b/source/blender/python/api2_2x/Camera.c @@ -110,7 +110,6 @@ struct PyMethodDef M_Camera_methods[] = { /* Python BPy_Camera methods declarations: */ /*****************************************************************************/ static PyObject *Camera_oldgetIpo( BPy_Camera * self ); -static PyObject *Camera_oldgetName( BPy_Camera * self ); static PyObject *Camera_oldgetType( BPy_Camera * self ); static PyObject *Camera_oldgetMode( BPy_Camera * self ); static PyObject *Camera_oldgetLens( BPy_Camera * self ); @@ -119,7 +118,6 @@ static PyObject *Camera_oldgetClipEnd( BPy_Camera * self ); static PyObject *Camera_oldgetDrawSize( BPy_Camera * self ); static PyObject *Camera_oldgetScale( BPy_Camera * self ); static PyObject *Camera_oldsetIpo( BPy_Camera * self, PyObject * args ); -static PyObject *Camera_oldsetName( BPy_Camera * self, PyObject * args ); static PyObject *Camera_oldsetType( BPy_Camera * self, PyObject * args ); static PyObject *Camera_oldsetMode( BPy_Camera * self, PyObject * args ); static PyObject *Camera_oldsetLens( BPy_Camera * self, PyObject * args ); @@ -134,8 +132,6 @@ static PyObject *Camera_clearScriptLinks( BPy_Camera * self, PyObject * args ); static PyObject *Camera_insertIpoKey( BPy_Camera * self, PyObject * args ); static PyObject *Camera_copy( BPy_Camera * self ); -Camera *GetCameraByName( char *name ); - /*****************************************************************************/ /* Python BPy_Camera methods table: */ @@ -144,7 +140,7 @@ static PyMethodDef BPy_Camera_methods[] = { /* name, method, flags, doc */ {"getIpo", ( PyCFunction ) Camera_oldgetIpo, METH_NOARGS, "() - Return Camera Data Ipo"}, - {"getName", ( PyCFunction ) Camera_oldgetName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return Camera Data name"}, {"getType", ( PyCFunction ) Camera_oldgetType, METH_NOARGS, "() - Return Camera type - 'persp':0, 'ortho':1"}, @@ -167,7 +163,7 @@ static PyMethodDef BPy_Camera_methods[] = { "() - Unlink Ipo from this Camera."}, {"insertIpoKey", ( PyCFunction ) Camera_insertIpoKey, METH_VARARGS, "( Camera IPO type ) - Inserts a key into IPO"}, - {"setName", ( PyCFunction ) Camera_oldsetName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(s) - Set Camera Data name"}, {"setType", ( PyCFunction ) Camera_oldsetType, METH_VARARGS, "(s) - Set Camera type, which can be 'persp' or 'ortho'"}, @@ -209,54 +205,6 @@ static int Camera_compare( BPy_Camera * a, BPy_Camera * b ); //static PyObject *Camera_getAttr( BPy_Camera * self, char *name ); static PyObject *Camera_repr( BPy_Camera * self ); - -//~ /*****************************************************************************/ -//~ /* Python Camera_Type structure definition: */ -//~ /*****************************************************************************/ -//~ PyTypeObject Camera_Type = { - //~ PyObject_HEAD_INIT( NULL ) /* required macro */ - //~ NULL, /* ob_size */ - //~ "Blender Camera", /* tp_name */ - //~ sizeof( BPy_Camera ), /* tp_basicsize */ - //~ NULL, /* tp_itemsize */ - //~ /* methods */ - //~ ( destructor ) Camera_dealloc, /* tp_dealloc */ - //~ NULL, /* tp_print */ - //~ NULL, /* tp_getattr */ - //~ NULL, /* tp_setattr */ - //~ ( cmpfunc ) Camera_compare, /* tp_compare */ - //~ ( reprfunc ) Camera_repr, /* tp_repr */ - //~ NULL, /* tp_as_number */ - //~ NULL, /* tp_as_sequence */ - //~ NULL, /* tp_as_mapping */ - //~ NULL, /* tp_as_hash */ - //~ 0, 0, 0, 0, 0, 0, - //~ 0, /* tp_doc */ - //~ 0, 0, 0, 0, 0, 0, - //~ BPy_Camera_methods, /* tp_methods */ - //~ 0, /* tp_members */ - //~ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -//~ }; - - - - - - - - - - - - - - - - - - - - static PyObject *M_Camera_New( PyObject * self, PyObject * args, PyObject * kwords ) { @@ -392,25 +340,6 @@ PyObject *Camera_Init( void ) return submodule; } - - - - - - - - - - - - - - - - - - - /* Three Python Camera_Type helper functions needed by the Object module: */ PyObject *Camera_CreatePyObject( Camera * cam ) @@ -424,7 +353,6 @@ PyObject *Camera_CreatePyObject( Camera * cam ) "couldn't create BPy_Camera PyObject" ); pycam->camera = cam; - return ( PyObject * ) pycam; } @@ -439,30 +367,6 @@ Camera *Camera_FromPyObject( PyObject * pyobj ) } /*****************************************************************************/ -/* Description: Returns the object with the name specified by the argument */ -/* name. Note that the calling function has to remove the first */ -/* two characters of the object name. These two characters */ -/* specify the type of the object (OB, ME, WO, ...) */ -/* The function will return NULL when no object with the given */ -/* name is found. */ -/*****************************************************************************/ -Camera *GetCameraByName( char *name ) -{ - Camera *cam_iter; - - cam_iter = G.main->camera.first; - while( cam_iter ) { - if( StringEqual( name, GetIdName( &( cam_iter->id ) ) ) ) { - return ( cam_iter ); - } - cam_iter = cam_iter->id.next; - } - - /* There is no camera with the given name */ - return ( NULL ); -} - -/*****************************************************************************/ /* Python BPy_Camera methods: */ /*****************************************************************************/ @@ -476,19 +380,6 @@ static PyObject *Camera_oldgetIpo( BPy_Camera * self ) return Ipo_CreatePyObject( ipo ); } - -static PyObject *Camera_oldgetName( BPy_Camera * self ) -{ - - PyObject *attr = PyString_FromString( self->camera->id.name + 2 ); - - if( attr ) - return attr; - - return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Camera.name attribute" ); -} - static PyObject *Camera_oldgetType( BPy_Camera * self ) { PyObject *attr = PyInt_FromLong( self->camera->type ); @@ -619,19 +510,6 @@ static PyObject *Camera_oldclearIpo( BPy_Camera * self ) return EXPP_incr_ret_False(); /* no ipo found */ } -static PyObject *Camera_oldsetName( BPy_Camera * self, PyObject * args ) -{ - char *name; - - if( !PyArg_ParseTuple( args, "s", &name ) ) - return EXPP_ReturnPyObjError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->camera->id, name ); - - Py_RETURN_NONE; -} - static PyObject *Camera_oldsetType( BPy_Camera * self, PyObject * args ) { char *type; @@ -830,48 +708,6 @@ static void Camera_dealloc( BPy_Camera * self ) PyObject_DEL( self ); } -static PyObject *Camera_getName( BPy_Camera * self ) -{ - return PyString_FromString( self->camera->id.name + 2 ); -} - -static int Camera_setName( BPy_Camera * self, PyObject * value ) -{ - char *name = NULL; - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->camera->id, name); - return 0; -} - -static PyObject *Camera_getLib( BPy_Camera * self ) -{ - return EXPP_GetIdLib((ID *)self->camera); -} - -static PyObject *Camera_getUsers( BPy_Camera * self ) -{ - return PyInt_FromLong( self->camera->id.us ); -} - - -static PyObject *Camera_getFakeUser( BPy_Camera * self ) -{ - if (self->camera->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Camera_setFakeUser( BPy_Camera * self, PyObject * value ) -{ - return SetIdFakeUser(&self->camera->id, value); -} - static PyObject *Camera_getType( BPy_Camera * self ) { @@ -1099,8 +935,6 @@ static PyObject *getFlagAttr( BPy_Camera *self, void *type ) Py_RETURN_FALSE; } - - /* * set floating point attributes which require clamping */ @@ -1119,22 +953,7 @@ static int setFlagAttr( BPy_Camera *self, PyObject *value, void *type ) /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Camera_getseters[] = { - {"name", - (getter)Camera_getName, (setter)Camera_setName, - "Camera name", - NULL}, - {"lib", - (getter)Camera_getLib, (setter)NULL, - "Camera libname", - NULL}, - {"users", - (getter)Camera_getUsers, (setter)NULL, - "Number of camera users", - NULL}, - {"fakeUser", - (getter)Camera_getFakeUser, (setter)Camera_setFakeUser, - "Cameras fake user state", - NULL}, + GENERIC_LIB_GETSETATTR, {"type", (getter)Camera_getType, (setter)Camera_setType, "camera type \"persp\" or \"ortho\"", diff --git a/source/blender/python/api2_2x/Font.c b/source/blender/python/api2_2x/Font.c index 660b1225eb7..44fa7ff0158 100644 --- a/source/blender/python/api2_2x/Font.c +++ b/source/blender/python/api2_2x/Font.c @@ -174,23 +174,10 @@ PyObject *M_Font_Load( PyObject * self, PyObject * args ) return ( PyObject * ) py_font; } -/*--------------- Python BPy_Font methods---------------------------*/ +/*--------------- Python BPy_Font getsetattr funcs ---------------------*/ -/*--------------- BPy_Font.getName()--------------------------------*/ -static PyObject *Font_getName( BPy_Font * self ) -{ - PyObject *attr = NULL; - - if( self->font ) - attr = PyString_FromString( self->font->id.name+2 ); - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Font.name attribute" ) ); -} -/*--------------- BPy_Font.getFilename()--------------------------------*/ +/*--------------- BPy_Font.filename-------------------------------------*/ static PyObject *Font_getFilename( BPy_Font * self ) { PyObject *attr = NULL; @@ -204,26 +191,6 @@ static PyObject *Font_getFilename( BPy_Font * self ) "couldn't get Font.filename attribute" ) ); } -static int Font_setName( BPy_Font * self, PyObject * value ) -{ - char *name = NULL; - - if( !(self->font) ) - return EXPP_ReturnIntError( PyExc_RuntimeError, - "Blender Font was deleted!" ); - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->font->id, name ); - - return 0; -} - - - static int Font_setFilename( BPy_Font * self, PyObject * value ) { char *name = NULL; @@ -241,12 +208,6 @@ static int Font_setFilename( BPy_Font * self, PyObject * value ) return 0; } - -static PyObject *Font_getLib( BPy_Font * self ) -{ - return EXPP_GetIdLib((ID *)self->font); -} - /*--------------- BPy_Font.pack()---------------------------------*/ static PyObject *Font_pack( BPy_Font * self ) { @@ -283,27 +244,11 @@ static PyObject *Font_getPacked( BPy_Font * self ) return EXPP_incr_ret_False(); } -static PyObject *Font_getUsers( BPy_Font* self ) -{ - return PyInt_FromLong( self->font->id.us ); -} - /*****************************************************************************/ /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Font_getseters[] = { - {"name", - (getter)Font_getName, (setter)Font_setName, - "Font name", - NULL}, - {"lib", - (getter)Font_getLib, (setter)NULL, - "Font linked library", - NULL}, - {"users", - (getter)Font_getUsers, (setter)NULL, - "Number of font users", - NULL}, + GENERIC_LIB_GETSETATTR, {"filename", (getter)Font_getFilename, (setter)Font_setFilename, "Font filepath", diff --git a/source/blender/python/api2_2x/Group.c b/source/blender/python/api2_2x/Group.c index 413f069305f..79ecf99b86d 100755 --- a/source/blender/python/api2_2x/Group.c +++ b/source/blender/python/api2_2x/Group.c @@ -212,75 +212,7 @@ static PyObject *Group_repr( BPy_Group * obj ); static int Group_compare( BPy_Group * a, BPy_Group * b ); /*****************************************************************************/ -/* Python BPy_Group methods: */ -/*****************************************************************************/ -static PyObject *Group_getName( BPy_Group * self ) -{ - PyObject *attr; - GROUP_DEL_CHECK_PY(self); - - attr = PyString_FromString( self->group->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Group.name attribute" ) ); -} - -static int Group_setName( BPy_Group * self, PyObject * value ) -{ - char *name = NULL; - - GROUP_DEL_CHECK_INT(self); - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->group->id, name ); - - return 0; -} - -static PyObject *Group_getLib( BPy_Group * self ) -{ - GROUP_DEL_CHECK_PY(self); - return EXPP_GetIdLib((ID *)self->group); - -} - -static PyObject *Group_getUsers( BPy_Group * self ) -{ - GROUP_DEL_CHECK_PY(self); - return PyInt_FromLong( self->group->id.us ); -} - -static PyObject *Group_getFakeUser( BPy_Group * self ) -{ - GROUP_DEL_CHECK_PY(self); - if (self->group->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Group_setFakeUser( BPy_Group * self, PyObject * value ) -{ - GROUP_DEL_CHECK_INT(self); - return SetIdFakeUser(&self->group->id, value); -} - -static PyObject *Group_getProperties( BPy_Group * self ) -{ - /*sanity check, we set parent property type to Group here*/ - return BPy_Wrap_IDProperty( (ID*)self->group, IDP_GetProperties((ID*)self->group, 1), NULL ); -} - - -/*****************************************************************************/ -/* Python BPy_Group methods: */ +/* Python BPy_Group getsetattr funcs: */ /*****************************************************************************/ static int Group_setLayers( BPy_Group * self, PyObject * value ) { @@ -313,28 +245,10 @@ static PyObject *Group_getLayers( BPy_Group * self ) /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Group_getseters[] = { - {"name", - (getter)Group_getName, (setter)Group_setName, - "Group name", - NULL}, - {"lib", - (getter)Group_getLib, (setter)NULL, - "Group linked library", - NULL}, - {"users", - (getter)Group_getUsers, (setter)NULL, - "Number of group users", - NULL}, - {"fakeUser", - (getter)Group_getFakeUser, (setter)Group_setFakeUser, - "Groups fake user state", - NULL}, - {"properties", - (getter)Group_getProperties, NULL, - "get the ID properties associated with this group"}, + GENERIC_LIB_GETSETATTR, {"layers", (getter)Group_getLayers, (setter)Group_setLayers, - "Number of group users", + "layer mask for this group", NULL}, {"objects", (getter)Group_getObjects, (setter)Group_setObjects, @@ -630,30 +544,6 @@ Group *Group_FromPyObject( PyObject * py_grp ) } /*****************************************************************************/ -/* Description: Returns the object with the name specified by the argument */ -/* name. Note that the calling function has to remove the first */ -/* two characters of the object name. These two characters */ -/* specify the type of the object (OB, ME, WO, ...) */ -/* The function will return NULL when no object with the given */ -/* name is found. */ -/*****************************************************************************/ -Group *GetGroupByName( char *name ) -{ - Group *grp_iter; - - grp_iter = G.main->group.first; - while( grp_iter ) { - if( StringEqual( name, GetIdName( &( grp_iter->id ) ) ) ) { - return ( grp_iter ); - } - grp_iter = grp_iter->id.next; - } - - /* There is no object with the given name */ - return ( NULL ); -} - -/*****************************************************************************/ /* Function: Group_dealloc */ /* Description: This is a callback function for the BlenObject type. It is */ /* the destructor function. */ diff --git a/source/blender/python/api2_2x/Group.h b/source/blender/python/api2_2x/Group.h index bf68da1f7b7..c20a6bb11c9 100755 --- a/source/blender/python/api2_2x/Group.h +++ b/source/blender/python/api2_2x/Group.h @@ -63,6 +63,5 @@ PyObject *Group_Init( void ); PyObject *Group_CreatePyObject( struct Group *group ); Group *Group_FromPyObject( PyObject * py_obj ); int Group_CheckPyObject( PyObject * py_obj ); -Group *GetGroupByName( char *name ); #endif /* EXPP_GROUP_H */ diff --git a/source/blender/python/api2_2x/Image.c b/source/blender/python/api2_2x/Image.c index a5b5642865d..435d6cab0d2 100644 --- a/source/blender/python/api2_2x/Image.c +++ b/source/blender/python/api2_2x/Image.c @@ -78,7 +78,6 @@ static PyObject *M_Image_Load( PyObject * self, PyObject * args ); /*****************************************************************************/ /* Python BPy_Image methods declarations: */ /*****************************************************************************/ -static PyObject *Image_getName( BPy_Image * self ); static PyObject *Image_getFilename( BPy_Image * self ); static PyObject *Image_getSize( BPy_Image * self ); static PyObject *Image_getDepth( BPy_Image * self ); @@ -88,7 +87,6 @@ static PyObject *Image_getBindCode( BPy_Image * self ); static PyObject *Image_getStart( BPy_Image * self ); static PyObject *Image_getEnd( BPy_Image * self ); static PyObject *Image_getSpeed( BPy_Image * self ); -static PyObject *Image_setName( BPy_Image * self, PyObject * args ); static PyObject *Image_setFilename( BPy_Image * self, PyObject * args ); static PyObject *Image_setXRep( BPy_Image * self, PyObject * args ); static PyObject *Image_setYRep( BPy_Image * self, PyObject * args ); @@ -127,7 +125,7 @@ static PyMethodDef BPy_Image_methods[] = { "() - Get maximum x & y coordinates of current image as [x, y]"}, {"getMinXY", ( PyCFunction ) Image_getMinXY, METH_NOARGS, "() - Get minimun x & y coordinates of image as [x, y]"}, - {"getName", ( PyCFunction ) Image_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return Image object name"}, {"getFilename", ( PyCFunction ) Image_getFilename, METH_NOARGS, "() - Return Image object filename"}, @@ -155,7 +153,7 @@ static PyMethodDef BPy_Image_methods[] = { {"glFree", ( PyCFunction ) Image_glFree, METH_NOARGS, "() - Free the image data from OpenGL texture memory only,\n\ see also image.glLoad()."}, - {"setName", ( PyCFunction ) Image_setName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(str) - Change Image object name"}, {"setFilename", ( PyCFunction ) Image_setFilename, METH_VARARGS, "(str) - Change Image file name"}, @@ -679,6 +677,8 @@ static PyObject *Image_pack( BPy_Image * self ) static PyObject *Image_makeCurrent( BPy_Image * self ) { + printf("deprecated! use Blender.Main.images.active = image instead\n"); + if (!G.sima) Py_RETURN_FALSE; @@ -800,20 +800,6 @@ Image *Image_FromPyObject( PyObject * pyobj ) return ( ( BPy_Image * ) pyobj )->image; } -/*****************************************************************************/ -/* Python BPy_Image methods: */ -/*****************************************************************************/ -static PyObject *Image_getName( BPy_Image * self ) -{ - PyObject *attr = PyString_FromString( self->image->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Image.name attribute" ) ); -} - static PyObject *Image_getFilename( BPy_Image * self ) { PyObject *attr = PyString_FromString( self->image->name ); @@ -986,19 +972,6 @@ static PyObject *Image_glLoad( BPy_Image * self ) return PyLong_FromUnsignedLong( image->bindcode ); } -static PyObject *Image_setName( BPy_Image * self, PyObject * args ) -{ - char *name; - - if( !PyArg_ParseTuple( args, "s", &name ) ) - return ( EXPP_ReturnPyObjError( PyExc_TypeError, - "expected string argument" ) ); - - rename_id( &self->image->id, name ); - - Py_RETURN_NONE; -} - static PyObject *Image_setFilename( BPy_Image * self, PyObject * args ) { char *name; @@ -1208,7 +1181,7 @@ static int Image_setAttr( BPy_Image * self, char *name, PyObject * value ) "ImageSetAttr: couldn't create PyTuple" ); if( strcmp( name, "name" ) == 0 ) - error = Image_setName( self, valtuple ); + error = GenericLib_setName_with_method( self, valtuple ); else if( strcmp( name, "filename" ) == 0 ) error = Image_setFilename( self, valtuple ); else if( strcmp( name, "xrep" ) == 0 ) diff --git a/source/blender/python/api2_2x/Ipo.c b/source/blender/python/api2_2x/Ipo.c index e546a1932da..87815e69c42 100644 --- a/source/blender/python/api2_2x/Ipo.c +++ b/source/blender/python/api2_2x/Ipo.c @@ -91,9 +91,6 @@ struct PyMethodDef M_Ipo_methods[] = { /*****************************************************************************/ /* Python BPy_Ipo methods declarations: */ /*****************************************************************************/ -static PyObject *Ipo_getName( BPy_Ipo * self ); -static PyObject *Ipo_oldsetName( BPy_Ipo * self, PyObject * args ); -static int Ipo_setName( BPy_Ipo * self, PyObject * args ); static PyObject *Ipo_getBlocktype( BPy_Ipo * self ); static PyObject *Ipo_oldsetBlocktype( BPy_Ipo * self, PyObject * args ); static int Ipo_setBlocktype( BPy_Ipo * self, PyObject * args ); @@ -101,8 +98,6 @@ static PyObject *Ipo_getRctf( BPy_Ipo * self ); static PyObject *Ipo_oldsetRctf( BPy_Ipo * self, PyObject * args ); static int Ipo_setRctf( BPy_Ipo * self, PyObject * args ); -static PyObject *Ipo_getLib( BPy_Ipo * self ); -static PyObject *Ipo_getUsers( BPy_Ipo * self ); static PyObject *Ipo_getCurve( BPy_Ipo * self, PyObject * args ); static PyObject *Ipo_getCurves( BPy_Ipo * self ); static PyObject *Ipo_getCurveNames( BPy_Ipo * self ); @@ -121,9 +116,6 @@ static PyObject *Ipo_getCurveBeztriple( BPy_Ipo * self, PyObject * args ); static PyObject *Ipo_getChannel( BPy_Ipo * self ); static int Ipo_setChannel( BPy_Ipo * self, PyObject * args ); -static PyObject *Ipo_getFakeUser( BPy_Ipo * self ); -static int Ipo_setFakeUser( BPy_Ipo * self, PyObject * value ); - static int Ipo_length( BPy_Ipo * inst ); static PyObject *Ipo_getIpoCurveByName( BPy_Ipo * self, PyObject * key ); static int Ipo_setIpoCurveByName( BPy_Ipo * self, PyObject * key, @@ -135,9 +127,9 @@ static int Ipo_contains( BPy_Ipo * self, PyObject * key ); /*****************************************************************************/ static PyMethodDef BPy_Ipo_methods[] = { /* name, method, flags, doc */ - {"getName", ( PyCFunction ) Ipo_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return Ipo Data name"}, - {"setName", ( PyCFunction ) Ipo_oldsetName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(str) - Change Ipo Data name"}, {"getBlocktype", ( PyCFunction ) Ipo_getBlocktype, METH_NOARGS, "() - Return Ipo blocktype"}, @@ -178,22 +170,7 @@ static PyMethodDef BPy_Ipo_methods[] = { /* Python BPy_Ipo attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Ipo_getseters[] = { - {"name", - (getter)Ipo_getName, (setter)Ipo_setName, - "Ipo data name", - NULL}, - {"lib", - (getter)Ipo_getLib, (setter)NULL, - "Ipos linked library", - NULL}, - {"users", - (getter)Ipo_getUsers, (setter)NULL, - "Number of Ipo users", - NULL}, - {"fakeUser", - (getter)Ipo_getFakeUser, (setter)Ipo_setFakeUser, - "Ipos fake user state", - NULL}, + GENERIC_LIB_GETSETATTR, {"curves", (getter)Ipo_getCurves, (setter)NULL, "Ipo curves", @@ -821,59 +798,6 @@ static PyObject *M_Ipo_Recalc( PyObject * self_unused, PyObject * args ) /*****************************************************************************/ /* Python BPy_Ipo methods: */ /*****************************************************************************/ - -static PyObject *Ipo_getName( BPy_Ipo * self ) -{ - PyObject *attr = PyString_FromString( self->ipo->id.name + 2 ); - - if( attr ) - return attr; - - return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Ipo.name attribute" ); -} - -static int Ipo_setName( BPy_Ipo * self, PyObject * args ) -{ - char *name; - - name = PyString_AsString( args ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->ipo->id, name ); - - return 0; -} - - -static PyObject *Ipo_getLib( BPy_Ipo * self ) -{ - return EXPP_GetIdLib((ID *)self->ipo); - -} - -static PyObject *Ipo_getUsers( BPy_Ipo * self ) -{ - return PyInt_FromLong( self->ipo->id.us ); -} - -static PyObject *Ipo_getFakeUser( BPy_Ipo * self ) -{ - if (self->ipo->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Ipo_setFakeUser( BPy_Ipo * self, PyObject * value ) -{ - return SetIdFakeUser(&self->ipo->id, value); -} - - - static PyObject *Ipo_getBlocktype( BPy_Ipo * self ) { PyObject *attr = PyInt_FromLong( self->ipo->blocktype ); @@ -1911,12 +1835,6 @@ static PyObject *Ipo_oldsetRctf( BPy_Ipo * self, PyObject * args ) (setter)Ipo_setRctf ); } -static PyObject *Ipo_oldsetName( BPy_Ipo * self, PyObject * args ) -{ - return EXPP_setterWrapperTuple( (void *)self, args, - (setter)Ipo_setName ); -} - static PyObject *Ipo_oldsetBlocktype( BPy_Ipo * self, PyObject * args ) { return EXPP_setterWrapperTuple( (void *)self, args, diff --git a/source/blender/python/api2_2x/Lamp.c b/source/blender/python/api2_2x/Lamp.c index e9d5023add9..2588d376913 100644 --- a/source/blender/python/api2_2x/Lamp.c +++ b/source/blender/python/api2_2x/Lamp.c @@ -178,9 +178,6 @@ struct PyMethodDef M_Lamp_methods[] = { /*****************************************************************************/ /* Python BPy_Lamp methods declarations: */ /*****************************************************************************/ -static PyObject *Lamp_getName( BPy_Lamp * self ); -static PyObject *Lamp_getLib( BPy_Lamp * self ); -static PyObject *Lamp_getFakeUser( BPy_Lamp * self ); static PyObject *Lamp_getType( BPy_Lamp * self ); static PyObject *Lamp_getTypesConst( void ); static PyObject *Lamp_getMode( BPy_Lamp * self ); @@ -206,11 +203,9 @@ static PyObject *Lamp_getQuad2( BPy_Lamp * self ); static PyObject *Lamp_getCol( BPy_Lamp * self ); static PyObject *Lamp_getIpo( BPy_Lamp * self ); static PyObject *Lamp_getComponent( BPy_Lamp * self, void * closure ); -static PyObject *Lamp_getUsers( BPy_Lamp * self ); static PyObject *Lamp_clearIpo( BPy_Lamp * self ); static PyObject *Lamp_insertIpoKey( BPy_Lamp * self, PyObject * args ); static PyObject *Lamp_oldsetIpo( BPy_Lamp * self, PyObject * args ); -static PyObject *Lamp_oldsetName( BPy_Lamp * self, PyObject * args ); static PyObject *Lamp_oldsetType( BPy_Lamp * self, PyObject * args ); static PyObject *Lamp_oldsetMode( BPy_Lamp * self, PyObject * args ); static PyObject *Lamp_oldsetSamples( BPy_Lamp * self, PyObject * args ); @@ -233,8 +228,6 @@ static PyObject *Lamp_oldsetQuad1( BPy_Lamp * self, PyObject * args ); static PyObject *Lamp_oldsetQuad2( BPy_Lamp * self, PyObject * args ); static PyObject *Lamp_oldsetCol( BPy_Lamp * self, PyObject * args ); static int Lamp_setIpo( BPy_Lamp * self, PyObject * args ); -static int Lamp_setName( BPy_Lamp * self, PyObject * args ); -static int Lamp_setFakeUser( BPy_Lamp * self, PyObject * args ); static int Lamp_setType( BPy_Lamp * self, PyObject * args ); static int Lamp_setMode( BPy_Lamp * self, PyObject * args ); static int Lamp_setSamples( BPy_Lamp * self, PyObject * args ); @@ -266,8 +259,7 @@ static int Lamp_setComponent( BPy_Lamp * self, PyObject * value, void * closure /*****************************************************************************/ static PyMethodDef BPy_Lamp_methods[] = { /* name, method, flags, doc */ - {"getName", ( PyCFunction ) Lamp_getName, METH_NOARGS, - "() - return Lamp name"}, + {"getType", ( PyCFunction ) Lamp_getType, METH_NOARGS, "() - return Lamp type - 'Lamp':0, 'Sun':1, 'Spot':2, 'Hemi':3, 'Area':4, 'Photon':5"}, {"getMode", ( PyCFunction ) Lamp_getMode, METH_NOARGS, @@ -310,7 +302,7 @@ static PyMethodDef BPy_Lamp_methods[] = { "() - return light intensity value #2 for a Quad Lamp"}, {"getCol", ( PyCFunction ) Lamp_getCol, METH_NOARGS, "() - return light rgb color triplet"}, - {"setName", ( PyCFunction ) Lamp_oldsetName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(str) - rename Lamp"}, {"setType", ( PyCFunction ) Lamp_oldsetType, METH_VARARGS, "(str) - change Lamp type, which can be 'Lamp', 'Sun', 'Spot', 'Hemi', 'Area', 'Photon'"}, @@ -382,22 +374,7 @@ static PyMethodDef BPy_Lamp_methods[] = { /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Lamp_getseters[] = { - {"name", - (getter)Lamp_getName, (setter)Lamp_setName, - "Lamp data name", - NULL}, - {"lib", - (getter)Lamp_getLib, (setter)NULL, - "Lamps linked library", - NULL}, - {"users", - (getter)Lamp_getUsers, (setter)NULL, - "Number of lamp users", - NULL}, - {"fakeUser", - (getter)Lamp_getFakeUser, (setter)Lamp_setFakeUser, - "Lamps fake user state", - NULL}, + GENERIC_LIB_GETSETATTR, {"bias", (getter)Lamp_getBias, (setter)Lamp_setBias, "Lamp shadow map sampling bias", @@ -880,56 +857,8 @@ Lamp *Lamp_FromPyObject( PyObject * pyobj ) } /*****************************************************************************/ -/* Description: Returns the lamp with the name specified by the argument */ -/* name. Note that the calling function has to remove the first */ -/* two characters of the lamp name. These two characters */ -/* specify the type of the object (OB, ME, WO, ...) */ -/* The function will return NULL when no lamp with the given */ -/* name is found. */ -/*****************************************************************************/ -Lamp *GetLampByName( char *name ) -{ - Lamp *lamp_iter; - - lamp_iter = G.main->lamp.first; - while( lamp_iter ) { - if( StringEqual( name, GetIdName( &( lamp_iter->id ) ) ) ) { - return lamp_iter; - } - lamp_iter = lamp_iter->id.next; - } - - /* There is no lamp with the given name */ - return NULL; -} - -/*****************************************************************************/ /* Python BPy_Lamp methods: */ /*****************************************************************************/ -static PyObject *Lamp_getName( BPy_Lamp * self ) -{ - PyObject *attr = PyString_FromString( self->lamp->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Lamp.name attribute" ) ); -} - -static PyObject *Lamp_getLib( BPy_Lamp * self ) -{ - return EXPP_GetIdLib((ID *)self->lamp); -} - -static PyObject *Lamp_getFakeUser( BPy_Lamp * self ) -{ - if (self->lamp->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - static PyObject *Lamp_getType( BPy_Lamp * self ) { PyObject *attr = PyInt_FromLong( self->lamp->type ); @@ -1154,28 +1083,6 @@ static PyObject *Lamp_getCol( BPy_Lamp * self ) return rgbTuple_getCol( self->color ); } -static int Lamp_setName( BPy_Lamp * self, PyObject * value ) -{ - char *name = NULL; - char buf[21]; - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - PyOS_snprintf( buf, sizeof( buf ), "%s", name ); - - rename_id( &self->lamp->id, buf ); - - return 0; -} - -static int Lamp_setFakeUser( BPy_Lamp * self, PyObject * value ) -{ - return SetIdFakeUser(&self->lamp->id, value); -} - static int Lamp_setType( BPy_Lamp * self, PyObject * value ) { return EXPP_setIValueRange ( value, &self->lamp->type, @@ -1613,18 +1520,8 @@ static PyObject *Lamp_getTypesConst( void ) return attr; } -static PyObject *Lamp_getUsers( BPy_Lamp * self ) -{ - return PyInt_FromLong( self->lamp->id.us ); -} - /* #####DEPRECATED###### */ -static PyObject *Lamp_oldsetName( BPy_Lamp * self, PyObject * args ) -{ - return EXPP_setterWrapper ( (void *)self, args, (setter)Lamp_setName ); -} - static PyObject *Lamp_oldsetSamples( BPy_Lamp * self, PyObject * args ) { return EXPP_setterWrapper ( (void *)self, args, (setter)Lamp_setSamples ); diff --git a/source/blender/python/api2_2x/Lamp.h b/source/blender/python/api2_2x/Lamp.h index 9042ab12ed4..fa31128c3e1 100644 --- a/source/blender/python/api2_2x/Lamp.h +++ b/source/blender/python/api2_2x/Lamp.h @@ -58,6 +58,5 @@ PyObject *Lamp_Init( void ); PyObject *Lamp_CreatePyObject( struct Lamp *lamp ); Lamp *Lamp_FromPyObject( PyObject * pyobj ); int Lamp_CheckPyObject( PyObject * pyobj ); -Lamp *GetLampByName( char *name ); #endif /* EXPP_LAMP_H */ diff --git a/source/blender/python/api2_2x/Lattice.c b/source/blender/python/api2_2x/Lattice.c index c0551034eb8..551395751f1 100644 --- a/source/blender/python/api2_2x/Lattice.c +++ b/source/blender/python/api2_2x/Lattice.c @@ -86,8 +86,6 @@ struct PyMethodDef M_Lattice_methods[] = { /*****************************************************************************/ /* Python BPy_Lattice methods declarations: */ /*****************************************************************************/ -static PyObject *Lattice_getName( BPy_Lattice * self ); -static PyObject *Lattice_setName( BPy_Lattice * self, PyObject * args ); static PyObject *Lattice_setPartitions( BPy_Lattice * self, PyObject * args ); static PyObject *Lattice_getPartitions( BPy_Lattice * self ); static PyObject *Lattice_getKey( BPy_Lattice * self ); @@ -146,9 +144,9 @@ static char Lattice_copy_doc[] = /*****************************************************************************/ static PyMethodDef BPy_Lattice_methods[] = { /* name, method, flags, doc */ - {"getName", ( PyCFunction ) Lattice_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, Lattice_getName_doc}, - {"setName", ( PyCFunction ) Lattice_setName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, Lattice_setName_doc}, {"setPartitions", ( PyCFunction ) Lattice_setPartitions, METH_VARARGS, Lattice_setPartitions_doc}, @@ -373,33 +371,6 @@ PyObject *Lattice_Init( void ) return ( mod ); } -//*************************************************************************** -// Python BPy_Lattice methods: -//*************************************************************************** -static PyObject *Lattice_getName( BPy_Lattice * self ) -{ - PyObject *attr = PyString_FromString( self->Lattice->id.name + 2 ); - - if( attr ) - return attr; - - return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Lattice.name attribute" ); -} - -static PyObject *Lattice_setName( BPy_Lattice * self, PyObject * args ) -{ - char *name; - - if( !PyArg_ParseTuple( args, "s", &name ) ) - return ( EXPP_ReturnPyObjError( PyExc_TypeError, - "expected string argument" ) ); - - rename_id( &self->Lattice->id, name ); - - Py_RETURN_NONE; -} - static PyObject *Lattice_setPartitions( BPy_Lattice * self, PyObject * args ) { int x = 0; @@ -839,7 +810,7 @@ static int Lattice_setAttr( BPy_Lattice * self, char *name, PyObject * value ) "LatticeSetAttr: couldn't create PyTuple" ); if( strcmp( name, "name" ) == 0 ) - error = Lattice_setName( self, valtuple ); + error = GenericLib_setName_with_method( self, valtuple ); else { // Error: no such member in the Lattice Data structure /*Py_DECREF( value ); borrowed reference, no need to decref */ Py_DECREF( valtuple ); diff --git a/source/blender/python/api2_2x/Material.c b/source/blender/python/api2_2x/Material.c index 82b9371e4f1..0806c131a57 100644 --- a/source/blender/python/api2_2x/Material.c +++ b/source/blender/python/api2_2x/Material.c @@ -263,23 +263,11 @@ static PyObject *M_Material_Get( PyObject * self, PyObject * args ) return ( EXPP_ReturnPyObjError( PyExc_TypeError, "expected string argument (or nothing)" ) ); - mat_iter = G.main->mat.first; - if( name ) { /* (name) - Search material by name */ - BPy_Material *wanted_mat = NULL; - - while( mat_iter ) { - if( strcmp( name, mat_iter->id.name + 2 ) == 0 ) { - wanted_mat = - ( BPy_Material * ) - Material_CreatePyObject( mat_iter ); - break; - } - mat_iter = mat_iter->id.next; - } + mat_iter = ( Material * ) GetIdFromList( &( G.main->mat ), name ); - if( wanted_mat == NULL ) { /* Requested material doesn't exist */ + if( mat_iter == NULL ) { /* Requested material doesn't exist */ char error_msg[64]; PyOS_snprintf( error_msg, sizeof( error_msg ), "Material \"%s\" not found", name ); @@ -287,19 +275,20 @@ static PyObject *M_Material_Get( PyObject * self, PyObject * args ) error_msg ); } - return ( PyObject * ) wanted_mat; + return Material_CreatePyObject( mat_iter ); } else { /* () - return a list with all materials in the scene */ int index = 0; PyObject *matlist, *pyobj; - + matlist = PyList_New( BLI_countlist( &( G.main->mat ) ) ); if( !matlist ) return ( EXPP_ReturnPyObjError( PyExc_MemoryError, "couldn't create PyList" ) ); - + + mat_iter = G.main->mat.first; while( mat_iter ) { pyobj = Material_CreatePyObject( mat_iter ); @@ -443,7 +432,6 @@ static PyObject *Matr_oldsetHaloSeed( BPy_Material * self, PyObject * args ); static PyObject *Matr_oldsetHaloSize( BPy_Material * self, PyObject * args ); static PyObject *Matr_oldsetHardness( BPy_Material * self, PyObject * args ); static PyObject *Matr_oldsetIOR( BPy_Material * self, PyObject * args ); -static PyObject *Matr_oldsetName( BPy_Material * self, PyObject * args ); static PyObject *Matr_oldsetNFlares( BPy_Material * self, PyObject * args ); static PyObject *Matr_oldsetNLines( BPy_Material * self, PyObject * args ); static PyObject *Matr_oldsetNRings( BPy_Material * self, PyObject * args ); @@ -474,7 +462,7 @@ static PyObject *Matr_oldsetRms( BPy_Material * self, PyObject * args ); static PyObject *Matr_oldsetTranslucency( BPy_Material * self, PyObject * args ); static int Material_setIpo( BPy_Material * self, PyObject * value ); -static int Material_setName( BPy_Material * self, PyObject * value ); + static int Material_setMode( BPy_Material * self, PyObject * value ); static int Material_setRGBCol( BPy_Material * self, PyObject * value ); static int Material_setSpecCol( BPy_Material * self, PyObject * value ); @@ -527,15 +515,11 @@ static int Material_setRefracIndex( BPy_Material * self, PyObject * value ); static int Material_setRms( BPy_Material * self, PyObject * value ); static int Material_setFilter( BPy_Material * self, PyObject * value ); static int Material_setTranslucency( BPy_Material * self, PyObject * value ); -static int Material_setFakeUser( BPy_Material * self, PyObject * value ); static PyObject *Material_getColorComponent( BPy_Material * self, void * closure ); static PyObject *Material_getOopsLoc( BPy_Material * self ); static PyObject *Material_getOopsSel( BPy_Material * self ); -static PyObject *Material_getLib( BPy_Material * self ); -static PyObject *Material_getUsers( BPy_Material * self ); -static PyObject *Material_getFakeUser( BPy_Material * self ); /*static int Material_setSeptex( BPy_Material * self, PyObject * value ); static PyObject *Material_getSeptex( BPy_Material * self );*/ @@ -543,7 +527,6 @@ static PyObject *Material_getFakeUser( BPy_Material * self ); /* Python BPy_Material methods declarations: */ /*****************************************************************************/ static PyObject *Material_getIpo( BPy_Material * self ); -static PyObject *Material_getName( BPy_Material * self ); static PyObject *Material_getMode( BPy_Material * self ); static PyObject *Material_getRGBCol( BPy_Material * self ); /*static PyObject *Material_getAmbCol(BPy_Material *self);*/ @@ -608,7 +591,6 @@ static PyObject *Material_clearScriptLinks(BPy_Material *self, PyObject *args); static PyObject *Material_insertIpoKey( BPy_Material * self, PyObject * args ); static PyObject *Material_copy( BPy_Material * self ); -static PyObject *Material_getProperties( BPy_Material * self ); /*****************************************************************************/ @@ -616,9 +598,7 @@ static PyObject *Material_getProperties( BPy_Material * self ); /*****************************************************************************/ static PyMethodDef BPy_Material_methods[] = { /* name, method, flags, doc */ - {"getProperties", ( PyCFunction) Material_getProperties, METH_NOARGS, - "() Return Material's ID Properties"}, - {"getName", ( PyCFunction ) Material_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return Material's name"}, {"getIpo", ( PyCFunction ) Material_getIpo, METH_NOARGS, "() - Return Material's ipo or None if not found"}, @@ -716,7 +696,7 @@ static PyMethodDef BPy_Material_methods[] = { {"getTextures", ( PyCFunction ) Material_getTextures, METH_NOARGS, "() - Return Material's texture list as a tuple"}, - {"setName", ( PyCFunction ) Matr_oldsetName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(s) - Change Material's name"}, {"setIpo", ( PyCFunction ) Matr_oldsetIpo, METH_VARARGS, "(Blender Ipo) - Change Material's Ipo"}, @@ -844,6 +824,7 @@ static PyMethodDef BPy_Material_methods[] = { /*****************************************************************************/ static PyGetSetDef BPy_Material_getseters[] = { + GENERIC_LIB_GETSETATTR, {"add", (getter)Material_getAdd, (setter)Material_setAdd, "Strength of the add effect", @@ -961,10 +942,6 @@ static PyGetSetDef BPy_Material_getseters[] = { (getter)Material_getMode, (setter)Material_setMode, "Material mode bitmask", NULL}, - {"name", - (getter)Material_getName, (setter)Material_setName, - "Material data name", - NULL}, {"nFlares", (getter)Material_getNFlares, (setter)Material_setNFlares, "Number of subflares with halo", @@ -1085,20 +1062,6 @@ static PyGetSetDef BPy_Material_getseters[] = { (getter)Material_getColorComponent, (setter)Material_setColorComponent, "Diffuse color blue component", (void *) EXPP_MAT_COMP_B }, - {"users", - (getter)Material_getUsers, (setter)NULL, - "Number of material users", - NULL}, - {"fakeUser", - (getter)Material_getFakeUser, (setter)Material_setFakeUser, - "The fake user status of this material", - NULL}, - {"lib", - (getter)Material_getLib, (setter)NULL, - "Materials external library", - NULL}, - {"properties", (getter) Material_getProperties, (setter)NULL, - "Get material's ID properties"}, {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ }; @@ -1271,40 +1234,6 @@ Material *Material_FromPyObject( PyObject * pyobj ) return ( ( BPy_Material * ) pyobj )->material; } -/*****************************************************************************/ -/* Description: Returns the object with the name specified by the argument */ -/* name. Note that the calling function has to remove the first */ -/* two characters of the object name. These two characters */ -/* specify the type of the object (OB, ME, WO, ...) */ -/* The function will return NULL when no object with the given */ -/* name is found. */ -/*****************************************************************************/ -Material *GetMaterialByName( char *name ) -{ - Material *mat_iter; - - mat_iter = G.main->mat.first; - while( mat_iter ) { - if( StringEqual( name, GetIdName( &( mat_iter->id ) ) ) ) { - return ( mat_iter ); - } - mat_iter = mat_iter->id.next; - } - - /* There is no material with the given name */ - return ( NULL ); -} - -/*****************************************************************************/ -/* Python BPy_Material methods: */ -/*****************************************************************************/ - -static PyObject *Material_getProperties( BPy_Material * self ) -{ - /*sanity check, we set parent property type to Group here*/ - return BPy_Wrap_IDProperty( (ID*)self->material, IDP_GetProperties((ID*)self->material, 1), NULL ); -} - static PyObject *Material_getIpo( BPy_Material * self ) { Ipo *ipo = self->material->ipo; @@ -1315,17 +1244,6 @@ static PyObject *Material_getIpo( BPy_Material * self ) return Ipo_CreatePyObject( ipo ); } -static PyObject *Material_getName( BPy_Material * self ) -{ - PyObject *attr = PyString_FromString( self->material->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Material.name attribute" ) ); -} - static PyObject *Material_getMode( BPy_Material * self ) { PyObject *attr = PyInt_FromLong( ( long ) self->material->mode ); @@ -2010,20 +1928,6 @@ static PyObject *Material_insertIpoKey( BPy_Material * self, PyObject * args ) Py_RETURN_NONE; } -static int Material_setName( BPy_Material * self, PyObject * value ) -{ - char *name; - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->material->id, name ); - - return 0; -} - static int Material_setMode( BPy_Material * self, PyObject * value ) { int param; @@ -2850,30 +2754,6 @@ static int Material_setOopsSel ( BPy_Material * self, PyObject * value ) return 0; } -static PyObject *Material_getLib(BPy_Material *self) -{ - return EXPP_GetIdLib((ID *)self->material); -} - -static PyObject *Material_getUsers( BPy_Material * self ) -{ - return PyInt_FromLong( self->material->id.us ); -} - -static PyObject *Material_getFakeUser( BPy_Material * self ) -{ - if (self->material->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Material_setFakeUser( BPy_Material * self, PyObject * value ) -{ - return SetIdFakeUser(&self->material->id, value); -} - - /* #####DEPRECATED###### */ static PyObject *Matr_oldsetAdd( BPy_Material * self, PyObject * args ) @@ -2979,11 +2859,6 @@ static PyObject *Matr_oldsetIOR( BPy_Material * self, PyObject * args ) return EXPP_setterWrapper( (void *)self, args, (setter)Material_setIOR ); } -static PyObject *Matr_oldsetName( BPy_Material * self, PyObject * args ) -{ - return EXPP_setterWrapper( (void *)self, args, (setter)Material_setName ); -} - static PyObject *Matr_oldsetNFlares( BPy_Material * self, PyObject * args ) { return EXPP_setterWrapper( (void *)self, args, (setter)Material_setNFlares ); @@ -3234,3 +3109,4 @@ static PyObject *Material_clearIpo( BPy_Material * self ) } return EXPP_incr_ret_False(); /* no ipo found */ } + diff --git a/source/blender/python/api2_2x/Mesh.c b/source/blender/python/api2_2x/Mesh.c index 98396a743ca..f971310711d 100644 --- a/source/blender/python/api2_2x/Mesh.c +++ b/source/blender/python/api2_2x/Mesh.c @@ -7159,60 +7159,6 @@ static int Mesh_setSubDivLevels( BPy_Mesh *self, PyObject *value ) return 0; } -static PyObject *Mesh_getName( BPy_Mesh * self ) -{ - PyObject *attr = PyString_FromString( self->mesh->id.name + 2 ); - - if( attr ) - return attr; - - return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Mesh.name attribute" ); -} - -static int Mesh_setName( BPy_Mesh * self, PyObject * value ) -{ - char *name; - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->mesh->id, name ); - - return 0; -} - -static PyObject *Mesh_getUsers( BPy_Mesh * self ) -{ - PyObject *attr = PyInt_FromLong( self->mesh->id.us ); - - if( attr ) - return attr; - - return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Mesh.users attribute" ); -} - -static PyObject *Mesh_getLib(BPy_Mesh *self) -{ - return EXPP_GetIdLib((ID *)self->mesh); -} - -static PyObject *Mesh_getFakeUser( BPy_Mesh * self ) -{ - if (self->mesh->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Mesh_setFakeUser( BPy_Mesh * self, PyObject * value ) -{ - return SetIdFakeUser(&self->mesh->id, value); -} - static PyObject *Mesh_getFlag( BPy_Mesh * self, void *type ) { PyObject *attr; @@ -7589,19 +7535,11 @@ static PyObject *Mesh_repr( BPy_Mesh * self ) self->mesh->id.name + 2 ); } -static PyObject *Mesh_getProperties( BPy_Mesh * self ) -{ - /*sanity check, we set parent property type to Group here*/ - return BPy_Wrap_IDProperty( (ID*)self->mesh, IDP_GetProperties((ID*)self->mesh, 1), NULL ); -} - /*****************************************************************************/ /* Python Mesh_Type attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Mesh_getseters[] = { - {"properties", - (getter)Mesh_getProperties, NULL, - "get the ID properties associated with this mesh"}, + GENERIC_LIB_GETSETATTR, {"verts", (getter)Mesh_getVerts, (setter)Mesh_setVerts, "The mesh's vertices (MVert)", @@ -7630,10 +7568,6 @@ static PyGetSetDef BPy_Mesh_getseters[] = { (getter)Mesh_getSubDivLevels, (setter)Mesh_setSubDivLevels, "The display and rendering subdivision levels", NULL}, - {"name", - (getter)Mesh_getName, (setter)Mesh_setName, - "The mesh's data name", - NULL}, {"mode", (getter)Mesh_getMode, (setter)Mesh_setMode, "The mesh's mode bitfield", @@ -7662,18 +7596,6 @@ static PyGetSetDef BPy_Mesh_getseters[] = { (getter)Mesh_getActiveFace, (setter)Mesh_setActiveFace, "Index of the mesh's active texture face (in UV editor)", NULL}, - {"users", - (getter)Mesh_getUsers, (setter)NULL, - "Number of users of the mesh", - NULL}, - {"lib", - (getter)Mesh_getLib, (setter)NULL, - "Meshes external library", - NULL}, - {"fakeUser", - (getter)Mesh_getFakeUser, (setter)Mesh_setFakeUser, - "The fake user status of this mesh", - NULL}, {"activeGroup", (getter)Mesh_getActiveGroup, (setter)Mesh_setActiveGroup, "Active group for the mesh", diff --git a/source/blender/python/api2_2x/Metaball.c b/source/blender/python/api2_2x/Metaball.c index 1de71e160ac..9392c331be2 100644 --- a/source/blender/python/api2_2x/Metaball.c +++ b/source/blender/python/api2_2x/Metaball.c @@ -106,9 +106,6 @@ static PyObject *M_MetaElem_TypesDict( void ) /* Python BPy_Metaball methods declarations: */ /*****************************************************************************/ static PyObject *Metaball_getElements( BPy_Metaball * self ); -static PyObject *Metaball_getName( BPy_Metaball * self ); -static PyObject *Metaball_getLib( BPy_Metaball * self ); -static int Metaball_setName( BPy_Metaball * self, PyObject * value ); static PyObject *Metaball_getMaterials( BPy_Metaball * self ); static int Metaball_setMaterials( BPy_Metaball * self, PyObject * value ); static PyObject *Metaball_getWiresize( BPy_Metaball * self ); @@ -118,9 +115,6 @@ static int Metaball_setRendersize( BPy_Metaball * self, PyObject * value); static PyObject *Metaball_getThresh( BPy_Metaball * self ); static int Metaball_setThresh( BPy_Metaball * self, PyObject * args ); static PyObject *Metaball_copy( BPy_Metaball * self ); -static PyObject *Metaball_getUsers( BPy_Metaball * self ); -static PyObject *Metaball_getFakeUser( BPy_Metaball * self ); -static int Metaball_setFakeUser( BPy_Metaball * self, PyObject * value ); /*****************************************************************************/ /* Python BPy_Metaball methods table: */ @@ -173,22 +167,7 @@ static int Metaelem_setMFlagBits( BPy_Metaelem * self, PyObject * value, void * /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Metaball_getseters[] = { - {"name", - (getter)Metaball_getName, (setter)Metaball_setName, - "Metaball name", - NULL}, - {"lib", - (getter)Metaball_getLib, (setter)NULL, - "Metaballs external library", - NULL}, - {"users", - (getter)Metaball_getUsers, (setter)NULL, - "Number of metaball users", - NULL}, - {"fakeUser", - (getter)Metaball_getFakeUser, (setter)Metaball_setFakeUser, - "The fake user status of this object", - NULL}, + GENERIC_LIB_GETSETATTR, {"materials", (getter)Metaball_getMaterials, (setter)Metaball_setMaterials, "Number of metaball users", @@ -550,35 +529,6 @@ MetaBall *Metaball_FromPyObject( PyObject * pyobj ) return ( ( BPy_Metaball * ) pyobj )->metaball; } -static PyObject *Metaball_getName( BPy_Metaball * self ) -{ - - PyObject *attr = PyString_FromString( self->metaball->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Metaball.name attribute" ) ); -} - -static int Metaball_setName( BPy_Metaball * self, PyObject * value ) -{ - char *name = NULL; - - name = PyString_AsString ( value ); - if( !name ) - return ( EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ) ); - rename_id( &self->metaball->id, name ); - return 0; -} - -static PyObject *Metaball_getLib( BPy_Metaball * self ) -{ - return EXPP_GetIdLib((ID *)self->metaball); -} - static PyObject *Metaball_getMaterials( BPy_Metaball *self ) { return EXPP_PyList_fromMaterialList( self->metaball->mat, @@ -683,27 +633,6 @@ static int Metaball_setThresh( BPy_Metaball * self, PyObject * value ) return 0; } - -static PyObject *Metaball_getUsers( BPy_Metaball * self ) -{ - return PyInt_FromLong( self->metaball->id.us ); -} - -static PyObject *Metaball_getFakeUser( BPy_Metaball * self ) -{ - if (self->metaball->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Metaball_setFakeUser( BPy_Metaball * self, PyObject * value ) -{ - return SetIdFakeUser(&self->metaball->id, value); -} - - - static PyObject *Metaball_copy( BPy_Metaball * self ) { BPy_Metaball *pymball; /* for Data object wrapper in Python */ diff --git a/source/blender/python/api2_2x/NLA.c b/source/blender/python/api2_2x/NLA.c index bcac2a3254d..2c0577bd9c2 100644 --- a/source/blender/python/api2_2x/NLA.c +++ b/source/blender/python/api2_2x/NLA.c @@ -84,8 +84,6 @@ struct PyMethodDef M_NLA_methods[] = { /*****************************************************************************/ /* Python BPy_Action methods declarations: */ /*****************************************************************************/ -static PyObject *Action_getName( BPy_Action * self ); -static PyObject *Action_setName( BPy_Action * self, PyObject * args ); static PyObject *Action_setActive( BPy_Action * self, PyObject * args ); static PyObject *Action_getFrameNumbers(BPy_Action *self); static PyObject *Action_getChannelIpo( BPy_Action * self, PyObject * args ); @@ -98,9 +96,9 @@ static PyObject *Action_getAllChannelIpos( BPy_Action * self ); /*****************************************************************************/ static PyMethodDef BPy_Action_methods[] = { /* name, method, flags, doc */ - {"getName", ( PyCFunction ) Action_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - return Action name"}, - {"setName", ( PyCFunction ) Action_setName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(str) - rename Action"}, {"setActive", ( PyCFunction ) Action_setActive, METH_VARARGS, "(str) -set this action as the active action for an object"}, @@ -237,44 +235,6 @@ static PyObject *M_NLA_GetActions( PyObject * self_unused ) return dict; } - -/*----------------------------------------------------------------------*/ -static PyObject *Action_getName( BPy_Action * self ) -{ - PyObject *attr = NULL; - - if( !self->action ) - ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get attribute from a NULL action" ) ); - - attr = PyString_FromString( self->action->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Action.name attribute" ) ); -} - -/*----------------------------------------------------------------------*/ -static PyObject *Action_setName( BPy_Action * self, PyObject * args ) -{ - char *name; - - if( !self->action ) - ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get attribute from a NULL action" ) ); - - if( !PyArg_ParseTuple( args, "s", &name ) ) - return ( EXPP_ReturnPyObjError( PyExc_AttributeError, - "expected string argument" ) ); - - /*change name*/ - rename_id( &self->action->id, name); - - Py_RETURN_NONE; -} - static PyObject *Action_getFrameNumbers(BPy_Action *self) { bActionChannel *achan = NULL; @@ -446,7 +406,7 @@ static PyObject *Action_getAttr( BPy_Action * self, char *name ) PyObject *attr = Py_None; if( strcmp( name, "name" ) == 0 ) - attr = Action_getName( self ); + attr = GenericLib_getName( self ); else if( strcmp( name, "__members__" ) == 0 ) { attr = Py_BuildValue( "[s]", "name" ); } @@ -475,7 +435,7 @@ static int Action_setAttr( BPy_Action * self, char *name, PyObject * value ) "ActionSetAttr: couldn't create tuple" ); if( strcmp( name, "name" ) == 0 ) - error = Action_setName( self, valtuple ); + error = GenericLib_setName_with_method( self, valtuple ); else { /* Error */ Py_DECREF( valtuple ); diff --git a/source/blender/python/api2_2x/Object.c b/source/blender/python/api2_2x/Object.c index 6a88ba5bd9b..d413b90fcc6 100644 --- a/source/blender/python/api2_2x/Object.c +++ b/source/blender/python/api2_2x/Object.c @@ -346,8 +346,6 @@ static PyObject *Object_getIpo( BPy_Object * self ); static PyObject *Object_getLocation( BPy_Object * self, PyObject * args ); static PyObject *Object_getMaterials( BPy_Object * self, PyObject * args ); static PyObject *Object_getMatrix( BPy_Object * self, PyObject * args ); -static PyObject *Object_getName( BPy_Object * self ); -static PyObject *Object_getLib( BPy_Object * self ); static PyObject *Object_getParent( BPy_Object * self ); static PyObject *Object_getParentBoneName( BPy_Object * self ); static int Object_setParentBoneName( BPy_Object * self, PyObject * value ); @@ -382,7 +380,6 @@ static PyObject *Object_insertCurrentPoseKey( BPy_Object * self, PyObject * args static PyObject *Object_setConstraintInfluenceForBone( BPy_Object * self, PyObject * args ); static PyObject *Object_setLocation( BPy_Object * self, PyObject * args ); static PyObject *Object_setMaterials( BPy_Object * self, PyObject * args ); -static PyObject *Object_SetName( BPy_Object * self, PyObject * args ); static PyObject *Object_setSize( BPy_Object * self, PyObject * args ); static PyObject *Object_setTimeOffset( BPy_Object * self, PyObject * args ); static PyObject *Object_makeTrack( BPy_Object * self, PyObject * args ); @@ -514,7 +511,7 @@ or old_worldspace.\n\ matrix is not updated for changes made by the script itself\n\ (like obj.LocX = 10) until a redraw happens, either called by the script or\n\ automatic when the script finishes."}, - {"getName", ( PyCFunction ) Object_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "Returns the name of the object"}, {"getParent", ( PyCFunction ) Object_getParent, METH_NOARGS, "Returns the object's parent object"}, @@ -695,7 +692,7 @@ triple."}, {"setMaterials", ( PyCFunction ) Object_setMaterials, METH_VARARGS, "Sets materials. The argument must be a list of valid material\n\ objects."}, - {"setName", ( PyCFunction ) Object_SetName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "Sets the name of the object"}, {"setSize", ( PyCFunction ) Object_setSize, METH_VARARGS, "Set the object's size. The first argument must be a vector\n\ @@ -866,7 +863,7 @@ PyObject *M_Object_Get( PyObject * self_unused, PyObject * args ) PyArg_ParseTuple( args, "|s", &name ); if( name != NULL ) { - object = GetObjectByName( name ); + object = ( Object * ) GetIdFromList( &( G.main->object ), name ); /* No object exists with the name specified in the argument name. */ if( !object ){ @@ -1319,16 +1316,6 @@ static PyObject *Object_getMaterials( BPy_Object * self, PyObject * args ) self->object->totcol, all ); } -static PyObject *Object_getName( BPy_Object * self ) -{ - return PyString_FromString( self->object->id.name + 2 ); -} - -static PyObject *Object_getLib( BPy_Object * self ) -{ - return EXPP_GetIdLib((ID *)self->object); -} - static PyObject *Object_getParent( BPy_Object * self ) { if( self->object->parent ) @@ -2620,20 +2607,6 @@ static PyObject *Object_setMaterials( BPy_Object * self, PyObject * args ) Py_RETURN_NONE; } -static int Object_setName( BPy_Object * self, PyObject * args ) -{ - char *name; - - name = PyString_AsString ( args ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected a string argument" ); - - rename_id( &self->object->id, name ); - - return 0; -} - static PyObject *Object_setSize( BPy_Object * self, PyObject * args ) { float sizex; @@ -3159,30 +3132,6 @@ struct Object *Object_FromPyObject( PyObject * py_obj ) } /*****************************************************************************/ -/* Description: Returns the object with the name specified by the argument */ -/* name. Note that the calling function has to remove the first */ -/* two characters of the object name. These two characters */ -/* specify the type of the object (OB, ME, WO, ...) */ -/* The function will return NULL when no object with the given */ -/* name is found. */ -/*****************************************************************************/ -Object *GetObjectByName( char *name ) -{ - Object *obj_iter; - - obj_iter = G.main->object.first; - while( obj_iter ) { - if( StringEqual( name, GetIdName( &( obj_iter->id ) ) ) ) { - return ( obj_iter ); - } - obj_iter = obj_iter->id.next; - } - - /* There is no object with the given name */ - return ( NULL ); -} - -/*****************************************************************************/ /* Function: Object_dealloc */ /* Description: This is a callback function for the BlenObject type. It is */ /* the destructor function. */ @@ -4499,24 +4448,6 @@ static int Object_setTracked( BPy_Object * self, PyObject * value ) return 0; } -static PyObject *Object_getUsers( BPy_Object * self ) -{ - return PyInt_FromLong( self->object->id.us ); -} - -static PyObject *Object_getFakeUser( BPy_Object * self ) -{ - if (self->object->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Object_setFakeUser( BPy_Object * self, PyObject * value ) -{ - return SetIdFakeUser(&self->object->id, value); -} - /* Localspace matrix */ static PyObject *Object_getMatrixLocal( BPy_Object * self ) @@ -4745,6 +4676,7 @@ static PyObject *Object_getRBHalfExtents( BPy_Object * self ) } static PyGetSetDef BPy_Object_getseters[] = { + GENERIC_LIB_GETSETATTR, {"LocX", (getter)getFloatAttr, (setter)setFloatAttr, "The X location coordinate of the object", @@ -4918,14 +4850,6 @@ static PyGetSetDef BPy_Object_getseters[] = { (getter)Object_getMatrixOldWorld, (setter)NULL, "old-type worldspace matrix (prior to Blender 2.34)", NULL}, - {"name", - (getter)Object_getName, (setter)Object_setName, - "Object data name", - NULL}, - {"lib", - (getter)Object_getLib, (setter)NULL, - "Objects linked library", - NULL}, {"oopsLoc", (getter)Object_getOopsLoc, (setter)Object_setOopsLoc, "Object OOPs location", @@ -4974,14 +4898,6 @@ static PyGetSetDef BPy_Object_getseters[] = { (getter)Object_getAllProperties, (setter)NULL, "The object's properties", NULL}, - {"users", - (getter)Object_getUsers, (setter)NULL, - "The number of object users", - NULL}, - {"fakeUser", - (getter)Object_getFakeUser, (setter)Object_setFakeUser, - "The fake user status of this object", - NULL}, {"piFalloff", (getter)getFloatAttr, (setter)setFloatAttrClamp, @@ -5533,12 +5449,6 @@ static PyObject *Object_SetDrawType( BPy_Object * self, PyObject * args ) (setter)Object_setDrawType ); } -static PyObject *Object_SetName( BPy_Object * self, PyObject * args ) -{ - return EXPP_setterWrapper( (void *)self, args, - (setter)Object_setName ); -} - static PyObject *Object_SetMatrix( BPy_Object * self, PyObject * args ) { return EXPP_setterWrapper( (void *)self, args, diff --git a/source/blender/python/api2_2x/Object.h b/source/blender/python/api2_2x/Object.h index 5424728728e..71cedfd654f 100644 --- a/source/blender/python/api2_2x/Object.h +++ b/source/blender/python/api2_2x/Object.h @@ -55,7 +55,6 @@ PyObject *Object_Init( void ); PyObject *Object_CreatePyObject( struct Object *obj ); Object *Object_FromPyObject( PyObject * py_obj ); int Object_CheckPyObject( PyObject * py_obj ); -Object *GetObjectByName( char *name ); void Object_updateDag( void *data ); diff --git a/source/blender/python/api2_2x/Scene.c b/source/blender/python/api2_2x/Scene.c index 5b65903a0c6..6502d3b23ce 100644 --- a/source/blender/python/api2_2x/Scene.c +++ b/source/blender/python/api2_2x/Scene.c @@ -125,8 +125,6 @@ struct PyMethodDef M_Scene_methods[] = { {NULL, NULL, 0, NULL} }; /*-----------------------BPy_Scene method declarations--------------------*/ -static PyObject *Scene_oldgetName( BPy_Scene * self ); -static PyObject *Scene_oldsetName( BPy_Scene * self, PyObject * arg ); static PyObject *Scene_getLayerList( BPy_Scene * self ); static PyObject *Scene_oldsetLayers( BPy_Scene * self, PyObject * arg ); static PyObject *Scene_copy( BPy_Scene * self, PyObject * arg ); @@ -158,9 +156,9 @@ static PyObject *SceneObSeq_CreatePyObject( BPy_Scene *self, Base *iter, int mod /*-----------------------BPy_Scene method def------------------------------*/ static PyMethodDef BPy_Scene_methods[] = { /* name, method, flags, doc */ - {"getName", ( PyCFunction ) Scene_oldgetName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return Scene name"}, - {"setName", ( PyCFunction ) Scene_oldsetName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(str) - Change Scene name"}, {"getLayers", ( PyCFunction ) Scene_getLayerList, METH_NOARGS, "() - Return a list of layers int indices which are set in this scene "}, @@ -230,66 +228,8 @@ static PyMethodDef BPy_Scene_methods[] = { /*****************************************************************************/ -/* Python BPy_Scene methods: */ +/* Python BPy_Scene getsetattr funcs: */ /*****************************************************************************/ -static PyObject *Scene_getName( BPy_Scene * self ) -{ - PyObject *attr; - SCENE_DEL_CHECK_PY(self); - - attr = PyString_FromString( self->scene->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Scene.name attribute" ) ); -} - -static int Scene_setName( BPy_Scene * self, PyObject * value ) -{ - char *name = NULL; - - SCENE_DEL_CHECK_INT(self); - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - rename_id( &self->scene->id, name ); - - return 0; -} - -static PyObject *Scene_getLib( BPy_Scene * self ) -{ - SCENE_DEL_CHECK_PY(self); - return EXPP_GetIdLib((ID *)self->scene); - -} - -static PyObject *Scene_getUsers( BPy_Scene * self ) -{ - SCENE_DEL_CHECK_PY(self); - return PyInt_FromLong( self->scene->id.us ); -} - -static PyObject *Scene_getFakeUser( BPy_Scene * self ) -{ - SCENE_DEL_CHECK_PY(self); - if (self->scene->id.flag & LIB_FAKEUSER) - Py_RETURN_TRUE; - else - Py_RETURN_FALSE; -} - -static int Scene_setFakeUser( BPy_Scene * self, PyObject * value ) -{ - SCENE_DEL_CHECK_INT(self); - return SetIdFakeUser(&self->scene->id, value); -} - static PyObject *Scene_getLayerMask( BPy_Scene * self ) { SCENE_DEL_CHECK_PY(self); @@ -447,36 +387,11 @@ static PyObject *Scene_getObjects( BPy_Scene *self) return SceneObSeq_CreatePyObject(self, NULL, 0); } -static PyObject *Scene_GetProperties(BPy_Scene * self) -{ - SCENE_DEL_CHECK_PY(self); - return BPy_Wrap_IDProperty( (ID*)self->scene, IDP_GetProperties((ID*)self->scene, 1), NULL ); -} - /*****************************************************************************/ /* Python attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Scene_getseters[] = { - {"name", - (getter)Scene_getName, (setter)Scene_setName, - "Scene name", - NULL}, - {"lib", - (getter)Scene_getLib, (setter)NULL, - "Scenes external library path", - NULL}, - {"users", - (getter)Scene_getUsers, (setter)NULL, - "Scenes user count", - NULL}, - {"fakeUser", - (getter)Scene_getFakeUser, (setter)Scene_setFakeUser, - "Scene fake user state", - NULL}, - {"properties", - (getter)Scene_GetProperties, (setter)NULL, - "Scene properties", - NULL}, + GENERIC_LIB_GETSETATTR, {"Layer", (getter)Scene_getLayerMask, (setter)Scene_setLayerMask, "Scene layer bitmask", @@ -802,88 +717,11 @@ static PyObject *M_Scene_Unlink( PyObject * self, PyObject * args ) /* DEPRECATE ME !!! */ /*-----------------------BPy_Scene function defintions-------------------*/ -/*-----------------------Scene.getName()---------------------------------*/ -static PyObject *Scene_oldgetName( BPy_Scene * self ) -{ - PyObject *attr; - - SCENE_DEL_CHECK_PY(self); - - attr= PyString_FromString( self->scene->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Scene.name attribute" ) ); -} - -/*-----------------------Scene.setName()---------------------------------*/ -static PyObject *Scene_oldsetName( BPy_Scene * self, PyObject * args ) -{ - char *name; - - SCENE_DEL_CHECK_PY(self); - - if( !PyArg_ParseTuple( args, "s", &name ) ) - return ( EXPP_ReturnPyObjError( PyExc_TypeError, - "expected string argument" ) ); - - rename_id( &self->scene->id, name ); - - Py_RETURN_NONE; -} /*-----------------------Scene.setLayers()---------------------------------*/ static PyObject *Scene_oldsetLayers( BPy_Scene * self, PyObject * args ) { - PyObject *list = NULL, *item = NULL; - int layers = 0, val, i, len_list; - - SCENE_DEL_CHECK_PY(self); - - if( !PyArg_ParseTuple( args, "O!", &PyList_Type, &list ) ) - return ( EXPP_ReturnPyObjError( PyExc_TypeError, - "expected a list of integers in the range [1, 20]" ) ); - - len_list = PyList_Size(list); - - if (len_list == 0) - return ( EXPP_ReturnPyObjError( PyExc_AttributeError, - "list can't be empty, at least one layer must be set" ) ); - - for( i = 0; i < len_list; i++ ) { - item = PyList_GetItem( list, i ); - if( !PyInt_Check( item ) ) - return EXPP_ReturnPyObjError - ( PyExc_AttributeError, - "list must contain only integer numbers" ); - - val = ( int ) PyInt_AsLong( item ); - if( val < 1 || val > 20 ) - return EXPP_ReturnPyObjError - ( PyExc_AttributeError, - "layer values must be in the range [1, 20]" ); - - layers |= 1 << ( val - 1 ); - } - self->scene->lay = layers; - - if (G.vd && (self->scene == G.scene)) { - int bit = 0; - G.vd->lay = layers; - - while( bit < 20 ) { - val = 1 << bit; - if( layers & val ) { - G.vd->layact = val; - break; - } - bit++; - } - } - - Py_RETURN_NONE; + return EXPP_setterWrapper( (void *)self, args, (setter)Scene_setLayerList ); } /* END DEPRECATE CODE */ diff --git a/source/blender/python/api2_2x/Text.c b/source/blender/python/api2_2x/Text.c index 8e65e1a775c..6d82340a775 100644 --- a/source/blender/python/api2_2x/Text.c +++ b/source/blender/python/api2_2x/Text.c @@ -95,10 +95,8 @@ static int Text_IsLinked( BPy_Text * self ); /*****************************************************************************/ /* Python BPy_Text methods declarations: */ /*****************************************************************************/ -static PyObject *Text_getName( BPy_Text * self ); static PyObject *Text_getFilename( BPy_Text * self ); static PyObject *Text_getNLines( BPy_Text * self ); -static PyObject *Text_setName( BPy_Text * self, PyObject * args ); static PyObject *Text_clear( BPy_Text * self ); static PyObject *Text_write( BPy_Text * self, PyObject * args ); static PyObject *Text_set( BPy_Text * self, PyObject * args ); @@ -110,13 +108,13 @@ static PyObject *Text_makeCurrent( BPy_Text * self ); /*****************************************************************************/ static PyMethodDef BPy_Text_methods[] = { /* name, method, flags, doc */ - {"getName", ( PyCFunction ) Text_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return Text Object name"}, {"getFilename", ( PyCFunction ) Text_getFilename, METH_VARARGS, "() - Return Text Object filename"}, {"getNLines", ( PyCFunction ) Text_getNLines, METH_VARARGS, "() - Return number of lines in text buffer"}, - {"setName", ( PyCFunction ) Text_setName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(str) - Change Text Object name"}, {"clear", ( PyCFunction ) Text_clear, METH_NOARGS, "() - Clear Text buffer"}, @@ -381,17 +379,6 @@ PyObject *Text_CreatePyObject( Text * txt ) /*****************************************************************************/ /* Python BPy_Text methods: */ /*****************************************************************************/ -static PyObject *Text_getName( BPy_Text * self ) -{ - PyObject *attr = PyString_FromString( self->text->id.name + 2 ); - - if( attr ) - return attr; - - return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Text.name attribute" ); -} - static PyObject *Text_getFilename( BPy_Text * self ) { PyObject *attr; @@ -433,19 +420,6 @@ static PyObject *Text_getNLines( BPy_Text * self ) "couldn't get Text.nlines attribute" ); } -static PyObject *Text_setName( BPy_Text * self, PyObject * args ) -{ - char *name; - - if( !PyArg_ParseTuple( args, "s", &name ) ) - return ( EXPP_ReturnPyObjError( PyExc_TypeError, - "expected string argument" ) ); - - rename_id( &self->text->id, name ); - - Py_RETURN_NONE; -} - static PyObject *Text_clear( BPy_Text * self) { int oldstate; @@ -618,7 +592,7 @@ static int Text_setAttr( BPy_Text * self, char *name, PyObject * value ) "TextSetAttr: couldn't create PyTuple" ); if( strcmp( name, "name" ) == 0 ) - error = Text_setName( self, valtuple ); + error = GenericLib_setName_with_method( self, valtuple ); else { /* Error: no such member in the Text Data structure */ Py_DECREF( value ); Py_DECREF( valtuple ); diff --git a/source/blender/python/api2_2x/Texture.c b/source/blender/python/api2_2x/Texture.c index 830590aa189..2a0f4af45aa 100644 --- a/source/blender/python/api2_2x/Texture.c +++ b/source/blender/python/api2_2x/Texture.c @@ -389,7 +389,6 @@ struct PyMethodDef M_Texture_methods[] = { #if 0 GETFUNC( getExtend ); GETFUNC( getImage ); -GETFUNC( getName ); GETFUNC( getType ); GETFUNC( getSType ); GETFUNC( clearIpo ); @@ -402,7 +401,6 @@ SETFUNC( setAnimMontage ); GETFUNC( oldgetSType ); GETFUNC( oldgetType ); -GETFUNC(getProperties); GETFUNC( clearIpo ); GETFUNC( getAnimFrames ); GETFUNC( getAnimOffset ); @@ -423,7 +421,6 @@ GETFUNC( getImage ); GETFUNC( getIpo ); GETFUNC( getIScale ); GETFUNC( getLacunarity ); -GETFUNC( getName ); GETFUNC( getNoiseBasis ); GETFUNC( getNoiseDepth ); GETFUNC( getNoiseSize ); @@ -447,7 +444,6 @@ OLDSETFUNC( setFlags ); OLDSETFUNC( setImage ); OLDSETFUNC( setImageFlags ); OLDSETFUNC( setIpo ); -OLDSETFUNC( setName ); OLDSETFUNC( setNoiseBasis ); OLDSETFUNC( setSType ); OLDSETFUNC( setType ); @@ -470,7 +466,6 @@ SETFUNC( setImage ); SETFUNC( setIpo ); SETFUNC( setIScale ); SETFUNC( setLacunarity ); -SETFUNC( setName ); SETFUNC( setNoiseBasis ); SETFUNC( setNoiseDepth ); SETFUNC( setNoiseSize ); @@ -502,7 +497,7 @@ static PyMethodDef BPy_Texture_methods[] = { "() - Return Texture extend mode"}, {"getImage", ( PyCFunction ) Texture_getImage, METH_NOARGS, "() - Return Texture Image"}, - {"getName", ( PyCFunction ) Texture_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return Texture name"}, {"getSType", ( PyCFunction ) Texture_oldgetSType, METH_NOARGS, "() - Return Texture stype as string"}, @@ -522,7 +517,7 @@ static PyMethodDef BPy_Texture_methods[] = { "(Blender Image) - Set Texture Image"}, {"setImageFlags", ( PyCFunction ) Texture_oldsetImageFlags, METH_VARARGS, "(s,s,s,s,...) - Set Texture image flags"}, - {"setName", ( PyCFunction ) Texture_oldsetName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "(s) - Set Texture name"}, {"setSType", ( PyCFunction ) Texture_oldsetSType, METH_VARARGS, "(s) - Set Texture stype"}, @@ -541,9 +536,7 @@ static PyMethodDef BPy_Texture_methods[] = { /* Python Texture_Type attributes get/set structure: */ /*****************************************************************************/ static PyGetSetDef BPy_Texture_getseters[] = { - {"properties", - (getter)Texture_getProperties, NULL, - "Get this texture's ID Properties"}, + GENERIC_LIB_GETSETATTR, {"animFrames", (getter)Texture_getAnimFrames, (setter)Texture_setAnimFrames, "Number of frames of a movie to use", @@ -630,10 +623,6 @@ static PyGetSetDef BPy_Texture_getseters[] = { (getter)Texture_getLacunarity, (setter)Texture_setLacunarity, "Gap between succesive frequencies (for Musgrave textures)", NULL}, - {"name", - (getter)Texture_getName, (setter)Texture_setName, - "Texture data name", - NULL}, {"noiseBasis", (getter)Texture_getNoiseBasis, (setter)Texture_setNoiseBasis, "Noise basis type (wood, stucci, marble, clouds, Musgrave, distorted noise)", @@ -1332,12 +1321,6 @@ int Texture_CheckPyObject( PyObject * pyobj ) /* Python BPy_Texture methods: */ /*****************************************************************************/ -static PyObject *Texture_getProperties( BPy_Texture * self ) -{ - /*sanity check, we set parent property type to Group here*/ - return BPy_Wrap_IDProperty( (ID*)self->texture, IDP_GetProperties((ID*)self->texture, 1), NULL ); -} - static PyObject *Texture_getExtend( BPy_Texture * self ) { PyObject *attr = NULL; @@ -1365,17 +1348,6 @@ static PyObject *Texture_getImage( BPy_Texture * self ) Py_RETURN_NONE; } - -static PyObject *Texture_getName( BPy_Texture * self ) -{ - PyObject *attr = PyString_FromString( self->texture->id.name + 2 ); - if( !attr ) - return EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get Texture.name attribute" ); - - return attr; -} - static PyObject *Texture_oldgetSType( BPy_Texture * self ) { PyObject *attr = NULL; @@ -1635,23 +1607,6 @@ static int Texture_setImageFlags( BPy_Texture * self, PyObject * value, return 0; } -static int Texture_setName( BPy_Texture * self, PyObject * value ) -{ - char *name; - char buf[21]; - - name = PyString_AsString ( value ); - if( !name ) - return EXPP_ReturnIntError( PyExc_TypeError, - "expected string argument" ); - - PyOS_snprintf( buf, sizeof( buf ), "%s", name ); - - rename_id( &self->texture->id, buf ); - - return 0; -} - static int Texture_setNoiseDepth( BPy_Texture * self, PyObject * value ) { short max = EXPP_TEX_NOISEDEPTH_MAX; @@ -2453,12 +2408,6 @@ static PyObject *Texture_oldsetImage( BPy_Texture * self, PyObject * args ) (setter)Texture_setImage ); } -static PyObject *Texture_oldsetName( BPy_Texture * self, PyObject * args ) -{ - return EXPP_setterWrapper( (void *)self, args, - (setter)Texture_setName ); -} - static PyObject *Texture_oldsetIpo( BPy_Texture * self, PyObject * args ) { return EXPP_setterWrapper ( (void *)self, args, (setter)Texture_setIpo ); diff --git a/source/blender/python/api2_2x/World.c b/source/blender/python/api2_2x/World.c index 50d7c561d80..a887d321001 100644 --- a/source/blender/python/api2_2x/World.c +++ b/source/blender/python/api2_2x/World.c @@ -73,8 +73,6 @@ static PyObject *World_getIpo( BPy_World * self ); static PyObject *World_setIpo( BPy_World * self, PyObject * args ); static PyObject *World_clearIpo( BPy_World * self ); static PyObject *World_insertIpoKey( BPy_World * self, PyObject * args ); -static PyObject *World_getName( BPy_World * self ); -static PyObject *World_setName( BPy_World * self, PyObject * args ); static PyObject *World_getMode( BPy_World * self ); static PyObject *World_setMode( BPy_World * self, PyObject * args ); static PyObject *World_getSkytype( BPy_World * self ); @@ -169,9 +167,9 @@ static PyMethodDef BPy_World_methods[] = { "() - Change this World's ipo"}, {"clearIpo", ( PyCFunction ) World_clearIpo, METH_VARARGS, "() - Unlink Ipo from this World"}, - {"getName", ( PyCFunction ) World_getName, METH_NOARGS, + {"getName", ( PyCFunction ) GenericLib_getName, METH_NOARGS, "() - Return World Data name"}, - {"setName", ( PyCFunction ) World_setName, METH_VARARGS, + {"setName", ( PyCFunction ) GenericLib_setName_with_method, METH_VARARGS, "() - Set World Data name"}, {"getMode", ( PyCFunction ) World_getMode, METH_NOARGS, "() - Return World Data mode"}, @@ -502,43 +500,6 @@ static PyObject *World_clearIpo( BPy_World * self ) } /** - * \brief World PyMethod getName - * - * \return string: The World Data name. - */ - -static PyObject *World_getName( BPy_World * self ) -{ - PyObject *attr = PyString_FromString( self->world->id.name + 2 ); - - if( attr ) - return attr; - - return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, - "couldn't get World.name attribute" ) ); -} - -/** - * \brief World PyMethod setName - * \param name - string: The new World Data name. - */ - -static PyObject *World_setName( BPy_World * self, PyObject * args ) -{ - char *name = 0; - if( !PyArg_ParseTuple( args, "s", &name ) ) - return ( EXPP_ReturnPyObjError - ( PyExc_TypeError, "expected string argument" ) ); - rename_id( &self->world->id, name ); - - Py_RETURN_NONE; -} - - - - - -/** * \brief World PyMethod getSkytype * * \return int : The World Data skytype. @@ -935,7 +896,7 @@ static PyObject *World_GetAttr( BPy_World * self, char *name ) { if( strcmp( name, "name" ) == 0 ) - return World_getName( self ); + return GenericLib_getName( self ); if( strcmp( name, "lib" ) == 0 ) return EXPP_GetIdLib((ID *)self->world); if( strcmp( name, "skytype" ) == 0 ) @@ -975,7 +936,7 @@ static int World_SetAttr( BPy_World * self, char *name, PyObject * value ) return EXPP_ReturnIntError( PyExc_MemoryError, "WorldSetAttr: couldn't parse args" ); else if( strcmp( name, "name" ) == 0 ) - error = World_setName( self, valtuple ); + error = GenericLib_setName_with_method( self, valtuple ); else if( strcmp( name, "skytype" ) == 0 ) error = World_setSkytype( self, valtuple ); else if( strcmp( name, "mode" ) == 0 ) @@ -1087,29 +1048,6 @@ World *World_FromPyObject( PyObject * py_obj ) } -/*****************************************************************************/ -/* Description: Returns the object with the name specified by the argument */ -/* name. Note that the calling function has to remove the first */ -/* two characters of the object name. These two characters */ -/* specify the type of the object (OB, ME, WO, ...) */ -/* The function will return NULL when no object with the given */ -/* name is found. */ -/*****************************************************************************/ -World *GetWorldByName( char *name ) -{ - World *world_iter; - - world_iter = G.main->world.first; - while( world_iter ) { - if( StringEqual( name, GetIdName( &( world_iter->id ) ) ) ) { - return ( world_iter ); - } - world_iter = world_iter->id.next; - } - - /* There is no object with the given name */ - return ( NULL ); -} /* * World_insertIpoKey() * inserts World IPO key for ZENITH,HORIZON,MIST,STARS,OFFSET,SIZE diff --git a/source/blender/python/api2_2x/World.h b/source/blender/python/api2_2x/World.h index eaeaedfcd61..929d13a4ee7 100644 --- a/source/blender/python/api2_2x/World.h +++ b/source/blender/python/api2_2x/World.h @@ -55,6 +55,5 @@ PyObject *World_Init( void ); PyObject *World_CreatePyObject( World * world ); World *World_FromPyObject( PyObject * pyobj ); int World_CheckPyObject( PyObject * pyobj ); -World *GetWorldByName( char *name ); #endif /* EXPP_WORLD_H */ diff --git a/source/blender/python/api2_2x/gen_utils.c b/source/blender/python/api2_2x/gen_utils.c index 894e7e55f23..59e2ea7c283 100644 --- a/source/blender/python/api2_2x/gen_utils.c +++ b/source/blender/python/api2_2x/gen_utils.c @@ -25,7 +25,8 @@ * * This is a new part of Blender. * - * Contributor(s): Michel Selten, Willian P. Germano, Alex Mole, Ken Hughes + * Contributor(s): Michel Selten, Willian P. Germano, Alex Mole, Ken Hughes, + * Campbell Barton * * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ @@ -974,3 +975,96 @@ int EXPP_dict_set_item_str( PyObject *dict, char *key, PyObject *value) Py_DECREF( value ); /* delete original */ return ret; } + + + + + + + +/* Generic get/set attrs */ +PyObject *GenericLib_getName( void *self ) +{ + ID *id = ((BPy_GenericLib *)self)->id; + if (!id) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "data has been removed" ) ); + return PyString_FromString( id->name + 2 ); +} + +int GenericLib_setName( void *self, PyObject *value ) +{ + ID *id = ((BPy_GenericLib *)self)->id; + char *name = NULL; + if (!id) return ( EXPP_ReturnIntError( PyExc_RuntimeError, "data has been removed" ) ); + + name = PyString_AsString ( value ); + if( !name ) + return EXPP_ReturnIntError( PyExc_TypeError, + "expected string argument" ); + + rename_id( &id, name ); + + return 0; +} + +PyObject *GenericLib_getFakeUser( void *self ) +{ + ID *id = ((BPy_GenericLib *)self)->id; + if (!id) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "data has been removed" ) ); + if (id->flag & LIB_FAKEUSER) + Py_RETURN_TRUE; + else + Py_RETURN_FALSE; +} + +int GenericLib_setFakeUser( void *self, PyObject *value ) +{ + int param; + ID *id = ((BPy_GenericLib *)self)->id; + if (!id) return ( EXPP_ReturnIntError( PyExc_RuntimeError, "data has been removed" ) ); + + param = PyObject_IsTrue( value ); + if( param == -1 ) + return EXPP_ReturnIntError( PyExc_TypeError, + "expected int argument in range [0,1]" ); + + if (param) { + if (!(id->flag & LIB_FAKEUSER)) { + id->flag |= LIB_FAKEUSER; + id_us_plus(id); + } + } else { + if (id->flag & LIB_FAKEUSER) { + id->flag &= ~LIB_FAKEUSER; + id->us--; + } + } +} + +/* read only */ +PyObject *GenericLib_getLib( void *self ) +{ + ID *id = ((BPy_GenericLib *)self)->id; + if (!id) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "data has been removed" ) ); + return EXPP_GetIdLib(id); +} + +PyObject *GenericLib_getUsers( void *self ) +{ + ID *id = ((BPy_GenericLib *)self)->id; + if (!id) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "data has been removed" ) ); + return PyInt_FromLong(id->us); +} + +PyObject *GenericLib_getProperties( void *self ) +{ + ID *id = ((BPy_GenericLib *)self)->id; + if (!id) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "data has been removed" ) ); + return BPy_Wrap_IDProperty( id, IDP_GetProperties(id, 1), NULL ); +} + +/* use for any.setName("name")*/ +PyObject * GenericLib_setName_with_method( void *self, PyObject *args ) +{ + return EXPP_setterWrapper( (void *)self, args, (setter)GenericLib_setName ); +} + diff --git a/source/blender/python/api2_2x/gen_utils.h b/source/blender/python/api2_2x/gen_utils.h index f464e626390..2ad7a9843d9 100644 --- a/source/blender/python/api2_2x/gen_utils.h +++ b/source/blender/python/api2_2x/gen_utils.h @@ -159,5 +159,53 @@ void EXPP_allqueue(unsigned short event, short val); /* helper to keep dictionaries from causing memory leaks */ int EXPP_dict_set_item_str( PyObject *dict, char *key, PyObject *value); -#endif /* EXPP_gen_utils_h */ + + + +/* Dummy struct for getting the ID from a libdata BPyObject */ +typedef struct { + PyObject_HEAD /* required python macro */ + ID *id; +} BPy_GenericLib; + + + +/* ID functions for all libdata */ +#define GENERIC_LIB_GETSETATTR \ + {"name",\ + (getter)GenericLib_getName, (setter)GenericLib_setName,\ + "name",\ + NULL},\ + {"lib",\ + (getter)GenericLib_getLib, (setter)NULL,\ + "external library path",\ + NULL},\ + {"users",\ + (getter)GenericLib_getUsers, (setter)NULL,\ + "user count",\ + NULL},\ + {"fakeUser",\ + (getter)GenericLib_getFakeUser, (setter)GenericLib_setFakeUser,\ + "fake user state",\ + NULL},\ + {"properties",\ + (getter)GenericLib_getProperties, (setter)NULL,\ + "properties",\ + NULL} + + + + +int GenericLib_setName( void *self, PyObject *value ); +PyObject *GenericLib_getName( void *self ); +PyObject *GenericLib_getFakeUser( void *self ); +int GenericLib_setFakeUser( void *self, PyObject *value ); +PyObject *GenericLib_getLib( void *self ); +PyObject *GenericLib_getUsers( void *self ); +PyObject *GenericLib_getProperties( void *self ); + +/* use this for oldstyle somedata.getName("name") */ +PyObject * GenericLib_setName_with_method( void *self, PyObject *value ); + +#endif /* EXPP_gen_utils_h */ |