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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-02-25 10:36:50 +0300
committerCampbell Barton <ideasman42@gmail.com>2007-02-25 10:36:50 +0300
commit436e1697fdf07f5a17bcfbdde8b18e89e44e9cf1 (patch)
tree6e7695edfd05e95a01d4772f24afb84303a8ee0e
parente64b887fad611917916b2ce30bbcf2aa55593ea5 (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.
-rw-r--r--source/blender/python/api2_2x/Armature.c63
-rw-r--r--source/blender/python/api2_2x/Blender.c10
-rw-r--r--source/blender/python/api2_2x/Camera.c187
-rw-r--r--source/blender/python/api2_2x/Font.c61
-rwxr-xr-xsource/blender/python/api2_2x/Group.c116
-rwxr-xr-xsource/blender/python/api2_2x/Group.h1
-rw-r--r--source/blender/python/api2_2x/Image.c37
-rw-r--r--source/blender/python/api2_2x/Ipo.c88
-rw-r--r--source/blender/python/api2_2x/Lamp.c109
-rw-r--r--source/blender/python/api2_2x/Lamp.h1
-rw-r--r--source/blender/python/api2_2x/Lattice.c35
-rw-r--r--source/blender/python/api2_2x/Material.c146
-rw-r--r--source/blender/python/api2_2x/Mesh.c80
-rw-r--r--source/blender/python/api2_2x/Metaball.c73
-rw-r--r--source/blender/python/api2_2x/NLA.c48
-rw-r--r--source/blender/python/api2_2x/Object.c98
-rw-r--r--source/blender/python/api2_2x/Object.h1
-rw-r--r--source/blender/python/api2_2x/Scene.c172
-rw-r--r--source/blender/python/api2_2x/Text.c32
-rw-r--r--source/blender/python/api2_2x/Texture.c57
-rw-r--r--source/blender/python/api2_2x/World.c70
-rw-r--r--source/blender/python/api2_2x/World.h1
-rw-r--r--source/blender/python/api2_2x/gen_utils.c96
-rw-r--r--source/blender/python/api2_2x/gen_utils.h50
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 */