Page Menu
Home
Search
Configure Global Search
Log In
Files
F20705
metadata.patch
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Authored By
Bart Crouch (crouch)
Nov 13 2013, 4:27 PM
Size
4 KB
Subscribers
None
metadata.patch
View Options
Index: blender/release/scripts/modules/rna_xml.py
===================================================================
--- blender/release/scripts/modules/rna_xml.py (revision 43103)
+++ blender/release/scripts/modules/rna_xml.py (working copy)
@@ -54,7 +54,8 @@
bpy.types.Header,
),
pretty_format=True,
- method='DATA'):
+ method='DATA',
+ meta_data=None):
from xml.sax.saxutils import quoteattr
property_typemap = build_property_typemap(skip_classes)
@@ -87,17 +88,28 @@
return
value_type_name = value_type.__name__
- for prop in property_typemap[value_type_name]:
-
- subvalue = getattr(value, prop)
+ prop_dict = property_typemap[value_type_name]
+ if meta_data and not parent:
+ prop_dict.append(meta_data)
+ for prop in prop_dict:
+ if type(prop) is str:
+ subvalue = getattr(value, prop)
+ else:
+ subvalue = prop
subvalue_type = type(subvalue)
if subvalue_type in (int, bool, float):
node_attrs.append("%s=\"%s\"" % (prop, number_to_str(subvalue, subvalue_type)))
elif subvalue_type is str:
+ if meta_data and not parent:
+ continue
node_attrs.append("%s=%s" % (prop, quoteattr(subvalue)))
elif subvalue_type == set:
node_attrs.append("%s=%s" % (prop, quoteattr("{" + ",".join(list(subvalue)) + "}")))
+ elif subvalue_type is dict:
+ # meta-data
+ for key, val in subvalue.items():
+ node_attrs.append("%s=%s" % (key, quoteattr(val)))
elif subvalue is None:
node_attrs.append("%s=\"NONE\"" % prop)
elif issubclass(subvalue_type, bpy.types.ID):
@@ -206,14 +218,33 @@
def xml2rna(root_xml,
root_rna=None, # must be set
- ):
+ report=False):
- def rna2xml_node(xml_node, value):
+ def rna2xml_node(xml_node, value, report=False):
# print("evaluating:", xml_node.nodeName)
# ---------------------------------------------------------------------
# Simple attributes
+ if xml_node.nodeName == 'Theme':
+ # filter theme specific metadata
+ try:
+ name = xml_node.attributes['name'].value
+ if not name:
+ name = "a theme"
+ version = xml_node.attributes['version'].value
+ author = xml_node.attributes['author'].value
+ if not author:
+ author = "an anonymous author"
+ del xml_node.attributes['name']
+ del xml_node.attributes['version']
+ del xml_node.attributes['author']
+ msg = "Applied %s %s by %s" % (name, version, author)
+ except:
+ msg = None
+ if report and msg:
+ report({'INFO'}, msg)
+
for attr in xml_node.attributes.keys():
# print(" ", attr)
subvalue = getattr(value, attr, Ellipsis)
@@ -297,4 +328,4 @@
# empty is valid too
pass
- rna2xml_node(root_xml, root_rna)
+ rna2xml_node(root_xml, root_rna, report)
Index: blender/release/scripts/startup/bl_operators/wm.py
===================================================================
--- blender/release/scripts/startup/bl_operators/wm.py (revision 43103)
+++ blender/release/scripts/startup/bl_operators/wm.py (working copy)
@@ -1799,7 +1799,7 @@
rna_xml.xml2rna(theme_xml,
root_rna=theme,
- )
+ report=self.report)
return {'FINISHED'}
@@ -1810,6 +1810,16 @@
filename_ext = ".xml"
filter_glob = StringProperty(default="*.xml", options={'HIDDEN'})
+ author = StringProperty(name="Author",
+ default=bpy.context.user_preferences.system.author,
+ description="Name of the person who created the theme")
+ name = StringProperty(name="Name",
+ default="",
+ description="Name of the theme")
+ version = StringProperty(name="Version",
+ default="",
+ description="Version number of the theme, eg: 1.0",
+ maxlen=8)
def execute(self, context):
import rna_xml
@@ -1819,10 +1829,14 @@
# XXX, why always 0?, allow many?
theme = context.user_preferences.themes[0]
+ meta = {'author':self.author, 'name':self.name, 'version':self.version}
rna_xml.rna2xml(file.write,
root_rna=theme,
method='ATTR',
+ meta_data=meta
)
+ file.close()
return {'FINISHED'}
File Metadata
Details
Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
81/47/790e519d98470f1a3e7cb1a5dea0
Event Timeline
Log In to Comment