add dir() function for library objects, also was missing call to clear temp flag...
authorCampbell Barton <ideasman42@gmail.com>
Mon, 14 Mar 2011 01:00:41 +0000 (01:00 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 14 Mar 2011 01:00:41 +0000 (01:00 +0000)
source/blender/python/intern/bpy_library.c

index 977bcabe69452d411852b8ad13c58565ee0fbc4c..faee8f493c70288c850a8755ffa894dd67ed56e5 100644 (file)
@@ -60,10 +60,12 @@ typedef struct {
 static PyObject *bpy_lib_load(PyObject *self, PyObject *args, PyObject *kwds);
 static PyObject *bpy_lib_enter(BPy_Library *self, PyObject *args);
 static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *args);
+static PyObject *bpy_lib_dir(BPy_Library *self);
 
 static PyMethodDef bpy_lib_methods[] = {
        {"__enter__", (PyCFunction)bpy_lib_enter, METH_NOARGS},
        {"__exit__", (PyCFunction)bpy_lib_exit, METH_VARARGS},
+       {"__dir__", (PyCFunction)bpy_lib_dir, METH_NOARGS},
        {NULL}           /* sentinel */
 };
 
@@ -306,6 +308,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
                /* exception raised above, XXX, this leaks some memory */
                BLO_blendhandle_close(self->blo_handle);
                self->blo_handle= NULL;
+               flag_all_listbases_ids(LIB_PRE_EXISTING, 0);
                return NULL;
        }
        else {
@@ -331,6 +334,12 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
        }
 }
 
+static PyObject *bpy_lib_dir(BPy_Library *self)
+{
+       return PyDict_Keys(self->dict);
+}
+
+
 int bpy_lib_init(PyObject *mod_par)
 {
        static PyMethodDef load_meth= {"load", (PyCFunction)bpy_lib_load, METH_STATIC|METH_VARARGS|METH_KEYWORDS};