add embroider_update extension to convert old-style param names to new

pull/2/merge
Lex Neva 2016-11-02 23:17:36 -04:00
rodzic 841e9196ba
commit 9805398644
2 zmienionych plików z 62 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Update embroidery param names</_name>
<id>lexelby.embroider.update</id>
<dependency type="executable" location="extensions">embroider_update.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Embroidery"/>
</effects-menu>
</effect>
<script>
<command reldir="extensions" interpreter="python">embroider_update.py</command>
</script>
</inkscape-extension>

Wyświetl plik

@ -0,0 +1,46 @@
#!/usr/bin/python
#
# Update embroidery parameters stored in XML attributes from old to new
# format.
import sys
sys.path.append("/usr/share/inkscape/extensions")
import os
import inkex
PIXELS_PER_MM = 10
class EmbroiderParams(inkex.Effect):
def __init__(self, *args, **kwargs):
inkex.Effect.__init__(self)
self.mapping = { "zigzag_spacing": "zigzag_spacing_mm",
"row_spacing": "row_spacing_mm",
"pull_compensation": "pull_compensation_mm",
"max_stitch_length": "max_stitch_length_mm",
"satin_underlay": "contour_underlay",
"satin_underlay_inset": "contour_underlay_inset_mm",
"satin_zigzag_underlay_spacing": "zigzag_underlay_spacing_mm",
"satin_center_walk": "center_walk_underlay",
"stitch_length": "running_stitch_length_mm",
}
def effect(self):
for node in self.document.getroot().iter():
for old, new in self.mapping.iteritems():
old = "embroider_%s" % old
new = "embroider_%s" % new
value = node.attrib.pop(old, None)
if value:
if new.endswith('_mm') and value.strip():
value = str(float(value) / PIXELS_PER_MM)
node.set(new, value)
if 'embroider_zigzag_underlay_spacing_mm' in node.attrib:
node.set('embroider_zigzag_underlay', 'yes')
if __name__ == '__main__':
e = EmbroiderParams()
e.affect()