Add library.name attribute, which returns the actual library name used by blender (this may be different from the library.filename attribute).

This commit is contained in:
Ken Hughes
2008-05-01 18:52:26 +00:00
parent 3eac2b2faa
commit a87d82023a
2 changed files with 42 additions and 4 deletions

View File

@@ -977,6 +977,39 @@ static int Library_setFilename( BPy_Library * self, PyObject * args )
return 0;
}
/*
* Return the library's name. The format depends on whether the library is
* accessed as relative or absolute.
*/
static PyObject *Library_getName( BPy_Library * self )
{
Library *lib;
BlendHandle *openlib;
char longFilename[FILE_MAX];
/* try to open the library */
openlib = open_library( self->filename, longFilename );
if( openlib ) {
BLO_blendhandle_close( openlib );
/* remove any /../ or /./ junk */
BLI_cleanup_file(NULL, longFilename);
/* search the loaded libraries for a match */
for( lib = G.main->library.first; lib; lib = lib->id.next )
if( strcmp( longFilename, lib->filename ) == 0) {
return PyString_FromString( lib->name );
}
/* library not found in memory */
return EXPP_ReturnPyObjError( PyExc_RuntimeError,
"library not loaded" );
}
/* could not load library */
return EXPP_ReturnPyObjError( PyExc_IOError, "library not found" );
}
/************************************************************************
* Python Library_type attributes get/set structure
************************************************************************/
@@ -986,6 +1019,10 @@ static PyGetSetDef Library_getseters[] = {
(getter)Library_getFilename, (setter)Library_setFilename,
"library filename",
NULL},
{"name",
(getter)Library_getName, (setter)NULL,
"library name (as used by Blender)",
NULL},
{"objects",
(getter)LibraryData_CreatePyObject, (setter)NULL,
"objects from the library",

View File

@@ -33,9 +33,8 @@ def load(filename,relative=False):
@type filename: string
@param filename: The filename of a Blender file. Filenames starting with "//" will be loaded relative to the blend file's location.
@type relative: int
@param relative: Convert relative paths to absolute paths (default).
Setting this parameter to True will leave paths relative.
@type relative: boolean
@param relative: Convert relative paths to absolute paths (default). Setting this parameter to True will leave paths relative.
@rtype: Library
@return: return a L{Library} object.
"""
@@ -49,8 +48,10 @@ class Libraries:
It provides access to scenes, objects, meshes, curves, metaballs,
materials, textures, images, lattices, lamps, cameras, ipos, worlds,
fonts, texts, sounds, groups, armatures, and actions.
@ivar filename: The path to the library
@ivar filename: The filename of the library, as supplied by user.
@type filename: string
@ivar name: The path to the library, as used by Blender. If the filename supplied by the user is relative, but the relative option to L{library.load()<load>} is False, the name will be the absolute path.
@type name: string
@ivar scenes: library L{scene<Scene.Scene>} data
@type scenes: L{LibData}
@ivar objects: library L{object<Object.Object>} data