Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-01-14 06:31:39 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-01-14 06:31:39 +0300
commit8d3efb2b90e5f712f7f8a18221acf333133a2dd4 (patch)
treeefb2777f28b12a8afa0741694faef795d815bf09 /release
parent40dbf2fc0000f2905d436fc28b93a9b97431f72d (diff)
Fix T53772: Presets don't support colons
Diffstat (limited to 'release')
-rw-r--r--release/scripts/modules/bpy/path.py20
-rw-r--r--release/scripts/startup/bl_operators/presets.py6
2 files changed, 22 insertions, 4 deletions
diff --git a/release/scripts/modules/bpy/path.py b/release/scripts/modules/bpy/path.py
index e17d710068c..0bfb14e4e0d 100644
--- a/release/scripts/modules/bpy/path.py
+++ b/release/scripts/modules/bpy/path.py
@@ -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):
"""
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index fdacf24f6e0..c696c38dac6 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -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,
-) \ No newline at end of file
+)