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 | |
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.
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 */ |