Commit: 91ce2957966e759fe168640e469ad27169cdc521 Author: Campbell Barton Date: Sun Jan 14 14:31:39 2018 +1100 Branches: blender-v2.79a-release https://developer.blender.org/rB91ce2957966e759fe168640e469ad27169cdc521
Fix T53772: Presets don't support colons =================================================================== M release/scripts/modules/bpy/path.py M release/scripts/startup/bl_operators/presets.py =================================================================== 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 +) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs