X-Git-Url: https://git.ao2.it/experiments/svgwrite_inkscape_drawing.git/blobdiff_plain/cfc9c9f5a85f7a74df25760ed1a7e1c969a8d10c..HEAD:/svgwrite_inkscape_drawing.py diff --git a/svgwrite_inkscape_drawing.py b/svgwrite_inkscape_drawing.py index 0d9c4b5..78a3a4a 100755 --- a/svgwrite_inkscape_drawing.py +++ b/svgwrite_inkscape_drawing.py @@ -12,6 +12,9 @@ from svgwrite.data.types import SVGAttribute class InkscapeDrawing(svgwrite.Drawing): """An svgwrite.Drawing subclass which supports Inkscape layers""" + INKSCAPE_NAMESPACE = 'http://www.inkscape.org/namespaces/inkscape' + SODIPODI_NAMESPACE = 'http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' + def __init__(self, *args, **kwargs): super(InkscapeDrawing, self).__init__(*args, **kwargs) @@ -19,7 +22,11 @@ class InkscapeDrawing(svgwrite.Drawing): 'xmlns:inkscape': SVGAttribute('xmlns:inkscape', anim=False, types=[], - const=frozenset(['http://www.inkscape.org/namespaces/inkscape'])), + const=frozenset([self.INKSCAPE_NAMESPACE])), + 'xmlns:sodipodi': SVGAttribute('xmlns:sodipodi', + anim=False, + types=[], + const=frozenset([self.SODIPODI_NAMESPACE])), 'inkscape:groupmode': SVGAttribute('inkscape:groupmode', anim=False, types=[], @@ -27,7 +34,11 @@ class InkscapeDrawing(svgwrite.Drawing): 'inkscape:label': SVGAttribute('inkscape:label', anim=False, types=frozenset(['string']), - const=[]) + const=[]), + 'sodipodi:insensitive': SVGAttribute('sodipodi:insensitive', + anim=False, + types=frozenset(['string']), + const=[]) } self.validator.attributes.update(inkscape_attributes) @@ -36,14 +47,17 @@ class InkscapeDrawing(svgwrite.Drawing): svg_attributes = set(elements['svg'].valid_attributes) svg_attributes.add('xmlns:inkscape') + svg_attributes.add('xmlns:sodipodi') elements['svg'].valid_attributes = frozenset(svg_attributes) g_attributes = set(elements['g'].valid_attributes) g_attributes.add('inkscape:groupmode') g_attributes.add('inkscape:label') + g_attributes.add('sodipodi:insensitive') elements['g'].valid_attributes = frozenset(g_attributes) - self['xmlns:inkscape'] = 'http://www.inkscape.org/namespaces/inkscape' + self['xmlns:inkscape'] = self.INKSCAPE_NAMESPACE + self['xmlns:sodipodi'] = self.SODIPODI_NAMESPACE def layer(self, **kwargs): """Create an inkscape layer. @@ -65,6 +79,7 @@ def main(): svg = InkscapeDrawing('inkscape-test.svg', profile='full', size=(640, 480)) layer = svg.layer(label="Layer one") + layer["sodipodi:insensitive"] = "true" svg.add(layer) line = svg.line((100, 100), (300, 100),