From 1505cea3d445c9827dd0436e84d8e61593f423eb Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 24 Jul 2018 22:15:28 -0400 Subject: add support for ignore command --- lib/extensions/base.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/extensions/base.py') diff --git a/lib/extensions/base.py b/lib/extensions/base.py index d230f1b0..5e5adccd 100644 --- a/lib/extensions/base.py +++ b/lib/extensions/base.py @@ -114,6 +114,9 @@ class InkstitchExtension(inkex.Effect): nodes = [] element = EmbroideryElement(node) + if element.has_command('ignore'): + return [] + if element.has_style('display') and element.get_style('display') is None: return [] -- cgit v1.2.3 From 5d17cb9e229ad86fe2c5e932d585df2329c9f076 Mon Sep 17 00:00:00 2001 From: Lex Neva Date: Tue, 31 Jul 2018 21:00:30 -0400 Subject: add ignore layer command --- lib/extensions/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/extensions/base.py') diff --git a/lib/extensions/base.py b/lib/extensions/base.py index 5e5adccd..41ed8093 100644 --- a/lib/extensions/base.py +++ b/lib/extensions/base.py @@ -114,7 +114,7 @@ class InkstitchExtension(inkex.Effect): nodes = [] element = EmbroideryElement(node) - if element.has_command('ignore'): + if element.has_command('ignore_object'): return [] if element.has_style('display') and element.get_style('display') is None: -- cgit v1.2.3 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/base.py | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'lib/extensions/base.py') diff --git a/lib/extensions/base.py b/lib/extensions/base.py index 41ed8093..571e3c2d 100644 --- a/lib/extensions/base.py +++ b/lib/extensions/base.py @@ -7,7 +7,7 @@ from collections import MutableMapping from ..svg.tags import * from ..elements import AutoFill, Fill, Stroke, SatinColumn, Polyline, EmbroideryElement from ..utils import cache -from ..commands import is_command +from ..commands import is_command, layer_commands SVG_METADATA_TAG = inkex.addNS("metadata", "svg") @@ -110,42 +110,40 @@ class InkstitchExtension(inkex.Effect): inkex.errormsg(_("No embroiderable paths found in document.")) inkex.errormsg(_("Tip: use Path -> Object to Path to convert non-paths.")) - def descendants(self, node): + def descendants(self, node, selected=False): nodes = [] element = EmbroideryElement(node) if element.has_command('ignore_object'): return [] + if node.tag == SVG_GROUP_TAG and node.get(INKSCAPE_GROUPMODE) == "layer": + if layer_commands(node, "ignore_layer"): + return [] + if element.has_style('display') and element.get_style('display') is None: return [] if node.tag == SVG_DEFS_TAG: return [] + if self.selected: + if node.get("id") in self.selected: + selected = True + else: + # if the user didn't select anything that means we process everything + selected = True + for child in node: - nodes.extend(self.descendants(child)) + nodes.extend(self.descendants(child, selected)) - if node.tag in EMBROIDERABLE_TAGS: + if selected and node.tag in EMBROIDERABLE_TAGS: nodes.append(node) return nodes def get_nodes(self): - """Get all XML nodes, or just those selected - - effect is an instance of a subclass of inkex.Effect. - """ - - if self.selected: - nodes = [] - for node in self.document.getroot().iter(): - if node.get("id") in self.selected: - nodes.extend(self.descendants(node)) - else: - nodes = self.descendants(self.document.getroot()) - - return nodes + return self.descendants(self.document.getroot()) def detect_classes(self, node): if node.tag == SVG_POLYLINE_TAG: -- cgit v1.2.3