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:
authorWillian Padovani Germano <wpgermano@gmail.com>2005-04-21 23:44:52 +0400
committerWillian Padovani Germano <wpgermano@gmail.com>2005-04-21 23:44:52 +0400
commit589ce4a005ce16c5a628cd51819e20623a23c891 (patch)
tree111a9dc91ad3f1843694d47aaf8eb66c1358820d /source/blender/python/api2_2x/Window.c
parentc5214c15716715cd513e1d2b61433784eb64b617 (diff)
BPython:
- based on a request by Campbell (he also provided a patch for scene.Layer) access to layers was improved a little, keeping the old method (ob.Layers is a bitmask) and adding the nicer one (ob.layers is a list of ints). Done for objects and scenes. House-cleaning: .Layer was renamed to .Layers (actually just using strncmp instead of strcmp, so both work, same done for Window.ViewLayers). - finally committing patch by Ken Hughes to let .clearScriptLinks() accept a parameter (list of strings) to clear only specified texts. - doc updates and fixes (JMS reported a problem in nmesh.transform() example code). Thanks all who contributed.
Diffstat (limited to 'source/blender/python/api2_2x/Window.c')
-rw-r--r--source/blender/python/api2_2x/Window.c46
1 files changed, 29 insertions, 17 deletions
diff --git a/source/blender/python/api2_2x/Window.c b/source/blender/python/api2_2x/Window.c
index b8998a943ac..64ce039d063 100644
--- a/source/blender/python/api2_2x/Window.c
+++ b/source/blender/python/api2_2x/Window.c
@@ -90,7 +90,7 @@ static PyObject *M_Window_GetPerspMatrix( PyObject * self );
static PyObject *M_Window_FileSelector( PyObject * self, PyObject * args );
static PyObject *M_Window_ImageSelector( PyObject * self, PyObject * args );
static PyObject *M_Window_EditMode( PyObject * self, PyObject * args );
-static PyObject *M_Window_ViewLayer( PyObject * self, PyObject * args );
+static PyObject *M_Window_ViewLayers( PyObject * self, PyObject * args );
static PyObject *M_Window_CameraView( PyObject * self, PyObject * args );
static PyObject *M_Window_QTest( PyObject * self );
static PyObject *M_Window_QRead( PyObject * self );
@@ -178,7 +178,7 @@ Returns the current status. This function is mostly useful to leave\n\
edit mode before applying changes to a mesh (otherwise the changes will\n\
be lost) and then returning to it upon leaving.";
-static char M_Window_ViewLayer_doc[] =
+static char M_Window_ViewLayers_doc[] =
"(layers = []) - Get/set active layers in all 3d View windows.\n\
() - Make no changes, only return currently visible layers.\n\
(layers = []) - a list of integers, each in the range [1, 20].\n\
@@ -317,8 +317,11 @@ struct PyMethodDef M_Window_methods[] = {
M_Window_GetPerspMatrix_doc},
{"EditMode", ( PyCFunction ) M_Window_EditMode, METH_VARARGS,
M_Window_EditMode_doc},
- {"ViewLayer", ( PyCFunction ) M_Window_ViewLayer, METH_VARARGS,
- M_Window_ViewLayer_doc},
+ {"ViewLayers", ( PyCFunction ) M_Window_ViewLayers, METH_VARARGS,
+ M_Window_ViewLayers_doc},
+ /* typo, deprecate someday: */
+ {"ViewLayer", ( PyCFunction ) M_Window_ViewLayers, METH_VARARGS,
+ M_Window_ViewLayers_doc},
{"CameraView", ( PyCFunction ) M_Window_CameraView, METH_VARARGS,
M_Window_CameraView_doc},
{"QTest", ( PyCFunction ) M_Window_QTest, METH_NOARGS,
@@ -882,15 +885,15 @@ static PyObject *M_Window_EditMode( PyObject * self, PyObject * args )
return Py_BuildValue( "h", G.obedit ? 1 : 0 );
}
-static PyObject *M_Window_ViewLayer( PyObject * self, PyObject * args )
+static PyObject *M_Window_ViewLayers( PyObject * self, PyObject * args )
{
PyObject *item = NULL;
PyObject *list = NULL, *resl = NULL;
int val, i, bit = 0, layer = 0;
- if( !G.vd ) {
+ if( !G.scene ) {
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
- "this function can only be used after a 3d View has been initialized" );
+ "can't get pointer to global scene" );
}
if( !PyArg_ParseTuple( args, "|O!", &PyList_Type, &list ) )
@@ -898,7 +901,13 @@ static PyObject *M_Window_ViewLayer( PyObject * self, PyObject * args )
"expected nothing or a list of ints as argument" );
if( list ) {
- for( i = 0; i < PyList_Size( list ); i++ ) {
+ int len_list = PyList_Size(list);
+
+ if (len_list == 0)
+ return EXPP_ReturnPyObjError( PyExc_AttributeError,
+ "list can't be empty, at list one layer must be set" );
+
+ for( i = 0; i < len_list; i++ ) {
item = PyList_GetItem( list, i );
if( !PyInt_Check( item ) )
return EXPP_ReturnPyObjError
@@ -913,15 +922,18 @@ static PyObject *M_Window_ViewLayer( PyObject * self, PyObject * args )
layer |= 1 << ( val - 1 );
}
- G.vd->lay = layer;
-
- while( bit < 20 ) {
- val = 1 << bit;
- if( layer & val ) {
- G.vd->layact = val;
- break;
+ G.scene->lay = layer;
+ if (G.vd) {
+ G.vd->lay = layer;
+
+ while( bit < 20 ) {
+ val = 1 << bit;
+ if( layer & val ) {
+ G.vd->layact = val;
+ break;
+ }
+ bit++;
}
- bit++;
}
}
@@ -930,7 +942,7 @@ static PyObject *M_Window_ViewLayer( PyObject * self, PyObject * args )
return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
"couldn't create pylist!" ) );
- layer = G.vd->lay;
+ layer = G.scene->lay;
bit = 0;
while( bit < 20 ) {