From cf2db11d6086727dcc3d6cf97026d3e7a1aa7fe9 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Wed, 20 Jan 2016 03:04:32 -0500 Subject: [PATCH] add 'Embroider Params' extension to set XML attributes on svg nodes --- embroider.inx | 2 +- embroider_params.inx | 23 +++++++++++++++++++++++ embroider_params.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 embroider_params.inx create mode 100644 embroider_params.py diff --git a/embroider.inx b/embroider.inx index d2682ebab..ec2b08c33 100644 --- a/embroider.inx +++ b/embroider.inx @@ -28,7 +28,7 @@ all - + + diff --git a/embroider_params.py b/embroider_params.py new file mode 100644 index 000000000..648c97440 --- /dev/null +++ b/embroider_params.py @@ -0,0 +1,44 @@ +#!/usr/bin/python +# +# Set embroidery parameter attributes on all selected objects. If an option +# value is blank, the parameter is created as blank on all objects that don't +# already have it. If an option value is given, any existing node parameter +# values are overwritten on all selected objects. + +import sys +sys.path.append("/usr/share/inkscape/extensions") +import os +import inkex + + +class EmbroiderParams(inkex.Effect): + def __init__(self, *args, **kwargs): + inkex.Effect.__init__(self) + + self.params = ["zigzag_spacing", + "running_stitch_length", + "row_spacing", + "max_stitch_length", + "repeats", + "angle", + "hatching", + ] + + for param in self.params: + self.OptionParser.add_option("--%s" % param, default="") + + def effect(self): + for node in self.selected.itervalues(): + for param in self.params: + value = getattr(self.options, param).strip() + param = "embroider_" + param + + if node.get(param) is not None and not value: + # only overwrite existing params if they gave a value + continue + else: + node.set(param, value) + +if __name__ == '__main__': + e = EmbroiderParams() + e.affect()