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 04:07:28 +0300
committerCampbell Barton <ideasman42@gmail.com>2007-02-25 04:07:28 +0300
commit75147698e2b8765022097203b9bb1291a105f2d8 (patch)
treea74dc1f9874be70936a5faf73811c91e17ee99be /source/blender/python
parentf791672e76f90b360920c0d644d1f15f87dbd0e4 (diff)
Scene
* Moved to getsetattrs * added scene.users (get) * added scene.fakeUser (get/set) * added scene.world (get/set) * added scene.timeline (get) * added scene.render (get) * added scene.radiosity (get) * added scene.objects.camera (get/set) Group * added properties gen_utils * made getScriptLinks work as documented, return an empty list rather then None. header files, noted libdata after PyObject as a requirement. Others, * Deprecate prints for older functionality EpyDocs still need updating.
Diffstat (limited to 'source/blender/python')
-rw-r--r--source/blender/python/api2_2x/Curve.h2
-rw-r--r--source/blender/python/api2_2x/Font.h2
-rwxr-xr-xsource/blender/python/api2_2x/Group.c37
-rwxr-xr-xsource/blender/python/api2_2x/Group.h2
-rw-r--r--source/blender/python/api2_2x/Image.h2
-rw-r--r--source/blender/python/api2_2x/Ipo.h2
-rw-r--r--source/blender/python/api2_2x/Key.h2
-rw-r--r--source/blender/python/api2_2x/Lamp.h2
-rw-r--r--source/blender/python/api2_2x/Lattice.h2
-rw-r--r--source/blender/python/api2_2x/MTex.h3
-rw-r--r--source/blender/python/api2_2x/Material.h2
-rw-r--r--source/blender/python/api2_2x/Metaball.h2
-rw-r--r--source/blender/python/api2_2x/NLA.c3
-rw-r--r--source/blender/python/api2_2x/NLA.h2
-rw-r--r--source/blender/python/api2_2x/NMesh.h2
-rw-r--r--source/blender/python/api2_2x/Object.c9
-rw-r--r--source/blender/python/api2_2x/Object.h2
-rw-r--r--source/blender/python/api2_2x/Scene.c638
-rw-r--r--source/blender/python/api2_2x/Scene.h3
-rw-r--r--source/blender/python/api2_2x/SurfNurb.h2
-rw-r--r--source/blender/python/api2_2x/Text.h2
-rw-r--r--source/blender/python/api2_2x/Text3d.h2
-rw-r--r--source/blender/python/api2_2x/Texture.h2
-rw-r--r--source/blender/python/api2_2x/World.c7
-rw-r--r--source/blender/python/api2_2x/World.h2
-rw-r--r--source/blender/python/api2_2x/doc/Scene.py2
-rw-r--r--source/blender/python/api2_2x/gen_utils.c9
-rw-r--r--source/blender/python/api2_2x/sceneTimeLine.c2
28 files changed, 493 insertions, 256 deletions
diff --git a/source/blender/python/api2_2x/Curve.h b/source/blender/python/api2_2x/Curve.h
index 38e977adbdc..8fdf76781dc 100644
--- a/source/blender/python/api2_2x/Curve.h
+++ b/source/blender/python/api2_2x/Curve.h
@@ -43,7 +43,7 @@ extern PyTypeObject Curve_Type;
/* Python BPy_Curve structure definition */
typedef struct {
PyObject_HEAD /* required py macro */
- Curve * curve;
+ Curve * curve; /* libdata must be second */
/* pointer for iterator: does not point to owned memory */
Nurb *iter_pointer;
} BPy_Curve;
diff --git a/source/blender/python/api2_2x/Font.h b/source/blender/python/api2_2x/Font.h
index 807d4cbe373..097cbd47416 100644
--- a/source/blender/python/api2_2x/Font.h
+++ b/source/blender/python/api2_2x/Font.h
@@ -40,7 +40,7 @@ extern PyTypeObject Font_Type;
typedef struct {
PyObject_HEAD /* required py macro */
- VFont * font;
+ VFont * font; /* libdata must be second */
} BPy_Font;
/*------------------------------visible prototypes----------------------*/
diff --git a/source/blender/python/api2_2x/Group.c b/source/blender/python/api2_2x/Group.c
index 4fb3a4c099b..413f069305f 100755
--- a/source/blender/python/api2_2x/Group.c
+++ b/source/blender/python/api2_2x/Group.c
@@ -214,6 +214,20 @@ 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;
@@ -230,21 +244,6 @@ static int Group_setName( BPy_Group * self, PyObject * value )
return 0;
}
-
-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 PyObject *Group_getLib( BPy_Group * self )
{
GROUP_DEL_CHECK_PY(self);
@@ -273,6 +272,11 @@ static int Group_setFakeUser( BPy_Group * self, PyObject * value )
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 );
+}
/*****************************************************************************/
@@ -325,6 +329,9 @@ static PyGetSetDef BPy_Group_getseters[] = {
(getter)Group_getFakeUser, (setter)Group_setFakeUser,
"Groups fake user state",
NULL},
+ {"properties",
+ (getter)Group_getProperties, NULL,
+ "get the ID properties associated with this group"},
{"layers",
(getter)Group_getLayers, (setter)Group_setLayers,
"Number of group users",
diff --git a/source/blender/python/api2_2x/Group.h b/source/blender/python/api2_2x/Group.h
index 62f2ceb10b6..613a14908a9 100755
--- a/source/blender/python/api2_2x/Group.h
+++ b/source/blender/python/api2_2x/Group.h
@@ -48,7 +48,7 @@ extern PyTypeObject GroupObSeq_Type;
/*****************************************************************************/
typedef struct {
PyObject_HEAD /* required python macro */
- struct Group *group; /* Blender group type, can be NULL when unlinked */
+ struct Group *group; /* Blender group type, can be NULL when unlinkedm, libdata must be second */*/
} BPy_Group;
diff --git a/source/blender/python/api2_2x/Image.h b/source/blender/python/api2_2x/Image.h
index 70509a8f7f8..e5955e4df2e 100644
--- a/source/blender/python/api2_2x/Image.h
+++ b/source/blender/python/api2_2x/Image.h
@@ -42,7 +42,7 @@
/*****************************************************************************/
typedef struct {
PyObject_HEAD
- Image * image;
+ Image * image; /* libdata must be second */
} BPy_Image;
diff --git a/source/blender/python/api2_2x/Ipo.h b/source/blender/python/api2_2x/Ipo.h
index 95aa5a729a2..1be7b6bf54f 100644
--- a/source/blender/python/api2_2x/Ipo.h
+++ b/source/blender/python/api2_2x/Ipo.h
@@ -41,7 +41,7 @@
/*****************************************************************************/
typedef struct {
PyObject_HEAD /* required macro */
- Ipo * ipo;
+ Ipo * ipo; /* libdata must be second */
short iter;
short mtex;
} BPy_Ipo;
diff --git a/source/blender/python/api2_2x/Key.h b/source/blender/python/api2_2x/Key.h
index 10007e417d4..6def2944d89 100644
--- a/source/blender/python/api2_2x/Key.h
+++ b/source/blender/python/api2_2x/Key.h
@@ -47,7 +47,7 @@ extern PyTypeObject KeyBlock_Type;
typedef struct {
PyObject_HEAD /* required python macro */
- Key * key;
+ Key * key; /* libdata must be second */
/* Object *object;*/ /* for vertex grouping info, since it's stored on the object */
/*PyObject *keyBlock;*/
PyObject *ipo;
diff --git a/source/blender/python/api2_2x/Lamp.h b/source/blender/python/api2_2x/Lamp.h
index e96073be50e..9042ab12ed4 100644
--- a/source/blender/python/api2_2x/Lamp.h
+++ b/source/blender/python/api2_2x/Lamp.h
@@ -45,7 +45,7 @@ extern PyTypeObject Lamp_Type;
/* Python BPy_Lamp structure definition */
typedef struct {
PyObject_HEAD /* required py macro */
- Lamp * lamp;
+ Lamp * lamp; /* libdata must be second */
BPy_rgbTuple *color;
} BPy_Lamp;
diff --git a/source/blender/python/api2_2x/Lattice.h b/source/blender/python/api2_2x/Lattice.h
index 832c1973154..05d8d771193 100644
--- a/source/blender/python/api2_2x/Lattice.h
+++ b/source/blender/python/api2_2x/Lattice.h
@@ -43,7 +43,7 @@
/*****************************************************************************/
typedef struct {
PyObject_HEAD
- Lattice * Lattice;
+ Lattice * Lattice; /* libdata must be second */
} BPy_Lattice;
diff --git a/source/blender/python/api2_2x/MTex.h b/source/blender/python/api2_2x/MTex.h
index 484d7ba04ec..dfcd2cc00b8 100644
--- a/source/blender/python/api2_2x/MTex.h
+++ b/source/blender/python/api2_2x/MTex.h
@@ -42,7 +42,8 @@
/*****************************************************************************/
typedef struct {
- PyObject_HEAD MTex * mtex;
+ PyObject_HEAD
+ MTex * mtex;
} BPy_MTex;
extern PyTypeObject MTex_Type;
diff --git a/source/blender/python/api2_2x/Material.h b/source/blender/python/api2_2x/Material.h
index e49aaca1023..382bff552c7 100644
--- a/source/blender/python/api2_2x/Material.h
+++ b/source/blender/python/api2_2x/Material.h
@@ -43,7 +43,7 @@
/*****************************************************************************/
typedef struct {
PyObject_HEAD
- Material * material;
+ Material * material; /* libdata must be second */
BPy_rgbTuple *col, *amb, *spec, *mir;
} BPy_Material;
diff --git a/source/blender/python/api2_2x/Metaball.h b/source/blender/python/api2_2x/Metaball.h
index e2d37ed7706..af04b2099b8 100644
--- a/source/blender/python/api2_2x/Metaball.h
+++ b/source/blender/python/api2_2x/Metaball.h
@@ -45,7 +45,7 @@ extern PyTypeObject Metaball_Type;
/* Python BPy_Metaball structure definition */
typedef struct {
PyObject_HEAD /* required py macro */
- MetaBall * metaball;
+ MetaBall * metaball; /* libdata must be second */
} BPy_Metaball;
diff --git a/source/blender/python/api2_2x/NLA.c b/source/blender/python/api2_2x/NLA.c
index 61d5c447418..bcac2a3254d 100644
--- a/source/blender/python/api2_2x/NLA.c
+++ b/source/blender/python/api2_2x/NLA.c
@@ -515,8 +515,7 @@ PyObject *Action_CreatePyObject( struct bAction * act )
{
BPy_Action *blen_action;
- if(!act)
- return EXPP_incr_ret(Py_None);
+ if(!act) Py_RETURN_NONE;
blen_action =
( BPy_Action * ) PyObject_NEW( BPy_Action, &Action_Type );
diff --git a/source/blender/python/api2_2x/NLA.h b/source/blender/python/api2_2x/NLA.h
index 219e2f0aa8d..287499ab5e1 100644
--- a/source/blender/python/api2_2x/NLA.h
+++ b/source/blender/python/api2_2x/NLA.h
@@ -49,7 +49,7 @@ extern PyTypeObject ActionStrips_Type;
/** Python BPy_NLA structure definition. */
typedef struct {
PyObject_HEAD
- bAction * action;
+ bAction * action; /* libdata must be second */
} BPy_Action;
typedef struct {
diff --git a/source/blender/python/api2_2x/NMesh.h b/source/blender/python/api2_2x/NMesh.h
index 5c689f775b8..d623d737bfa 100644
--- a/source/blender/python/api2_2x/NMesh.h
+++ b/source/blender/python/api2_2x/NMesh.h
@@ -116,7 +116,7 @@ typedef struct {
typedef struct {
PyObject_HEAD /* required python macro */
- Mesh * mesh;
+ Mesh * mesh; /* libdata must be second */
Object *object; /* for vertex grouping info, since it's stored on the object */
PyObject *name;
PyObject *materials;
diff --git a/source/blender/python/api2_2x/Object.c b/source/blender/python/api2_2x/Object.c
index 1593fa2ed1e..6a88ba5bd9b 100644
--- a/source/blender/python/api2_2x/Object.c
+++ b/source/blender/python/api2_2x/Object.c
@@ -3121,10 +3121,8 @@ PyObject *Object_CreatePyObject( struct Object * obj )
{
BPy_Object *blen_object;
- if( !obj ) {
- Py_RETURN_NONE;
- }
-
+ if( !obj ) Py_RETURN_NONE;
+
blen_object =
( BPy_Object * ) PyObject_NEW( BPy_Object, &Object_Type );
@@ -4625,9 +4623,6 @@ static PyObject *get_obj_data( BPy_Object *self, int mesh )
break;
case ID_SCE:
break;
- case ID_TXT:
- data_object = Text_CreatePyObject( object->data );
- break;
case OB_FONT:
data_object = Text3d_CreatePyObject( object->data );
break;
diff --git a/source/blender/python/api2_2x/Object.h b/source/blender/python/api2_2x/Object.h
index 5d9951c13c3..5424728728e 100644
--- a/source/blender/python/api2_2x/Object.h
+++ b/source/blender/python/api2_2x/Object.h
@@ -47,7 +47,7 @@ extern PyTypeObject Object_Type;
/*****************************************************************************/
typedef struct {
PyObject_HEAD
- struct Object *object;
+ struct Object *object; /* libdata must be second */
short realtype;
} BPy_Object;
diff --git a/source/blender/python/api2_2x/Scene.c b/source/blender/python/api2_2x/Scene.c
index 5279142c03b..5b65903a0c6 100644
--- a/source/blender/python/api2_2x/Scene.c
+++ b/source/blender/python/api2_2x/Scene.c
@@ -67,6 +67,7 @@ struct View3D;
#include "Curve.h"
#include "NMesh.h"
#include "Mesh.h"
+#include "World.h"
#include "Lattice.h"
#include "Metaball.h"
#include "IDProp.h"
@@ -124,11 +125,10 @@ struct PyMethodDef M_Scene_methods[] = {
{NULL, NULL, 0, NULL}
};
/*-----------------------BPy_Scene method declarations--------------------*/
-static PyObject *Scene_getName( BPy_Scene * self );
-static PyObject *Scene_setName( BPy_Scene * self, PyObject * arg );
-static PyObject *Scene_getLayers( BPy_Scene * self );
-static PyObject *Scene_setLayers( BPy_Scene * self, PyObject * arg );
-static PyObject *Scene_setLayersMask( BPy_Scene * self, PyObject * arg );
+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 );
static PyObject *Scene_makeCurrent( BPy_Scene * self );
static PyObject *Scene_update( BPy_Scene * self, PyObject * args );
@@ -145,14 +145,11 @@ static PyObject *Scene_addScriptLink( BPy_Scene * self, PyObject * args );
static PyObject *Scene_clearScriptLinks( BPy_Scene * self, PyObject * args );
static PyObject *Scene_play( BPy_Scene * self, PyObject * args );
static PyObject *Scene_getTimeLine( BPy_Scene * self );
-static PyObject *Scene_getObjects( BPy_Scene * self );
/*internal*/
static void Scene_dealloc( BPy_Scene * self );
-static int Scene_setAttr( BPy_Scene * self, char *name, PyObject * v );
static int Scene_compare( BPy_Scene * a, BPy_Scene * b );
-static PyObject *Scene_getAttr( BPy_Scene * self, char *name );
static PyObject *Scene_repr( BPy_Scene * self );
/*object seq*/
@@ -161,13 +158,13 @@ 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_getName, METH_NOARGS,
+ {"getName", ( PyCFunction ) Scene_oldgetName, METH_NOARGS,
"() - Return Scene name"},
- {"setName", ( PyCFunction ) Scene_setName, METH_VARARGS,
+ {"setName", ( PyCFunction ) Scene_oldsetName, METH_VARARGS,
"(str) - Change Scene name"},
- {"getLayers", ( PyCFunction ) Scene_getLayers, METH_NOARGS,
+ {"getLayers", ( PyCFunction ) Scene_getLayerList, METH_NOARGS,
"() - Return a list of layers int indices which are set in this scene "},
- {"setLayers", ( PyCFunction ) Scene_setLayers, METH_VARARGS,
+ {"setLayers", ( PyCFunction ) Scene_oldsetLayers, METH_VARARGS,
"(layers) - Change layers which are set in this scene\n"
"(layers) - list of integers in the range [1, 20]."},
{"copy", ( PyCFunction ) Scene_copy, METH_VARARGS,
@@ -230,6 +227,289 @@ static PyMethodDef BPy_Scene_methods[] = {
"() - Get time line of this Scene"},
{NULL, NULL, 0, NULL}
};
+
+
+/*****************************************************************************/
+/* Python BPy_Scene methods: */
+/*****************************************************************************/
+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);
+ return PyInt_FromLong( self->scene->lay & ((1<<20)-1) );
+}
+
+static int Scene_setLayerMask( BPy_Scene * self, PyObject * value )
+{
+ int laymask = 0;
+
+ SCENE_DEL_CHECK_INT(self);
+
+ if (!PyInt_CheckExact(value)) {
+ return EXPP_ReturnIntError( PyExc_AttributeError,
+ "expected an integer (bitmask) as argument" );
+ }
+
+ laymask = PyInt_AsLong(value);
+
+ if (laymask <= 0 || laymask > (1<<20) - 1) /* binary: 1111 1111 1111 1111 1111 */
+ return EXPP_ReturnIntError( PyExc_AttributeError,
+ "bitmask must have from 1 up to 20 bits set");
+
+ self->scene->lay = laymask;
+ /* if this is the current scene then apply the scene layers value
+ * to the view layers value: */
+ if (G.vd && (self->scene == G.scene)) {
+ int val, bit = 0;
+ G.vd->lay = laymask;
+
+ while( bit < 20 ) {
+ val = 1 << bit;
+ if( laymask & val ) {
+ G.vd->layact = val;
+ break;
+ }
+ bit++;
+ }
+ }
+
+ return 0;
+}
+
+static PyObject *Scene_getLayerList( BPy_Scene * self )
+{
+ PyObject *laylist = PyList_New( 0 ), *item;
+ int layers, bit = 0, val = 0;
+
+ SCENE_DEL_CHECK_PY(self);
+
+ if( !laylist )
+ return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
+ "couldn't create pylist!" ) );
+
+ layers = self->scene->lay;
+
+ while( bit < 20 ) {
+ val = 1 << bit;
+ if( layers & val ) {
+ item = Py_BuildValue( "i", bit + 1 );
+ PyList_Append( laylist, item );
+ Py_DECREF( item );
+ }
+ bit++;
+ }
+ return laylist;
+}
+
+static int Scene_setLayerList( BPy_Scene * self, PyObject * value )
+{
+ PyObject *item = NULL;
+ int layers = 0, val, i, len_list;
+
+ SCENE_DEL_CHECK_INT(self);
+
+ if( !PySequence_Check( value ) )
+ return ( EXPP_ReturnIntError( PyExc_TypeError,
+ "expected a list of integers in the range [1, 20]" ) );
+
+ len_list = PySequence_Size(value);
+
+ if (len_list == 0)
+ return ( EXPP_ReturnIntError( PyExc_AttributeError,
+ "list can't be empty, at least one layer must be set" ) );
+
+ for( i = 0; i < len_list; i++ ) {
+ item = PySequence_GetItem( value, i );
+
+ if( !PyInt_Check( item ) ) {
+ Py_DECREF( item );
+ return EXPP_ReturnIntError
+ ( PyExc_AttributeError,
+ "list must contain only integer numbers" );
+ }
+
+ val = ( int ) PyInt_AsLong( item );
+ if( val < 1 || val > 20 )
+ return EXPP_ReturnIntError
+ ( 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++;
+ }
+ }
+
+ return 0;
+}
+
+static PyObject *Scene_getWorld( BPy_Scene * self )
+{
+ SCENE_DEL_CHECK_PY(self);
+
+ if (!self->scene->world)
+ Py_RETURN_NONE;
+ return World_CreatePyObject(self->scene->world);
+}
+
+static int Scene_setWorld( BPy_Scene * self, PyObject * value )
+{
+ World *world=NULL;
+
+ SCENE_DEL_CHECK_INT(self);
+
+ if (!BPy_World_Check(value))
+ return ( EXPP_ReturnIntError( PyExc_TypeError,
+ "expected a world object" ) );
+
+ world = World_FromPyObject(value);
+ /* If there is a world then it now has one less user */
+ if( self->scene->world )
+ self->scene->world->id.us--;
+ world->id.us++;
+ G.scene->world = world;
+ return 0;
+}
+
+/* accessed from scn.objects */
+static PyObject *Scene_getObjects( BPy_Scene *self)
+{
+ SCENE_DEL_CHECK_PY(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},
+ {"Layer",
+ (getter)Scene_getLayerMask, (setter)Scene_setLayerMask,
+ "Scene layer bitmask",
+ NULL},
+ {"layers",
+ (getter)Scene_getLayerList, (setter)Scene_setLayerList,
+ "Scene layer list",
+ NULL},
+ {"world",
+ (getter)Scene_getWorld, (setter)Scene_setWorld,
+ "Scene layer bitmask",
+ NULL},
+ {"timeline",
+ (getter)Scene_getTimeLine, (setter)NULL,
+ "Scenes timeline (read only)",
+ NULL},
+ {"render",
+ (getter)Scene_getRenderingContext, (setter)NULL,
+ "Scenes rendering context (read only)",
+ NULL},
+ {"radiosity",
+ (getter)Scene_getRadiosityContext, (setter)NULL,
+ "Scenes radiosity context (read only)",
+ NULL},
+ {"objects",
+ (getter)Scene_getObjects, (setter)NULL,
+ "Scene object iterator",
+ NULL},
+ {NULL,NULL,NULL,NULL,NULL} /* Sentinel */
+};
+
+
+
/*-----------------------BPy_Scene method def------------------------------*/
PyTypeObject Scene_Type = {
PyObject_HEAD_INIT( NULL )
@@ -239,22 +519,77 @@ PyTypeObject Scene_Type = {
0, /* tp_itemsize */
/* methods */
( destructor ) Scene_dealloc, /* tp_dealloc */
- 0, /* tp_print */
- ( getattrfunc ) Scene_getAttr, /* tp_getattr */
- ( setattrfunc ) Scene_setAttr, /* tp_setattr */
+ NULL, /* printfunc tp_print; */
+ NULL, /* getattrfunc tp_getattr; */
+ NULL, /* setattrfunc tp_setattr; */
( cmpfunc ) Scene_compare, /* tp_compare */
( reprfunc ) Scene_repr, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- 0, /* tp_as_hash */
- 0, 0, 0, 0, 0, 0,
- 0, /* tp_doc */
- 0, 0, 0, 0, 0, 0,
- BPy_Scene_methods, /* tp_methods */
- 0, /* tp_members */
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+
+ /* Method suites for standard classes */
+
+ NULL, /* PyNumberMethods *tp_as_number; */
+ NULL, /* PySequenceMethods *tp_as_sequence; */
+ NULL, /* PyMappingMethods *tp_as_mapping; */
+
+ /* More standard operations (here for binary compatibility) */
+
+ NULL, /* hashfunc tp_hash; */
+ NULL, /* ternaryfunc tp_call; */
+ NULL, /* reprfunc tp_str; */
+ NULL, /* getattrofunc tp_getattro; */
+ NULL, /* setattrofunc tp_setattro; */
+
+ /* Functions to access object as input/output buffer */
+ NULL, /* PyBufferProcs *tp_as_buffer; */
+
+ /*** Flags to define presence of optional/expanded features ***/
+ Py_TPFLAGS_DEFAULT, /* long tp_flags; */
+
+ NULL, /* char *tp_doc; Documentation string */
+ /*** Assigned meaning in release 2.0 ***/
+ /* call function for all accessible objects */
+ NULL, /* traverseproc tp_traverse; */
+
+ /* delete references to contained objects */
+ NULL, /* inquiry tp_clear; */
+
+ /*** Assigned meaning in release 2.1 ***/
+ /*** rich comparisons ***/
+ NULL, /* richcmpfunc tp_richcompare; */
+
+ /*** weak reference enabler ***/
+ 0, /* long tp_weaklistoffset; */
+
+ /*** Added in release 2.2 ***/
+ /* Iterators */
+ NULL, /* getiterfunc tp_iter; */
+ NULL, /* iternextfunc tp_iternext; */
+
+ /*** Attribute descriptor and subclassing stuff ***/
+ BPy_Scene_methods, /* struct PyMethodDef *tp_methods; */
+ NULL, /* struct PyMemberDef *tp_members; */
+ BPy_Scene_getseters, /* struct PyGetSetDef *tp_getset; */
+ NULL, /* struct _typeobject *tp_base; */
+ NULL, /* PyObject *tp_dict; */
+ NULL, /* descrgetfunc tp_descr_get; */
+ NULL, /* descrsetfunc tp_descr_set; */
+ 0, /* long tp_dictoffset; */
+ NULL, /* initproc tp_init; */
+ NULL, /* allocfunc tp_alloc; */
+ NULL, /* newfunc tp_new; */
+ /* Low-level free-memory routine */
+ NULL, /* freefunc tp_free; */
+ /* For PyObject_IS_GC */
+ NULL, /* inquiry tp_is_gc; */
+ NULL, /* PyObject *tp_bases; */
+ /* method resolution order */
+ NULL, /* PyObject *tp_mro; */
+ NULL, /* PyObject *tp_cache; */
+ NULL, /* PyObject *tp_subclasses; */
+ NULL, /* PyObject *tp_weaklist; */
+ NULL
};
+
/*-----------------------Scene module Init())-----------------------------*/
PyObject *Scene_Init( void )
{
@@ -283,91 +618,6 @@ static void Scene_dealloc( BPy_Scene * self )
PyObject_DEL( self );
}
-/*-----------------------getAttr----------------------------------------*/
-static PyObject *Scene_getAttr( BPy_Scene * self, char *name )
-{
- PyObject *attr = Py_None;
- SCENE_DEL_CHECK_PY(self);
-
- if( strcmp( name, "name" ) == 0 )
- attr = PyString_FromString( self->scene->id.name + 2 );
-
- else if ( strcmp( name, "properties" ) == 0 )
- return BPy_Wrap_IDProperty( (ID*)self->scene, IDP_GetProperties((ID*)self->scene, 1), NULL );
-
- else if ( strcmp( name, "lib" ) == 0 )
- return EXPP_GetIdLib((ID *)self->scene);
-
- /* accept both Layer (for compatibility with ob.Layer) and Layers */
- else if( strncmp( name, "Layer", 5 ) == 0 )
- attr = PyInt_FromLong( self->scene->lay & ((1<<20)-1) );
- /* Layers returns a bitmask, layers returns a list of integers */
- else if( strcmp( name, "layers") == 0)
- return Scene_getLayers(self);
- else if( strcmp( name, "objects") == 0)
- return Scene_getObjects(self);
-
- else if( strcmp( name, "__members__" ) == 0 )
- attr = Py_BuildValue( "[ssssss]", "name", "Layers", "layers", "objects", "properties", "lib");
-
- if( !attr )
- return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
- "couldn't create PyObject" ) );
-
- if( attr != Py_None )
- return attr; /* member attribute found, return it */
-
- /* not an attribute, search the methods table */
- return Py_FindMethod( BPy_Scene_methods, ( PyObject * ) self, name );
-}
-
-/*-----------------------setAttr----------------------------------------*/
-static int Scene_setAttr( BPy_Scene * self, char *name, PyObject * value )
-{
- PyObject *valtuple;
- PyObject *error = NULL;
-
- SCENE_DEL_CHECK_INT(self);
-
-/* We're playing a trick on the Python API users here. Even if they use
- * Scene.member = val instead of Scene.setMember(val), we end up using the
- * function anyway, since it already has error checking, clamps to the right
- * interval and updates the Blender Scene structure when necessary. */
-
-/* First we put "value" in a tuple, because we want to pass it to functions
- * that only accept PyTuples. Using "N" doesn't increment value's ref count */
- valtuple = Py_BuildValue( "(O)", value );
-
- if( !valtuple ) /* everything OK with our PyObject? */
- return EXPP_ReturnIntError( PyExc_MemoryError,
- "SceneSetAttr: couldn't create PyTuple" );
-
-/* Now we just compare "name" with all possible BPy_Scene member variables */
- if( strcmp( name, "name" ) == 0 )
- error = Scene_setName( self, valtuple );
- else if (strncmp(name, "Layer", 5) == 0)
- error = Scene_setLayersMask(self, valtuple);
- else if (strcmp(name, "layers") == 0)
- error = Scene_setLayers(self, valtuple);
-
- else { /* Error: no member with the given name was found */
- Py_DECREF( valtuple );
- return ( EXPP_ReturnIntError( PyExc_AttributeError, name ) );
- }
-
-/* valtuple won't be returned to the caller, so we need to DECREF it */
- Py_DECREF( valtuple );
-
- if( error != Py_None )
- return -1;
-
-/* Py_None was incref'ed by the called Scene_set* function. We probably
- * don't need to decref Py_None (!), but since Python/C API manual tells us
- * to treat it like any other PyObject regarding ref counting ... */
- Py_DECREF( Py_None );
- return 0; /* normal exit */
-}
-
/*-----------------------compare----------------------------------------*/
static int Scene_compare( BPy_Scene * a, BPy_Scene * b )
{
@@ -412,28 +662,6 @@ Scene *Scene_FromPyObject( PyObject * pyobj )
return ( ( BPy_Scene * ) pyobj )->scene;
}
-/*-----------------------GetSceneByName()-------------------------------*/
-/* 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. */
-Scene *GetSceneByName( char *name )
-{
- Scene *scene_iter;
-
- scene_iter = G.main->scene.first;
- while( scene_iter ) {
- if( StringEqual( name, GetIdName( &( scene_iter->id ) ) ) ) {
- return ( scene_iter );
- }
- scene_iter = scene_iter->id.next;
- }
-
- /* There is no object with the given name */
- return ( NULL );
-}
-
-
/*-----------------------Scene module function defintions---------------*/
/*-----------------------Scene.New()------------------------------------*/
static PyObject *M_Scene_New( PyObject * self, PyObject * args,
@@ -572,9 +800,10 @@ static PyObject *M_Scene_Unlink( PyObject * self, PyObject * args )
Py_RETURN_NONE;
}
+/* DEPRECATE ME !!! */
/*-----------------------BPy_Scene function defintions-------------------*/
/*-----------------------Scene.getName()---------------------------------*/
-static PyObject *Scene_getName( BPy_Scene * self )
+static PyObject *Scene_oldgetName( BPy_Scene * self )
{
PyObject *attr;
@@ -590,7 +819,7 @@ static PyObject *Scene_getName( BPy_Scene * self )
}
/*-----------------------Scene.setName()---------------------------------*/
-static PyObject *Scene_setName( BPy_Scene * self, PyObject * args )
+static PyObject *Scene_oldsetName( BPy_Scene * self, PyObject * args )
{
char *name;
@@ -605,34 +834,8 @@ static PyObject *Scene_setName( BPy_Scene * self, PyObject * args )
Py_RETURN_NONE;
}
-/*-----------------------Scene.getLayers()---------------------------------*/
-static PyObject *Scene_getLayers( BPy_Scene * self )
-{
- PyObject *laylist = PyList_New( 0 ), *item;
- int layers, bit = 0, val = 0;
-
- SCENE_DEL_CHECK_PY(self);
-
- if( !laylist )
- return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
- "couldn't create pylist!" ) );
-
- layers = self->scene->lay;
-
- while( bit < 20 ) {
- val = 1 << bit;
- if( layers & val ) {
- item = Py_BuildValue( "i", bit + 1 );
- PyList_Append( laylist, item );
- Py_DECREF( item );
- }
- bit++;
- }
- return laylist;
-}
-
/*-----------------------Scene.setLayers()---------------------------------*/
-static PyObject *Scene_setLayers( BPy_Scene * self, PyObject * args )
+static PyObject *Scene_oldsetLayers( BPy_Scene * self, PyObject * args )
{
PyObject *list = NULL, *item = NULL;
int layers = 0, val, i, len_list;
@@ -682,42 +885,8 @@ static PyObject *Scene_setLayers( BPy_Scene * self, PyObject * args )
Py_RETURN_NONE;
}
+/* END DEPRECATE CODE */
-/* only used by setAttr */
-static PyObject *Scene_setLayersMask(BPy_Scene *self, PyObject *args)
-{
- int laymask = 0;
-
- SCENE_DEL_CHECK_PY(self);
-
- if (!PyArg_ParseTuple(args , "i", &laymask)) {
- return EXPP_ReturnPyObjError( PyExc_AttributeError,
- "expected an integer (bitmask) as argument" );
- }
-
- if (laymask <= 0 || laymask > (1<<20) - 1) /* binary: 1111 1111 1111 1111 1111 */
- return EXPP_ReturnPyObjError( PyExc_AttributeError,
- "bitmask must have from 1 up to 20 bits set");
-
- self->scene->lay = laymask;
- /* if this is the current scene then apply the scene layers value
- * to the view layers value: */
- if (G.vd && (self->scene == G.scene)) {
- int val, bit = 0;
- G.vd->lay = laymask;
-
- while( bit < 20 ) {
- val = 1 << bit;
- if( laymask & val ) {
- G.vd->layact = val;
- break;
- }
- bit++;
- }
- }
-
- Py_RETURN_NONE;
-}
/*-----------------------Scene.copy()------------------------------------*/
static PyObject *Scene_copy( BPy_Scene * self, PyObject * args )
@@ -741,6 +910,8 @@ static PyObject *Scene_makeCurrent( BPy_Scene * self )
SCENE_DEL_CHECK_PY(self);
+ printf("scene.makeCurrent() deprecated!\n\tuse Blender.Main.scenes.active = scene instead\n");
+
if( scene && scene != G.scene) {
set_scene( scene );
scene_update_for_newframe(scene, scene->lay);
@@ -756,7 +927,6 @@ static PyObject *Scene_update( BPy_Scene * self, PyObject * args )
int full = 0;
SCENE_DEL_CHECK_PY(self);
-
if( !PyArg_ParseTuple( args, "|i", &full ) )
return EXPP_ReturnPyObjError( PyExc_TypeError,
"expected nothing or int (0 or 1) argument" );
@@ -789,6 +959,8 @@ static PyObject *Scene_link( BPy_Scene * self, PyObject * args )
SCENE_DEL_CHECK_PY(self);
+ printf("scene.link(ob) deprecated!\n\tuse scene.objects.link(ob) instead\n");
+
if( !PyArg_ParseTuple( args, "O!", &Object_Type, &bpy_obj ) )
return EXPP_ReturnPyObjError( PyExc_TypeError,
"expected Object argument" );
@@ -859,6 +1031,8 @@ static PyObject *Scene_unlink( BPy_Scene * self, PyObject * args )
SCENE_DEL_CHECK_PY(self);
+ printf("scene.unlink(ob) deprecated!\n\tuse scene.objects.unlink(ob) instead\n");
+
if( !PyArg_ParseTuple( args, "O!", &Object_Type, &bpy_obj ) )
return EXPP_ReturnPyObjError( PyExc_TypeError,
"expected Object as argument" );
@@ -888,6 +1062,8 @@ static PyObject *Scene_getChildren( BPy_Scene * self )
SCENE_DEL_CHECK_PY(self);
+ printf("scene.getChildren() deprecated!\n\tuse scene.objects instead\n");
+
base = scene->base.first;
while( base ) {
@@ -917,6 +1093,8 @@ static PyObject *Scene_getActiveObject(BPy_Scene *self)
SCENE_DEL_CHECK_PY(self);
+ printf("scene.getActiveObject() deprecated!\n\tuse scene.objects.active instead\n");
+
ob = ((scene->basact) ? (scene->basact->object) : 0);
if (ob) {
@@ -940,6 +1118,8 @@ static PyObject *Scene_getCurrentCamera( BPy_Scene * self )
Scene *scene = self->scene;
SCENE_DEL_CHECK_PY(self);
+
+ printf("scene.getCurrentCamera() deprecated!\n\tGet scene.objects.camera instead\n");
cam_obj = scene->camera;
@@ -963,6 +1143,8 @@ static PyObject *Scene_setCurrentCamera( BPy_Scene * self, PyObject * args )
SCENE_DEL_CHECK_PY(self);
+ printf("scene.setCurrentCamera(ob) deprecated!\n\tSet scene.objects.camera = ob instead\n");
+
if( !PyArg_ParseTuple( args, "O!", &Object_Type, &cam_obj ) )
return EXPP_ReturnPyObjError( PyExc_TypeError,
"expected Camera Object as argument" );
@@ -1114,12 +1296,6 @@ static PyObject *Scene_getTimeLine( BPy_Scene *self )
return (PyObject *)tm;
}
-/* accessed from scn.objects */
-static PyObject *Scene_getObjects( BPy_Scene *self)
-{
- SCENE_DEL_CHECK_PY(self);
- return SceneObSeq_CreatePyObject(self, NULL, 0);
-}
/************************************************************************
*
@@ -1588,6 +1764,58 @@ static int SceneObSeq_setActive(BPy_SceneObSeq *self, PyObject *value)
return 0;
}
+PyObject *SceneObSeq_getCamera(BPy_SceneObSeq *self)
+{
+ PyObject *pyob;
+ Object *ob;
+
+ SCENE_DEL_CHECK_PY(self->bpyscene);
+
+ if (self->mode!=EXPP_OBSEQ_NORMAL)
+ return (EXPP_ReturnPyObjError( PyExc_TypeError,
+ "cannot get camera from objects.selected or objects.context" ));
+
+ ob= self->bpyscene->scene->camera;
+ if (!ob)
+ Py_RETURN_NONE;
+
+ pyob = Object_CreatePyObject( ob );
+
+ if (!pyob)
+ return EXPP_ReturnPyObjError(PyExc_MemoryError,
+ "couldn't create new object wrapper!");
+
+ return pyob;
+}
+
+static int SceneObSeq_setCamera(BPy_SceneObSeq *self, PyObject *value)
+{
+ SCENE_DEL_CHECK_INT(self->bpyscene);
+
+ if (self->mode!=EXPP_OBSEQ_NORMAL)
+ return (EXPP_ReturnIntError( PyExc_TypeError,
+ "cannot set camera from objects.selected or objects.context" ));
+
+ if (value==Py_None) {
+ self->bpyscene->scene->camera= NULL;
+ return 0;
+ }
+
+ if (!BPy_Object_Check(value))
+ return (EXPP_ReturnIntError( PyExc_ValueError,
+ "Object or None types can only be assigned to camera!" ));
+
+ self->bpyscene->scene->camera= ((BPy_Object *)value)->object;
+
+ /* if this is the current scene, update its window now */
+ if( !G.background && self->bpyscene->scene == G.scene ) /* Traced a crash to redrawing while in background mode -Campbell */
+ copy_view3d_lock( REDRAW );
+
+/* XXX copy_view3d_lock(REDRAW) prints "bad call to addqueue: 0 (18, 1)".
+ * The same happens in bpython. */
+
+ return 0;
+}
static struct PyMethodDef BPy_SceneObSeq_methods[] = {
@@ -1650,6 +1878,10 @@ static PyGetSetDef SceneObSeq_getseters[] = {
(getter)SceneObSeq_getActive, (setter)SceneObSeq_setActive,
"active object",
NULL},
+ {"camera",
+ (getter)SceneObSeq_getCamera, (setter)SceneObSeq_setCamera,
+ "camera object",
+ NULL},
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
};
diff --git a/source/blender/python/api2_2x/Scene.h b/source/blender/python/api2_2x/Scene.h
index 4d45d849c6d..c390bb934dc 100644
--- a/source/blender/python/api2_2x/Scene.h
+++ b/source/blender/python/api2_2x/Scene.h
@@ -48,7 +48,7 @@ extern PyTypeObject SceneObSeq_Type;
/*---------------------------Python BPy_Scene structure definition----------*/
typedef struct {
PyObject_HEAD
- Scene * scene;
+ Scene * scene; /* libdata must be second */
} BPy_Scene;
/*---------------------------Python BPy_Scene visible prototypes-----------*/
/* Python Scene_Type helper functions needed by Blender (the Init function) and Object modules. */
@@ -67,6 +67,5 @@ PyObject *Scene_Init( void );
PyObject *Scene_CreatePyObject( Scene * scene );
/*Scene *Scene_FromPyObject( PyObject * pyobj );*/ /* not used yet */
int Scene_CheckPyObject( PyObject * pyobj );
-Scene *GetSceneByName( char *name );
#endif /* EXPP_SCENE_H */
diff --git a/source/blender/python/api2_2x/SurfNurb.h b/source/blender/python/api2_2x/SurfNurb.h
index 735c0f27cc7..c9f9beadeeb 100644
--- a/source/blender/python/api2_2x/SurfNurb.h
+++ b/source/blender/python/api2_2x/SurfNurb.h
@@ -42,7 +42,7 @@ extern PyTypeObject SurfNurb_Type;
/* Python BPy_SurfNurb structure definition */
typedef struct {
PyObject_HEAD /* required py macro */
- Nurb * nurb; /* pointer to Blender data */
+ Nurb * nurb; /* pointer to Blender data, libdata must be second */ */
/* iterator stuff */
/* internal ptrs to point data. do not free */
diff --git a/source/blender/python/api2_2x/Text.h b/source/blender/python/api2_2x/Text.h
index d4421c3b890..b40c3807a81 100644
--- a/source/blender/python/api2_2x/Text.h
+++ b/source/blender/python/api2_2x/Text.h
@@ -43,7 +43,7 @@ extern PyTypeObject Text_Type;
typedef struct {
PyObject_HEAD
- Text * text;
+ Text * text; /* libdata must be second */
} BPy_Text;
PyObject *Text_Init( void );
diff --git a/source/blender/python/api2_2x/Text3d.h b/source/blender/python/api2_2x/Text3d.h
index f57debdbe32..f767f10d9a2 100644
--- a/source/blender/python/api2_2x/Text3d.h
+++ b/source/blender/python/api2_2x/Text3d.h
@@ -39,7 +39,7 @@
#define BPy_Text3d_Check(v) ((v)->ob_type==&Text3d_Type)
typedef Curve Text3d;
-//prototypes
+/*prototypes*/
int Text3d_CheckPyObject( PyObject * py_obj );
PyObject *Text3d_Init( void );
struct Text3d *Text3d_FromPyObject( PyObject * py_obj );
diff --git a/source/blender/python/api2_2x/Texture.h b/source/blender/python/api2_2x/Texture.h
index d4fcd805ad1..b162dc4b2e9 100644
--- a/source/blender/python/api2_2x/Texture.h
+++ b/source/blender/python/api2_2x/Texture.h
@@ -44,7 +44,7 @@
typedef struct {
PyObject_HEAD
- Tex * texture;
+ Tex * texture; /* libdata must be second */
} BPy_Texture;
extern PyTypeObject Texture_Type;
diff --git a/source/blender/python/api2_2x/World.c b/source/blender/python/api2_2x/World.c
index 6400f3a716e..50d7c561d80 100644
--- a/source/blender/python/api2_2x/World.c
+++ b/source/blender/python/api2_2x/World.c
@@ -377,11 +377,12 @@ static PyObject *M_World_Get( PyObject * self, PyObject * args )
}
-
-
static PyObject *M_World_GetCurrent( PyObject * self )
{
BPy_World *w = NULL;
+
+ printf("Blender.World.GetCurrent() deprecated!\n\tuse Blender.Main.scenes.world instead\n");
+
if( !G.scene->world )
Py_RETURN_NONE;
@@ -876,6 +877,7 @@ static PyObject *World_setCurrent( BPy_World * self )
{
World *world = self->world;
/* If there is a world then it now has one less user */
+ printf("world.setCurrent() deprecated!\n\tuse Blender.Main.scenes.world=world instead\n");
if( G.scene->world )
G.scene->world->id.us--;
world->id.us++;
@@ -1068,7 +1070,6 @@ PyObject *World_CreatePyObject( struct World * world )
}
blen_object->world = world;
return ( ( PyObject * ) blen_object );
-
}
int World_CheckPyObject( PyObject * py_obj )
diff --git a/source/blender/python/api2_2x/World.h b/source/blender/python/api2_2x/World.h
index d085c3f28bb..eaeaedfcd61 100644
--- a/source/blender/python/api2_2x/World.h
+++ b/source/blender/python/api2_2x/World.h
@@ -41,7 +41,7 @@
/* Python BPy_World structure definition */
typedef struct {
PyObject_HEAD /* required py macro */
- World * world;
+ World * world; /* Libdata must be second */
} BPy_World;
extern PyTypeObject World_Type;
diff --git a/source/blender/python/api2_2x/doc/Scene.py b/source/blender/python/api2_2x/doc/Scene.py
index 7276c035e85..0ad018b2538 100644
--- a/source/blender/python/api2_2x/doc/Scene.py
+++ b/source/blender/python/api2_2x/doc/Scene.py
@@ -199,6 +199,7 @@ class Scene:
scripts, for example), it's probably better to use this
scene.GetChildren instead, since it will only access objects from this
particular scene.
+ @warn: Depricated! use scene.objects instead.
"""
def getActiveObject():
@@ -213,6 +214,7 @@ class Scene:
return the active object even when no objects are selected.
@rtype: Blender Object or None
@return: the active object or None if not available.
+ @warn: Depricated! use scene.objects.active instead.
"""
def getCurrentCamera():
diff --git a/source/blender/python/api2_2x/gen_utils.c b/source/blender/python/api2_2x/gen_utils.c
index 01cf7c461bc..894e7e55f23 100644
--- a/source/blender/python/api2_2x/gen_utils.c
+++ b/source/blender/python/api2_2x/gen_utils.c
@@ -453,15 +453,16 @@ PyObject *EXPP_getScriptLinks( ScriptLink * slink, PyObject * args,
char *eventname = NULL;
int i, event = 0;
- /* actually !scriptlink shouldn't happen ... */
- if( !slink || !slink->totscript )
- return EXPP_incr_ret( Py_None );
+ list = PyList_New( 0 );
if( !PyArg_ParseTuple( args, "s", &eventname ) )
return EXPP_ReturnPyObjError( PyExc_TypeError,
"expected event name (string) as argument" );
- list = PyList_New( 0 );
+ /* actually !scriptlink shouldn't happen ... */
+ if( !slink || !slink->totscript )
+ return list;
+
if( !list )
return EXPP_ReturnPyObjError( PyExc_MemoryError,
"couldn't create PyList!" );
diff --git a/source/blender/python/api2_2x/sceneTimeLine.c b/source/blender/python/api2_2x/sceneTimeLine.c
index 89c55acc352..07dca6e7cdb 100644
--- a/source/blender/python/api2_2x/sceneTimeLine.c
+++ b/source/blender/python/api2_2x/sceneTimeLine.c
@@ -64,7 +64,7 @@ static void TimeLine_dealloc (PyObject *self) {
static PyObject *TimeLine_repr (BPy_TimeLine *self) {
- return PyString_FromFormat ("TimeLine:)");
+ return PyString_FromFormat ("[TimeLine]");
}
static PyMethodDef BPy_TimeLine_methods[] = {