summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/extensions/__init__.py6
-rw-r--r--lib/extensions/remove_embroidery_settings.py79
-rw-r--r--templates/remove_embroidery_settings.inx24
3 files changed, 107 insertions, 2 deletions
diff --git a/lib/extensions/__init__.py b/lib/extensions/__init__.py
index d6d0e279..38276a64 100644
--- a/lib/extensions/__init__.py
+++ b/lib/extensions/__init__.py
@@ -2,17 +2,18 @@ from auto_satin import AutoSatin
from convert_to_satin import ConvertToSatin
from cut_satin import CutSatin
from embroider import Embroider
-from lib.extensions.troubleshoot import Troubleshoot
from flip import Flip
from global_commands import GlobalCommands
from input import Input
from install import Install
from layer_commands import LayerCommands
from lettering import Lettering
+from lib.extensions.troubleshoot import Troubleshoot
from object_commands import ObjectCommands
from output import Output
from params import Params
from print_pdf import Print
+from remove_embroidery_settings import RemoveEmbroiderySettings
from simulate import Simulate
from zip import Zip
@@ -33,4 +34,5 @@ __all__ = extensions = [Embroider,
CutSatin,
AutoSatin,
Lettering,
- Troubleshoot]
+ Troubleshoot,
+ RemoveEmbroiderySettings]
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]
diff --git a/templates/remove_embroidery_settings.inx b/templates/remove_embroidery_settings.inx
new file mode 100644
index 00000000..d070f34f
--- /dev/null
+++ b/templates/remove_embroidery_settings.inx
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
+ <name>{% trans %}Remove embroidery settings{% endtrans %}</name>
+ <id>org.inkstitch.remove_embroidery_settings.{{ locale }}</id>
+ <dependency type="executable" location="extensions">inkstitch.py</dependency>
+ <dependency type="executable" location="extensions">inkex.py</dependency>
+ <param name="description" type="description">{% trans %}Use this extension to remove the information Ink/Stitch has stored in your document. This can be especially useful if you copy and paste objects from an embroidery design into another document.{% endtrans %}</param>
+ <param name="del_params" type="boolean" _gui-text="{% trans %}Remove Params{% endtrans %}"
+ _gui-description="{% trans %}Removes params from selected objects or all objects if nothing is selected.{% endtrans %}">true</param>
+ <param name="del_commands" type="boolean" _gui-text="{% trans %}Remove Commands{% endtrans %}"
+ _gui-description="{% trans %}Removes visual commands from selected objects or all objects if nothing is selected.{% endtrans %}">false</param>
+ <param name="del_print" type="boolean" _gui-text="{% trans %}Remove Print Settings from SVG metadata{% endtrans %}">false</param>
+ <param name="extension" type="string" gui-hidden="true">remove_embroidery_settings</param>
+ <effect>
+ <object-type>all</object-type>
+ <effects-menu>
+ <submenu name="Ink/Stitch">
+ </submenu>
+ </effects-menu>
+ </effect>
+ <script>
+ <command reldir="extensions" interpreter="python">inkstitch.py</command>
+ </script>
+</inkscape-extension>