diff options
| author | Lex Neva <github.com@lexneva.name> | 2018-08-16 22:50:34 -0400 |
|---|---|---|
| committer | Lex Neva <github.com@lexneva.name> | 2018-08-16 22:50:34 -0400 |
| commit | 19bb8a5a6dbe4244a590147187949d0555eb9fbc (patch) | |
| tree | 84aec45e6c1236754fedbe58e5464cccabc7c2c8 /lib/extensions/layer_commands.py | |
| parent | 751173080bbc87158619cd98d75c9854ce2d8d01 (diff) | |
new extension to add layer commands
Diffstat (limited to 'lib/extensions/layer_commands.py')
| -rw-r--r-- | lib/extensions/layer_commands.py | 48 |
1 files changed, 48 insertions, 0 deletions
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) |
