library loading api.
authorCampbell Barton <ideasman42@gmail.com>
Sat, 12 Mar 2011 16:06:37 +0000 (16:06 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Sat, 12 Mar 2011 16:06:37 +0000 (16:06 +0000)
commit8c526e79e31d40d56a6fecce9343c74bd9fe62d8
treee632e6c2ed852e67f862ca96dfb3326e9a9e948b
parentce5c1466a1224ac2e2c7ba65c740e277cff8a0d7
library loading api.
this is not well suited to RNA so this is a native python api.

This uses:
  bpy.data.libraries.load(filepath, link=False, relative=False)

however the return value needs to use pythons context manager, this means the library loading is confined to a block of code and python cant leave a half loaded library state.

eg, load a single scene we know the name of:
  with bpy.data.libraries.load(filepath) as (data_from, data_to):
      data_to.scenes = ["Scene"]

eg, load all scenes:
  with bpy.data.libraries.load(filepath) as (data_from, data_to):
      data_to.scenes = data_from.scenes

eg, load all objects starting with 'A'
  with bpy.data.libraries.load(filepath) as (data_from, data_to):
      data_to.objects = [name for name in data_from.objects if name.startswith("A")]

As you can see gives 2 objects like 'bpy.data', but containing lists of strings which can be moved from one into another.
release/scripts/modules/bpy_types.py
source/blender/python/intern/CMakeLists.txt
source/blender/python/intern/bpy.c
source/blender/python/intern/bpy_library.c [new file with mode: 0644]
source/blender/windowmanager/intern/wm_operators.c