diff options
author | Maxime Curioni <maxime.curioni@gmail.com> | 2008-07-06 23:53:32 +0400 |
---|---|---|
committer | Maxime Curioni <maxime.curioni@gmail.com> | 2008-07-06 23:53:32 +0400 |
commit | 270184e1b2e98a00d9e7f5598084fe65943bf925 (patch) | |
tree | 1dafc3678a12ee187e4ab0a5e94efc7690213e0b /source/blender/python | |
parent | eda7cdc81dde901f0fbfee6e9c0b04031b212e69 (diff) | |
parent | a06a4663c4df9094acf5ab01e7407f379b137b51 (diff) |
soc-2008-mxcurioni: merge-repair with trunk rev 15456
Diffstat (limited to 'source/blender/python')
-rw-r--r-- | source/blender/python/BPY_extern.h | 3 | ||||
-rw-r--r-- | source/blender/python/BPY_interface.c | 97 | ||||
-rw-r--r-- | source/blender/python/api2_2x/Node.c | 352 | ||||
-rw-r--r-- | source/blender/python/api2_2x/doc/API_related.py | 6 |
4 files changed, 257 insertions, 201 deletions
diff --git a/source/blender/python/BPY_extern.h b/source/blender/python/BPY_extern.h index 41e8004e25b..f6a27b80733 100644 --- a/source/blender/python/BPY_extern.h +++ b/source/blender/python/BPY_extern.h @@ -84,7 +84,8 @@ extern "C" { void init_syspath( int first_time ); void syspath_append( char *dir ); void BPY_rebuild_syspath( void ); - + int BPY_path_update( void ); + int BPY_Err_getLinenumber( void ); const char *BPY_Err_getFilename( void ); diff --git a/source/blender/python/BPY_interface.c b/source/blender/python/BPY_interface.c index 88fc5265a50..226657655fa 100644 --- a/source/blender/python/BPY_interface.c +++ b/source/blender/python/BPY_interface.c @@ -428,19 +428,24 @@ void BPY_rebuild_syspath( void ) if(U.pythondir[0] != '\0' ) { char modpath[FILE_MAX]; int upyslen = strlen(U.pythondir); - + BLI_strncpy(dirpath, U.pythondir, FILE_MAX); + /* check if user pydir ends with a slash and, if so, remove the slash * (for eventual implementations of c library's stat function that might * not like it) */ - if (upyslen > 2) { /* avoids doing anything if dir == '//' */ - BLI_add_slash(U.pythondir); +#ifdef WIN32 + if (upyslen > 3) { +#else + if (upyslen > 1) { +#endif + if (dirpath[upyslen-1] == '\\' || dirpath[upyslen-1] == '/') { + dirpath[upyslen-1] = '\0'; + } } - BLI_strncpy(dirpath, U.pythondir, FILE_MAX); BLI_convertstringcode(dirpath, G.sce); syspath_append(dirpath); /* append to module search path */ - - BLI_make_file_string("/", modpath, dirpath, "bpymodules"); + BLI_join_dirfile( modpath, dirpath, "bpymodules" ); if (BLI_exists(modpath)) syspath_append(modpath); } @@ -455,6 +460,16 @@ void BPY_rebuild_syspath( void ) PyGILState_Release(gilstate); } +int BPY_path_update( void ) +{ + BPyMenu_RemoveAllEntries(); /* free old data */ + BPY_rebuild_syspath(); + if (BPyMenu_Init(1) == -1) { /* re-eval scripts registration in menus */ + return 0; + } + return 1; +} + /**************************************************************************** * Description: This function finishes Python initialization in Blender. @@ -622,11 +637,13 @@ int BPY_txt_do_python_Text( struct Text *text ) if( !strcmp( script->id.name + 2, text->id.name + 2 ) ) { /* if this text is already a running script, * just move to it: */ - SpaceScript *sc; - newspace( curarea, SPACE_SCRIPT ); - sc = curarea->spacedata.first; - sc->script = script; - return 1; + if (!G.background) { + SpaceScript *sc; + newspace( curarea, SPACE_SCRIPT ); + sc = curarea->spacedata.first; + sc->script = script; + return 1; + } } script = script->id.next; } @@ -764,7 +781,6 @@ int BPY_run_script(Script *script) Text *text = NULL; BPy_constant *info; int len; - char *buffer=NULL, *s; FILE *fp = NULL; @@ -845,7 +861,6 @@ int BPY_run_script(Script *script) printf("Oops - weakref dict\n"); free_libblock( &G.main->script, script ); ReleaseGlobalDictionary( py_dict ); - MEM_freeN( buffer ); PyGILState_Release(gilstate); return 0; } @@ -867,41 +882,41 @@ int BPY_run_script(Script *script) * 'FILE structs for different C libraries can be different and * incompatible'. * So now we load the script file data to a buffer */ - + char *buffer=NULL, *buffer_ofs=NULL, *b_to, *b_from; + fseek( fp, 0L, SEEK_END ); len = ftell( fp ); fseek( fp, 0L, SEEK_SET ); - buffer = MEM_mallocN( len + 2, "pyfilebuf" ); /* len+2 to add '\n\0' */ + buffer = buffer_ofs = MEM_mallocN( len + 2, "pyfilebuf" ); /* len+2 to add '\n\0' */ len = fread( buffer, 1, len, fp ); buffer[len] = '\n'; /* fix syntax error in files w/o eol */ buffer[len + 1] = '\0'; - - /* fast clean-up of dos cr/lf line endings: change '\r' to space */ - - /* we also have to check for line splitters: '\\' */ - /* to avoid possible syntax errors on dos files on win */ - /**/ - /* but first make sure we won't disturb memory below &buffer[0]: */ - if( *buffer == '\r' ) - *buffer = ' '; - - /* now handle the whole buffer */ - for( s = buffer + 1; *s != '\0'; s++ ) { - if( *s == '\r' ) { - if( *( s - 1 ) == '\\' ) { /* special case: long lines split with '\': */ - *( s - 1 ) = ' '; /* we write ' \', because '\ ' is a syntax error */ - *s = '\\'; - } else - *s = ' '; /* not a split line, just replace '\r' with ' ' */ + + + /* fast clean-up of dos cr/lf line endings, remove convert '\r\n's to '\n' */ + if (*buffer_ofs == '\r' && *(buffer_ofs+1) == '\n') { + buffer_ofs++; + } + b_from = b_to = buffer_ofs; + + while(*b_from != '\0') { + if (*b_from == '\r' && *( b_from+1 ) == '\n') { + b_from++; } + if (b_from != b_to) { + *b_to = *b_from; + } + b_to++; + b_from++; } - - fclose( fp ); + *b_to = '\0'; + /* done cleaning the string */ + fclose( fp ); - py_res = PyRun_String( buffer, Py_file_input, py_dict, py_dict ); + py_res = PyRun_String( buffer_ofs, Py_file_input, py_dict, py_dict ); MEM_freeN( buffer ); } @@ -926,10 +941,12 @@ int BPY_run_script(Script *script) /* special case: called from the menu in the Scripts window * we have to change sc->script pointer, since it'll be freed here.*/ - if( curarea->spacetype == SPACE_SCRIPT ) { - SpaceScript *sc = curarea->spacedata.first; - sc->script = G.main->script.first; /* can be null, which is ok ... */ - /* ... meaning no other script is running right now. */ + if (!G.background) { + if( curarea->spacetype == SPACE_SCRIPT ) { + SpaceScript *sc = curarea->spacedata.first; + sc->script = G.main->script.first; /* can be null, which is ok ... */ + /* ... meaning no other script is running right now. */ + } } } diff --git a/source/blender/python/api2_2x/Node.c b/source/blender/python/api2_2x/Node.c index 7d568c45c64..792b2331508 100644 --- a/source/blender/python/api2_2x/Node.c +++ b/source/blender/python/api2_2x/Node.c @@ -1110,91 +1110,153 @@ static PyObject *Node_GetInputMap(BPy_Node *self) { #define REFRACT_D 36 #define STRAND_D 37 -static PyObject *ShadeInput_getAttribute(BPy_ShadeInput *self, void *type) { - PyObject *obj = NULL; - if(self->shi) { - switch(GET_INT_FROM_POINTER(type)) { - case SURFACEVIEWVECTOR: - obj = Py_BuildValue("(fff)", self->shi->view[0], self->shi->view[1], self->shi->view[2]); - break; - case VIEWNORMAL: - obj = Py_BuildValue("(fff)", self->shi->vn[0], self->shi->vn[1], self->shi->vn[2]); - break; - case SURFACENORMAL: - obj = Py_BuildValue("(fff)", self->shi->facenor[0], self->shi->facenor[1], self->shi->facenor[2]); - break; - case GLOBALTEXTURE: - obj = Py_BuildValue("(fff)", self->shi->gl[0], self->shi->gl[1], self->shi->gl[2]); - break; - case TEXTURE: - obj = Py_BuildValue("(fff)", self->shi->lo[0], self->shi->lo[1], self->shi->lo[2]); - break; - case PIXEL: - obj = Py_BuildValue("(ii)", self->shi->xs, self->shi->ys); - break; - case COLOR: - obj = Py_BuildValue("(fff)", self->shi->r, self->shi->g, self->shi->b); - break; - case SPECULAR_COLOR: - obj = Py_BuildValue("(fff)", self->shi->specr, self->shi->specg, self->shi->specb); - break; - case MIRROR_COLOR: - obj = Py_BuildValue("(fff)", self->shi->mirr, self->shi->mirg, self->shi->mirb); - break; - case AMBIENT_COLOR: - obj = Py_BuildValue("(fff)", self->shi->ambr, self->shi->ambg, self->shi->ambb); - break; - case AMBIENT: - obj = PyFloat_FromDouble((double)(self->shi->amb)); - break; - case EMIT: - obj = PyFloat_FromDouble((double)(self->shi->emit)); - break; - case DISPLACE: - obj = Py_BuildValue("(fff)", self->shi->displace[0], self->shi->displace[1], self->shi->displace[2]); - break; - case STRAND: - obj = PyFloat_FromDouble((double)(self->shi->strandco)); - break; - case STRESS: - obj = PyFloat_FromDouble((double)(self->shi->stress)); - break; - case TANGENT: - obj = Py_BuildValue("(fff)", self->shi->tang[0], self->shi->tang[1], self->shi->tang[2]); - break; - case SURFACE_D: - obj = Py_BuildValue("(fff)(fff)", self->shi->dxco[0], self->shi->dxco[1], self->shi->dxco[2], self->shi->dyco[0], self->shi->dyco[1], self->shi->dyco[2]); - break; - case TEXTURE_D: - obj = Py_BuildValue("(fff)(fff)", self->shi->dxlo[0], self->shi->dxlo[1], self->shi->dxlo[2], self->shi->dylo[0], self->shi->dylo[1], self->shi->dylo[2]); - break; - case GLOBALTEXTURE_D: - obj = Py_BuildValue("(fff)(fff)", self->shi->dxgl[0], self->shi->dxgl[1], self->shi->dxgl[2], self->shi->dygl[0], self->shi->dygl[1], self->shi->dygl[2]); - break; - case REFLECTION_D: - obj = Py_BuildValue("(fff)(fff)", self->shi->dxref[0], self->shi->dxref[1], self->shi->dxref[2], self->shi->dyref[0], self->shi->dyref[1], self->shi->dyref[2]); - break; - case NORMAL_D: - obj = Py_BuildValue("(fff)(fff)", self->shi->dxno[0], self->shi->dxno[1], self->shi->dxno[2], self->shi->dyno[0], self->shi->dyno[1], self->shi->dyno[2]); - break; - case STICKY_D: - obj = Py_BuildValue("(fff)(fff)", self->shi->dxsticky[0], self->shi->dxsticky[1], self->shi->dxsticky[2], self->shi->dysticky[0], self->shi->dysticky[1], self->shi->dysticky[2]); - break; - case REFRACT_D: - obj = Py_BuildValue("(fff)(fff)", self->shi->dxrefract[0], self->shi->dxrefract[1], self->shi->dxrefract[2], self->shi->dyrefract[0], self->shi->dyrefract[1], self->shi->dyrefract[2]); - break; - case STRAND_D: - obj = Py_BuildValue("(ff)", self->shi->dxstrand, self->shi->dystrand); - break; - default: - break; - } - } +/* MACRO time: defining shi getters */ - if(!obj) { - Py_RETURN_NONE; - } - return obj; +/* a couple checks that we can redefine to nothing for a tiny performance + * gain */ + +#define SHI_CHECK_SHI\ + if (!self->shi)\ + return EXPP_ReturnPyObjError(PyExc_RuntimeError,\ + "no shade input data!"); + +#define SHI_CHECK_OB\ + if (!ob)\ + return EXPP_ReturnPyObjError(PyExc_RuntimeError,\ + "couldn't create vector object!"); + +/* for shi getters: */ + +#define SHI_GETATTR_f(name, var)\ +static PyObject *ShadeInput_get##name(BPy_ShadeInput *self, void *unused)\ +{\ + PyObject *ob = NULL;\ +\ + SHI_CHECK_SHI\ +\ + ob = PyFloat_FromDouble((double)(self->shi->var));\ +\ + SHI_CHECK_OB\ +\ + return ob;\ +} + +#define SHI_GETATTR_fvec(name, var, len)\ +static PyObject *ShadeInput_get##name(BPy_ShadeInput *self, void *unused)\ +{\ + PyObject *ob = NULL;\ +\ + SHI_CHECK_SHI\ +\ + ob = newVectorObject(self->shi->var, len, Py_NEW);\ +\ + SHI_CHECK_OB\ +\ + return ob;\ +} + +#define SHI_GETATTR_2fvec(name, v1, v2, len)\ +static PyObject *ShadeInput_get##name(BPy_ShadeInput *self, void *unused)\ +{\ + PyObject *ob = NULL;\ + PyObject *tuple = NULL;\ +\ + SHI_CHECK_SHI\ +\ + tuple = PyTuple_New(2);\ +\ + ob = newVectorObject(self->shi->v1, len, Py_NEW);\ + PyTuple_SET_ITEM(tuple, 0, ob);\ +\ + ob = newVectorObject(self->shi->v2, len, Py_NEW);\ + PyTuple_SET_ITEM(tuple, 1, ob);\ +\ + return tuple;\ +} + +#define SHI_GETATTR_3f(name, v1, v2, v3)\ +static PyObject *ShadeInput_get##name(BPy_ShadeInput *self, void *unused)\ +{\ + PyObject *ob = NULL;\ + float vec[3];\ +\ + SHI_CHECK_SHI\ +\ + vec[0] = self->shi->v1;\ + vec[1] = self->shi->v2;\ + vec[2] = self->shi->v3;\ +\ + ob = newVectorObject(vec, 3, Py_NEW);\ +\ + SHI_CHECK_OB\ +\ + return ob;\ +} + +/* float */ + +SHI_GETATTR_f(Ambient, amb); +SHI_GETATTR_f(Emit, emit); +SHI_GETATTR_f(Strand, strandco); +SHI_GETATTR_f(Stress, stress); + +/* 3 float vars */ + +SHI_GETATTR_3f(Color, r, g, b) +SHI_GETATTR_3f(ColorSpecular, specr, specg, specb) +SHI_GETATTR_3f(ColorMirror, mirr, mirg, mirb) +SHI_GETATTR_3f(ColorAmbient, ambr, ambg, ambb) + +/* float vector */ + +SHI_GETATTR_fvec(SurfaceViewVector, view, 3) +SHI_GETATTR_fvec(SurfaceNormal, facenor, 3) +SHI_GETATTR_fvec(ViewNormal, vn, 3) +SHI_GETATTR_fvec(TextureGlobal, gl, 3) +SHI_GETATTR_fvec(Texture, lo, 3) +SHI_GETATTR_fvec(Displace, displace, 3) +SHI_GETATTR_fvec(Tangent, tang, 3) + +/* two float vectors */ + +SHI_GETATTR_2fvec(SurfaceD, dxco, dyco, 3) +SHI_GETATTR_2fvec(TextureD, dxlo, dylo, 3) +SHI_GETATTR_2fvec(TextureGlobalD, dxgl, dygl, 3) +SHI_GETATTR_2fvec(ReflectionD, dxref, dyref, 3) +SHI_GETATTR_2fvec(NormalD, dxno, dyno, 3) +SHI_GETATTR_2fvec(StickyD, dxsticky, dysticky, 3) +SHI_GETATTR_2fvec(RefractD, dxrefract, dyrefract, 3) + +/* single cases (for now), not macros: */ + +static PyObject *ShadeInput_getPixel(BPy_ShadeInput *self, void *unused) +{ + PyObject *ob = NULL; + + SHI_CHECK_SHI + + ob = Py_BuildValue("(ii)", self->shi->xs, self->shi->ys); + + SHI_CHECK_OB + + return ob; +} + +static PyObject *ShadeInput_getStrandD(BPy_ShadeInput *self, void *unused) +{ + PyObject *ob = NULL; + float vec[2]; + + SHI_CHECK_SHI + + vec[0] = self->shi->dxstrand; + vec[1] = self->shi->dystrand; + + ob = newVectorObject(vec, 2, Py_NEW); + + SHI_CHECK_OB + + return ob; } static BPy_SockMap *Node_CreateOutputMap(bNode *node, bNodeStack **stack) { @@ -1256,101 +1318,77 @@ static PyGetSetDef BPy_Node_getseters[] = { static PyGetSetDef BPy_ShadeInput_getseters[] = { {"texture", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the current texture coordinate (tuple)", - (void*)TEXTURE}, + (getter)ShadeInput_getTexture, (setter)NULL, + "Get the current texture coordinate (3-vector)", NULL}, {"textureGlobal", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the current global texture coordinate (tuple)", - (void*)GLOBALTEXTURE}, + (getter)ShadeInput_getTextureGlobal, (setter)NULL, + "Get the current global texture coordinate (3-vector)", NULL}, {"surfaceNormal", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the current surface normal (tuple)", - (void*)SURFACENORMAL}, + (getter)ShadeInput_getSurfaceNormal, (setter)NULL, + "Get the current surface normal (3-vector)", NULL}, {"viewNormal", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the current view normal (tuple)", - (void*)VIEWNORMAL}, + (getter)ShadeInput_getViewNormal, (setter)NULL, + "Get the current view normal (3-vector)", NULL}, {"surfaceViewVector", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the vector pointing to the viewpoint from the point being shaded (tuple)", - (void*)SURFACEVIEWVECTOR}, + (getter)ShadeInput_getSurfaceViewVector, (setter)NULL, + "Get the vector pointing to the viewpoint from the point being shaded (3-vector)", NULL}, {"pixel", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the x,y-coordinate for the pixel rendered (tuple)", - (void*)PIXEL}, + (getter)ShadeInput_getPixel, (setter)NULL, + "Get the x,y-coordinate for the pixel rendered (3-vector)", NULL}, {"color", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the color for the point being shaded (tuple)", - (void*)COLOR}, + (getter)ShadeInput_getColor, (setter)NULL, + "Get the color for the point being shaded (3-vector)", NULL}, {"specularColor", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the specular color for the point being shaded (tuple)", - (void*)SPECULAR_COLOR}, + (getter)ShadeInput_getColorSpecular, (setter)NULL, + "Get the specular color for the point being shaded (3-vector)", NULL}, {"mirrorColor", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the mirror color for the point being shaded (tuple)", - (void*)MIRROR_COLOR}, + (getter)ShadeInput_getColorMirror, (setter)NULL, + "Get the mirror color for the point being shaded (3-vector)", NULL}, {"ambientColor", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the ambient color for the point being shaded (tuple)", - (void*)AMBIENT_COLOR}, + (getter)ShadeInput_getColorAmbient, (setter)NULL, + "Get the ambient color for the point being shaded (3-vector)", NULL}, {"ambient", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the ambient factor for the point being shaded (float)", - (void*)AMBIENT}, + (getter)ShadeInput_getAmbient, (setter)NULL, + "Get the ambient factor for the point being shaded (float)", NULL}, {"emit", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the emit factor for the point being shaded (float)", - (void*)EMIT}, + (getter)ShadeInput_getEmit, (setter)NULL, + "Get the emit factor for the point being shaded (float)", NULL}, {"displace", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the displace vector for the point being shaded (tuple)", - (void*)DISPLACE}, + (getter)ShadeInput_getDisplace, (setter)NULL, + "Get the displace vector for the point being shaded (3-vector)", NULL}, {"strand", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the strand factor(float)", - (void*)STRAND}, + (getter)ShadeInput_getStrand, (setter)NULL, + "Get the strand factor(float)", NULL}, {"stress", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the stress factor(float)", - (void*)STRESS}, + (getter)ShadeInput_getStress, (setter)NULL, + "Get the stress factor(float)", NULL}, {"tangent", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the tangent vector (tuple)", - (void*)TANGENT}, + (getter)ShadeInput_getTangent, (setter)NULL, + "Get the tangent vector (3-vector)", NULL}, {"surfaceD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the surface d (tuple of tuples)", - (void*)SURFACE_D}, + (getter)ShadeInput_getSurfaceD, (setter)NULL, + "Get the surface d (tuple with pair of 3-vectors)", NULL}, {"textureD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the texture d (tuple of tuples)", - (void*)TEXTURE_D}, + (getter)ShadeInput_getTextureD, (setter)NULL, + "Get the texture d (tuple with pair of 3-vectors)", NULL}, {"textureGlobalD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the global texture d (tuple of tuples)", - (void*)GLOBALTEXTURE_D}, + (getter)ShadeInput_getTextureGlobalD, (setter)NULL, + "Get the global texture d (tuple with pair of 3-vectors)", NULL}, {"reflectionD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the reflection d (tuple of tuples)", - (void*)REFLECTION_D}, + (getter)ShadeInput_getReflectionD, (setter)NULL, + "Get the reflection d (tuple with pair of 3-vectors)", NULL}, {"normalD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the normal d (tuple of tuples)", - (void*)NORMAL_D}, + (getter)ShadeInput_getNormalD, (setter)NULL, + "Get the normal d (tuple with pair of 3-vectors)", NULL}, {"stickyD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the sticky d (tuple of tuples)", - (void*)STICKY_D}, + (getter)ShadeInput_getStickyD, (setter)NULL, + "Get the sticky d (tuple with pair of 3-vectors)", NULL}, {"refractD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the refract d (tuple of tuples)", - (void*)REFRACT_D}, + (getter)ShadeInput_getRefractD, (setter)NULL, + "Get the refract d (tuple with pair of 3-vectors)", NULL}, {"strandD", - (getter)ShadeInput_getAttribute, (setter)NULL, - "Get the strand d (tuple)", - (void*)STRAND_D}, + (getter)ShadeInput_getStrandD, (setter)NULL, + "Get the strand d (2-vector)", NULL}, {NULL,NULL,NULL,NULL,NULL} /* Sentinel */ }; @@ -1496,7 +1534,7 @@ PyTypeObject ShadeInput_Type = { /*** Attribute descriptor and subclassing stuff ***/ NULL, /*BPy_Node_methods,*/ /* struct PyMethodDef *tp_methods; */ NULL, /* struct PyMemberDef *tp_members; */ - BPy_ShadeInput_getseters, /* struct PyGetSetDef *tp_getset; */ + BPy_ShadeInput_getseters, /* struct PyGetSetDef *tp_getset; */ NULL, /* struct _typeobject *tp_base; */ NULL, /* PyObject *tp_dict; */ NULL, /* descrgetfunc tp_descr_get; */ diff --git a/source/blender/python/api2_2x/doc/API_related.py b/source/blender/python/api2_2x/doc/API_related.py index 87b29e7f524..4e29f95e76d 100644 --- a/source/blender/python/api2_2x/doc/API_related.py +++ b/source/blender/python/api2_2x/doc/API_related.py @@ -351,8 +351,8 @@ Introduction: expected format for each url entry is e.g. "Author's site, http://www.somewhere.com". The first part, before the comma (','), is used as the button's tooltip. There are two preset - options: "blender" and "elysiun", which link to the Python forums at - blender.org and elysiun.com, respectively. + options: "blender" and "blenderartists.org", which link to the Python forums at + blender.org and blenderartists.org, respectively. - __email__ (optional, type: string or list of strings): - Equivalent to __url__, but opens the user's default email client. You @@ -369,7 +369,7 @@ Introduction: __author__ = 'Mr. Author' __version__ = '1.0 2005/01/01' __url__ = ["Author's site, http://somewhere.com", - "Support forum, http://somewhere.com/forum/", "blender", "elysiun"] + "Support forum, http://somewhere.com/forum/", "blender", "blenderartists.org"] __email__ = ["Mr. Author, mrauthor:somewhere*com", "scripts"] __bpydoc__ = \"\"\"\\ This script does this and that. |