fix [#30623] user-defined render presets bug
this report exposed multiple bugs in blender when using a non utf8 compatible home directory. - bpy.utils.script_paths() would crash when homedir wasn't utf8 (reported bug) - PyC_DefaultNameSpace() - would raise an error when running when __file__ was non utf8. - preset filepath property was not set to accept non utf8. - bpy.paths.display_name would raise an error on non utf8 paths, (used for preset draw)
This commit is contained in:
@@ -118,6 +118,14 @@ def clean_name(name, replace="_"):
|
||||
return name
|
||||
|
||||
|
||||
def _clean_utf8(name):
|
||||
name = _os.path.splitext(basename(name))[0]
|
||||
if type(name) == bytes:
|
||||
return name.decode("utf8", "replace")
|
||||
else:
|
||||
return name.encode("utf8", "replace").decode("utf8")
|
||||
|
||||
|
||||
def display_name(name):
|
||||
"""
|
||||
Creates a display string from name to be used menus and the user interface.
|
||||
@@ -126,17 +134,18 @@ def display_name(name):
|
||||
filenames and module names.
|
||||
"""
|
||||
|
||||
name_base = _os.path.splitext(name)[0]
|
||||
name = _os.path.splitext(name)[0]
|
||||
|
||||
# string replacements
|
||||
name_base = name_base.replace("_colon_", ":")
|
||||
name = name.replace("_colon_", ":")
|
||||
|
||||
name_base = name_base.replace("_", " ")
|
||||
name = name.replace("_", " ")
|
||||
|
||||
if name_base.islower():
|
||||
return name_base.lower().title()
|
||||
else:
|
||||
return name_base
|
||||
if name.islower():
|
||||
name = name.lower().title()
|
||||
|
||||
name = _clean_utf8(name)
|
||||
return name
|
||||
|
||||
|
||||
def display_name_from_filepath(name):
|
||||
@@ -144,11 +153,10 @@ def display_name_from_filepath(name):
|
||||
Returns the path stripped of directory and extension,
|
||||
ensured to be utf8 compatible.
|
||||
"""
|
||||
|
||||
name = _os.path.splitext(basename(name))[0]
|
||||
if type(name) == bytes:
|
||||
return name.decode("utf8", "replace")
|
||||
else:
|
||||
return name.encode("utf8", "replace").decode("utf8")
|
||||
name = _clean_utf8(name)
|
||||
return name
|
||||
|
||||
|
||||
def resolve_ncase(path):
|
||||
|
||||
Reference in New Issue
Block a user