diff options
| author | Lex Neva <github.com@lexneva.name> | 2021-08-07 10:58:02 -0400 |
|---|---|---|
| committer | Lex Neva <github.com@lexneva.name> | 2021-08-07 10:58:02 -0400 |
| commit | 12ef0c84aa732623b210fdce1a7b8301aa435217 (patch) | |
| tree | 4c7fbb33c4840be4bf8d8fecfd7fe481d0e56895 /lib/extensions/base.py | |
| parent | c1e6558f7852def419adfbeb087b2194e6030a2c (diff) | |
| parent | d6e20fae8a03ac162ae0c863fff06b5bd8b77902 (diff) | |
Merge remote-tracking branch 'origin/main' into kaalleen/satin-patterns
Diffstat (limited to 'lib/extensions/base.py')
| -rw-r--r-- | lib/extensions/base.py | 28 |
1 files changed, 9 insertions, 19 deletions
diff --git a/lib/extensions/base.py b/lib/extensions/base.py index 862d031e..476e4969 100644 --- a/lib/extensions/base.py +++ b/lib/extensions/base.py @@ -50,19 +50,7 @@ class InkStitchMetadata(MutableMapping): def __init__(self, document): self.document = document - self.metadata = self._get_or_create_metadata() - - def _get_or_create_metadata(self): - metadata = self.document.find(SVG_METADATA_TAG) - - if metadata is None: - metadata = etree.SubElement(self.document.getroot(), SVG_METADATA_TAG) - - # move it so that it goes right after the first element, sodipodi:namedview - self.document.getroot().remove(metadata) - self.document.getroot().insert(1, metadata) - - return metadata + self.metadata = document.metadata # Because this class inherints from MutableMapping, all we have to do is # implement these five methods and we get a full dict-like interface. @@ -118,15 +106,17 @@ class InkstitchExtension(inkex.Effect): if g.get(INKSCAPE_GROUPMODE) == "layer": g.set("style", "display:none") - def ensure_current_layer(self): + def get_current_layer(self): # if no layer is selected, inkex defaults to the root, which isn't # particularly useful - if self.svg.get_current_layer() is self.document.getroot(): + current_layer = self.svg.get_current_layer() + if current_layer is self.document.getroot(): try: - self.current_layer = self.document.xpath(".//svg:g[@inkscape:groupmode='layer']", namespaces=inkex.NSS)[0] + 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 + return current_layer def no_elements_error(self): if self.svg.selected: @@ -135,7 +125,7 @@ class InkstitchExtension(inkex.Effect): else: inkex.errormsg(_("There are no objects in the entire document that Ink/Stitch knows how to work with.") + "\n") - inkex.errormsg(_("Tip: Select some objects and use Path -> Object to Path to convert them to paths.") + "\n") + inkex.errormsg(_("Tip: Run Extensions > Ink/Stitch > Troubleshoot > Troubleshoot Objects") + "\n") def descendants(self, node, selected=False, troubleshoot=False): # noqa: C901 nodes = [] @@ -148,7 +138,7 @@ class InkstitchExtension(inkex.Effect): if len(list(layer_commands(node, "ignore_layer"))): return [] - if element.has_style('display') and element.get_style('display') is None: + if (node.tag in EMBROIDERABLE_TAGS or node.tag == SVG_GROUP_TAG) and element.get_style('display', 'inline') is None: return [] if node.tag == SVG_DEFS_TAG: @@ -211,7 +201,7 @@ class InkstitchExtension(inkex.Effect): return patches def get_inkstitch_metadata(self): - return InkStitchMetadata(self.document) + return InkStitchMetadata(self.svg) def get_base_file_name(self): svg_filename = self.document.getroot().get(inkex.addNS('docname', 'sodipodi'), "embroidery.svg") |
