reset embroidery settings (#506)

pull/618/head
Kaalleen 2020-02-02 20:08:00 +01:00 zatwierdzone przez GitHub
rodzic 6873098dee
commit 0c0874b91c
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 107 dodań i 2 usunięć

Wyświetl plik

@ -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]

Wyświetl plik

@ -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]

Wyświetl plik

@ -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>