summaryrefslogtreecommitdiff
path: root/embroider_update.py
blob: 5597cdcc65c48fc913da3aea8fd12e90df0b0318 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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()