summaryrefslogtreecommitdiff
path: root/lib/extensions/remove_embroidery_settings.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/extensions/remove_embroidery_settings.py')
-rw-r--r--lib/extensions/remove_embroidery_settings.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/lib/extensions/remove_embroidery_settings.py b/lib/extensions/remove_embroidery_settings.py
new file mode 100644
index 00000000..c467e797
--- /dev/null
+++ b/lib/extensions/remove_embroidery_settings.py
@@ -0,0 +1,79 @@
+import inkex
+
+from ..commands import find_commands
+from .base import InkstitchExtension
+
+
+class RemoveEmbroiderySettings(InkstitchExtension):
+ def __init__(self, *args, **kwargs):
+ InkstitchExtension.__init__(self, *args, **kwargs)
+ self.OptionParser.add_option("-p", "--del_params", dest="del_params", type="inkbool", default=True)
+ self.OptionParser.add_option("-c", "--del_commands", dest="del_commands", type="inkbool", default=False)
+ self.OptionParser.add_option("-d", "--del_print", dest="del_print", type="inkbool", default=False)
+
+ def effect(self):
+ if self.options.del_params:
+ self.remove_params()
+ if self.options.del_commands:
+ self.remove_commands()
+ if self.options.del_print:
+ self.remove_print_settings()
+
+ def remove_print_settings(self):
+ print_settings = "svg:metadata//*"
+ print_settings = self.find_elements(print_settings)
+ for print_setting in print_settings:
+ if print_setting.prefix == "inkstitch":
+ self.remove_element(print_setting)
+
+ def remove_params(self):
+ if not self.selected:
+ xpath = ".//svg:path"
+ elements = self.find_elements(xpath)
+ self.remove_embroider_attributes(elements)
+ else:
+ for node in self.selected:
+ elements = self.get_selected_elements(node)
+ self.remove_embroider_attributes(elements)
+
+ def remove_commands(self):
+ if not self.selected:
+ commands = ".//*[starts-with(@inkscape:label, 'Ink/Stitch Command:')]"
+ self.remove_elements(commands)
+
+ symbols = ".//*[starts-with(@id, 'inkstitch_')]"
+ self.remove_elements(symbols)
+ else:
+ for node in self.selected:
+ elements = self.get_selected_elements(node)
+ for element in elements:
+ for command in find_commands(element):
+ group = command.connector.getparent()
+ group.getparent().remove(group)
+
+ def get_selected_elements(self, element_id):
+ xpath = ".//svg:path[@id='%s']" % element_id
+ elements = self.find_elements(xpath)
+ if not elements:
+ xpath = ".//svg:g[@id='%s']//svg:path" % element_id
+ elements = self.find_elements(xpath)
+ return elements
+
+ def find_elements(self, xpath):
+ svg = self.document.getroot()
+ elements = svg.xpath(xpath, namespaces=inkex.NSS)
+ return elements
+
+ def remove_elements(self, xpath):
+ elements = self.find_elements(xpath)
+ for element in elements:
+ self.remove_element(element)
+
+ def remove_element(self, element):
+ element.getparent().remove(element)
+
+ def remove_embroider_attributes(self, elements):
+ for element in elements:
+ for attrib in element.attrib:
+ if attrib.startswith('embroider_'):
+ del element.attrib[attrib]