forked from bartvdbraak/blender
image_load() utility function's 'recursive' option wasn't functional since 2.4x
This commit is contained in:
parent
98e5e544b5
commit
1c5b416cbf
@ -66,8 +66,6 @@ def load_image(imagepath,
|
||||
import os
|
||||
import bpy
|
||||
|
||||
# TODO: recursive
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Utility Functions
|
||||
|
||||
@ -111,6 +109,18 @@ def load_image(imagepath,
|
||||
|
||||
return image
|
||||
|
||||
def _recursive_search(paths, filename_check):
|
||||
for path in paths:
|
||||
for dirpath, dirnames, filenames in os.walk(path):
|
||||
|
||||
# skip '.svn'
|
||||
if dirpath[0] in {".", b'.'}:
|
||||
continue
|
||||
|
||||
for filename in filenames:
|
||||
if filename_check(filename):
|
||||
yield os.path.join(dirpath, filename)
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
if verbose:
|
||||
@ -138,6 +148,28 @@ def load_image(imagepath,
|
||||
if os.path.exists(nfilepath):
|
||||
return _image_load(nfilepath)
|
||||
|
||||
if recursive:
|
||||
search_paths = []
|
||||
|
||||
for dirpath_test in (os.path.dirname(imagepath), dirname):
|
||||
if os.path.exists(dirpath_test):
|
||||
search_paths.append(dirpath_test)
|
||||
search_paths[:] = bpy.path.reduce_dirs(search_paths)
|
||||
|
||||
imagepath_base = bpy.path.basename(imagepath)
|
||||
if ncase_cmp:
|
||||
imagepath_base = imagepath_base.lower()
|
||||
|
||||
def image_filter(fn):
|
||||
return (imagepath_base == fn.lower())
|
||||
else:
|
||||
def image_filter(fn):
|
||||
return (imagepath_base == fn)
|
||||
|
||||
nfilepath = next(_recursive_search(search_paths, image_filter), None)
|
||||
if nfilepath is not None:
|
||||
return _image_load(nfilepath)
|
||||
|
||||
# None of the paths exist so return placeholder
|
||||
if place_holder:
|
||||
return _image_load_placeholder(imagepath)
|
||||
|
Loading…
Reference in New Issue
Block a user