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>2012-01-10 20:20:01 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-01-10 20:20:01 +0400
commit032a6f63a7deb1676153c49574c5dab2f3ec633f (patch)
tree45b631009ef5f19bf478e53c30de04baaa828fff /release/scripts/startup/bl_operators/presets.py
parent057d6e881575a0415c7cec7778d5e8f89e8f9110 (diff)
enable xml preset save/load, replace install/export themes with these.
Diffstat (limited to 'release/scripts/startup/bl_operators/presets.py')
-rw-r--r--release/scripts/startup/bl_operators/presets.py70
1 files changed, 48 insertions, 22 deletions
diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py
index f4524c328c1..0ba19ad8109 100644
--- a/release/scripts/startup/bl_operators/presets.py
+++ b/release/scripts/startup/bl_operators/presets.py
@@ -55,6 +55,13 @@ class AddPresetBase():
preset_menu_class = getattr(bpy.types, self.preset_menu)
+ is_xml = getattr(preset_menu_class, "preset_type", None) == 'XML'
+
+ if is_xml:
+ ext = ".xml"
+ else:
+ ext = ".py"
+
if not self.remove_active:
name = self.name.strip()
if not name:
@@ -71,32 +78,40 @@ class AddPresetBase():
self.report({'WARNING'}, "Failed to create presets path")
return {'CANCELLED'}
- filepath = os.path.join(target_path, filename) + ".py"
+ filepath = os.path.join(target_path, filename) + ext
if hasattr(self, "add"):
self.add(context, filepath)
else:
print("Writing Preset: %r" % filepath)
- file_preset = open(filepath, 'w')
- file_preset.write("import bpy\n")
-
- if hasattr(self, "preset_defines"):
- for rna_path in self.preset_defines:
- exec(rna_path)
- file_preset.write("%s\n" % rna_path)
- file_preset.write("\n")
-
- for rna_path in self.preset_values:
- value = eval(rna_path)
- # convert thin wrapped sequences to simple lists to repr()
- try:
- value = value[:]
- except:
- pass
- file_preset.write("%s = %r\n" % (rna_path, value))
-
- file_preset.close()
+ if is_xml:
+ import rna_xml
+ rna_xml.xml_file_write(context,
+ filepath,
+ preset_menu_class.preset_xml_map)
+ else:
+ file_preset = open(filepath, 'w')
+ file_preset.write("import bpy\n")
+
+ if hasattr(self, "preset_defines"):
+ for rna_path in self.preset_defines:
+ exec(rna_path)
+ file_preset.write("%s\n" % rna_path)
+ file_preset.write("\n")
+
+ for rna_path in self.preset_values:
+ value = eval(rna_path)
+ # convert thin wrapped sequences
+ # to simple lists to repr()
+ try:
+ value = value[:]
+ except:
+ pass
+
+ file_preset.write("%s = %r\n" % (rna_path, value))
+
+ file_preset.close()
preset_menu_class.bl_label = bpy.path.display_name(filename)
@@ -104,12 +119,15 @@ class AddPresetBase():
preset_active = preset_menu_class.bl_label
# fairly sloppy but convenient.
- filepath = bpy.utils.preset_find(preset_active, self.preset_subdir)
+ filepath = bpy.utils.preset_find(preset_active,
+ self.preset_subdir,
+ ext=ext)
if not filepath:
filepath = bpy.utils.preset_find(preset_active,
self.preset_subdir,
- display_name=True)
+ display_name=True,
+ ext=ext)
if not filepath:
return {'CANCELLED'}
@@ -397,6 +415,14 @@ class AddPresetTrackingSettings(AddPresetBase, Operator):
preset_subdir = "tracking_settings"
+class AddPresetInterfaceTheme(AddPresetBase, Operator):
+ '''Add a theme preset'''
+ bl_idname = "wm.interface_theme_preset_add"
+ bl_label = "Add Tracking Settings Preset"
+ preset_menu = "USERPREF_MT_interface_theme_presets"
+ preset_subdir = "interface_theme"
+
+
class AddPresetKeyconfig(AddPresetBase, Operator):
'''Add a Keyconfig Preset'''
bl_idname = "wm.keyconfig_preset_add"