diff options
-rw-r--r-- | release/scripts/modules/bpy/utils/__init__.py | 21 | ||||
-rw-r--r-- | release/scripts/startup/bl_operators/presets.py | 7 |
2 files changed, 28 insertions, 0 deletions
diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index 04aaa7bd69d..879275619ce 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -456,6 +456,27 @@ def preset_paths(subdir): return dirs +def is_path_builtin(path): + """ + Returns True if the path in question in one of the built in paths used by blender. + + :arg path: Path you want to check if it is in the built in settings directory + """ + search_path = _os.path.abspath(path) + user_path = resource_path('USER') + + for res in ('SYSTEM', 'LOCAL'): + parent_path = resource_path(res) + if not parent_path or parent_path == user_path: + # Make sure that the current path is not empty string and that it is + # not the same as the user config path. IE "~/.config/blender" on linux + # This can happen on portable installs. + continue + + if _os.path.samefile(_os.path.commonpath([parent_path]), _os.path.commonpath([parent_path, path])): + return True + + return False def smpte_from_seconds(time, fps=None, fps_base=None): """ diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py index 661a7bd4aea..235f92bd360 100644 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@ -29,6 +29,8 @@ from bpy.props import ( StringProperty, ) +from bpy.utils import is_path_builtin + # For preset popover menu WindowManager.preset_name = StringProperty( name="Preset Name", @@ -190,6 +192,11 @@ class AddPresetBase: if not filepath: return {'CANCELLED'} + # Do not remove bundled presets + if is_path_builtin(filepath): + self.report({'WARNING'}, "You can't remove the default presets") + return {'CANCELLED'} + try: if hasattr(self, "remove"): self.remove(context, filepath) |