From 19bb8a5a6dbe4244a590147187949d0555eb9fbc Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Thu, 16 Aug 2018 22:50:34 -0400 Subject: new extension to add layer commands --- lib/extensions/layer_commands.py | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 lib/extensions/layer_commands.py (limited to 'lib/extensions/layer_commands.py') diff --git a/lib/extensions/layer_commands.py b/lib/extensions/layer_commands.py new file mode 100644 index 00000000..88170f66 --- /dev/null +++ b/lib/extensions/layer_commands.py @@ -0,0 +1,48 @@ +import os +import sys +import inkex + +from .commands import CommandsExtension +from ..i18n import _ +from ..svg.tags import SVG_USE_TAG, XLINK_HREF +from ..svg import get_correction_transform + + +class LayerCommands(CommandsExtension): + COMMANDS = ["ignore_layer"] + + def ensure_current_layer(self): + # if no layer is selected, inkex defaults to the root, which isn't + # particularly useful + if self.current_layer is self.document.getroot(): + try: + self.current_layer = self.document.xpath(".//svg:g[@inkscape:groupmode='layer']", namespaces=inkex.NSS)[0] + except IndexError: + # No layers at all?? Fine, we'll stick with the default. + pass + + def effect(self): + commands = [command for command in self.COMMANDS if getattr(self.options, command)] + + if not commands: + inkex.errormsg(_("Please choose one or more commands to add.")) + return + + self.ensure_current_layer() + correction_transform = get_correction_transform(self.current_layer, child=True) + + for i, command in enumerate(commands): + self.ensure_symbol(command) + + node = inkex.etree.SubElement(self.current_layer, SVG_USE_TAG, + { + "id": self.uniqueId("use"), + XLINK_HREF: "#inkstitch_%s" % command, + "height": "100%", + "width": "100%", + "x": str(i * 20), + "y": "-10", + "transform": correction_transform + }) + + namedview = self.document.xpath("//sodipodi:namedview", namespaces=inkex.NSS) -- cgit v1.2.3