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:
-rw-r--r--release/scripts/modules/bpy/utils/__init__.py21
-rw-r--r--release/scripts/startup/bl_operators/presets.py7
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)