py api: bpy_extras.io_utils.path_reference() - added library argument so exporters...
authorCampbell Barton <ideasman42@gmail.com>
Tue, 11 Oct 2011 04:36:27 +0000 (04:36 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 11 Oct 2011 04:36:27 +0000 (04:36 +0000)
release/scripts/modules/bpy/path.py
release/scripts/modules/bpy_extras/io_utils.py

index c8a78d5..e6d0fbb 100644 (file)
@@ -268,7 +268,7 @@ def module_names(path, recursive=False):
 
 def basename(path):
     """
-    Equivalent to os.path.basename, but skips a "//" suffix.
+    Equivalent to os.path.basename, but skips a "//" prefix.
 
     Use for Windows compatibility.
     """
index 91546e0..5d28cea 100644 (file)
@@ -350,6 +350,7 @@ def path_reference(filepath,
                    mode='AUTO',
                    copy_subdir="",
                    copy_set=None,
+                   library=None,
                    ):
     """
     Return a filepath relative to a destination directory, for use with
@@ -372,12 +373,15 @@ def path_reference(filepath,
     :arg copy_set: collect from/to pairs when mode='COPY',
        pass to *path_reference_copy* when exportign is done.
     :type copy_set: set
+    :arg library: The library this path is relative to.
+    :type library: :class:`bpy.types.Library` or None
     :return: the new filepath.
     :rtype: string
     """
     import os
     is_relative = filepath.startswith("//")
-    filepath_abs = os.path.normpath(bpy.path.abspath(filepath, base_src))
+    filepath_abs = bpy.path.abspath(filepath, base_src, library)
+    filepath_abs = os.path.normpath(filepath_abs)
 
     if mode in {'ABSOLUTE', 'RELATIVE', 'STRIP'}:
         pass
@@ -385,13 +389,12 @@ def path_reference(filepath,
         mode = 'RELATIVE' if is_relative else 'ABSOLUTE'
     elif mode == 'AUTO':
         mode = ('RELATIVE'
-                if bpy.path.is_subdir(filepath, base_dst)
+                if bpy.path.is_subdir(filepath_abs, base_dst)
                 else 'ABSOLUTE')
     elif mode == 'COPY':
+        subdir_abs = os.path.normpath(base_dst)
         if copy_subdir:
-            subdir_abs = os.path.join(os.path.normpath(base_dst), copy_subdir)
-        else:
-            subdir_abs = os.path.normpath(base_dst)
+            subdir_abs = os.path.join(subdir_abs, copy_subdir)
 
         filepath_cpy = os.path.join(subdir_abs, os.path.basename(filepath))