Fix T53772: Presets don't support colons

This commit is contained in:
Campbell Barton 2018-01-14 14:31:39 +11:00
parent 40dbf2fc00
commit 8d3efb2b90
Notes: blender-bot 2023-09-08 04:55:43 +02:00
Referenced by issue #53772, Presets don't support colons
Referenced by issue #53683, 2.79a release
2 changed files with 22 additions and 4 deletions

View File

@ -28,6 +28,7 @@ __all__ = (
"basename",
"clean_name",
"display_name",
"display_name_to_filepath",
"display_name_from_filepath",
"ensure_ext",
"extensions_image",
@ -193,6 +194,12 @@ def _clean_utf8(name):
return name.encode("utf8", "replace").decode("utf8")
_display_name_literals = {
":": "_colon_",
"+": "_plus_",
}
def display_name(name):
"""
Creates a display string from name to be used menus and the user interface.
@ -201,8 +208,8 @@ def display_name(name):
filenames and module names.
"""
# string replacements
name = name.replace("_colon_", ":")
name = name.replace("_plus_", "+")
for disp_value, file_value in _display_name_literals.items():
name = name.replace(file_value, disp_value)
# strip to allow underscore prefix
# (when paths can't start with numbers for eg).
@ -214,6 +221,15 @@ def display_name(name):
name = _clean_utf8(name)
return name
def display_name_to_filepath(name):
"""
Performs the reverse of display_name using literal versions of characters
which aren't supported in a filepath.
"""
for disp_value, file_value in _display_name_literals.items():
name = name.replace(disp_value, file_value)
return name
def display_name_from_filepath(name):
"""

View File

@ -65,8 +65,10 @@ class AddPresetBase:
setattr(cls, attr, trans)
return trans
name = name.lower().strip()
name = bpy.path.display_name_to_filepath(name)
trans = maketrans_init()
return name.lower().strip().translate(trans)
return name.translate(trans)
def execute(self, context):
import os
@ -702,4 +704,4 @@ classes = (
AddPresetUnitsLength,
ExecutePreset,
WM_MT_operator_presets,
)
)