minor edits to xml presets
authorCampbell Barton <ideasman42@gmail.com>
Wed, 11 Jan 2012 00:22:21 +0000 (00:22 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 11 Jan 2012 00:22:21 +0000 (00:22 +0000)
- check 'SKIP_SAVE' property (used for active theme area which become annoying)
- indent presets better

release/scripts/modules/rna_xml.py
source/blender/makesrna/intern/rna_userdef.c

index 9019728c014f49b78b4572f6305d2d68f190b3c5..634c74178faa95712656a5306f4c222e8882c421 100644 (file)
@@ -32,7 +32,13 @@ def build_property_typemap(skip_classes):
         if issubclass(cls, skip_classes):
             continue
 
-        properties = cls.bl_rna.properties.keys()
+        ## to support skip-save we cant get all props
+        # properties = cls.bl_rna.properties.keys()
+        properties = []
+        for prop_id, prop in cls.bl_rna.properties.items():
+            if not prop.is_skip_save:
+                properties.append(prop_id)
+
         properties.remove("rna_type")
         property_typemap[attr] = properties
 
@@ -47,7 +53,8 @@ def rna2xml(fw=print_ln,
             root_node="",
             root_rna=None,  # must be set
             root_rna_skip=set(),
-            ident_val="    ",
+            root_ident="",
+            ident_val="  ",
             skip_classes=(bpy.types.Operator,
                           bpy.types.Panel,
                           bpy.types.KeyingSet,
@@ -173,10 +180,11 @@ def rna2xml(fw=print_ln,
     # needs re-workign to be generic
 
     if root_node:
-        fw("<%s>\n" % root_node)
+        fw("%s<%s>\n" % (root_ident, root_node))
 
     # bpy.data
     if method == 'DATA':
+        ident = root_ident + ident_val
         for attr in dir(root_rna):
 
             # exceptions
@@ -192,16 +200,16 @@ def rna2xml(fw=print_ln,
                 ls = None
 
             if type(ls) == list:
-                fw("%s<%s>\n" % (ident_val, attr))
+                fw("%s<%s>\n" % (ident, attr))
                 for blend_id in ls:
-                    rna2xml_node(ident_val + ident_val, blend_id, None)
+                    rna2xml_node(ident + ident_val, blend_id, None)
                 fw("%s</%s>\n" % (ident_val, attr))
     # any attribute
     elif method == 'ATTR':
-        rna2xml_node("", root_rna, None)
+        rna2xml_node(root_ident, root_rna, None)
 
     if root_node:
-        fw("</%s>\n" % root_node)
+        fw("%s</%s>\n" % (root_ident, root_node))
 
 
 def xml2rna(root_xml,
@@ -350,7 +358,11 @@ def xml_file_write(context, filepath, rna_map):
     for rna_path, xml_tag in rna_map:
         # xml_tag is ignored, we get this from the rna
         value = _get_context_val(context, rna_path)
-        rna2xml(fw, root_rna=value, method='ATTR')
+        rna2xml(fw,
+                root_rna=value,
+                method='ATTR',
+                root_ident="  ",
+                ident_val="  ")
 
     fw("</bpy>\n")
     file.close()
index c75bac8ef24367f72833f133a7c75a83a58a8588..d19498776a01b79c2a6b0ea2ff7d049b84071afa 100644 (file)
@@ -1970,6 +1970,7 @@ static void rna_def_userdef_themes(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "theme_area", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "active_theme_area");
+       RNA_def_property_flag(prop, PROP_SKIP_SAVE);
        RNA_def_property_enum_items(prop, active_theme_area);
        RNA_def_property_ui_text(prop, "Active Theme Area", "");