From 8d19cdc59d00836fdf3ef037f31e7130771f84d2 Mon Sep 17 00:00:00 2001 From: Andreas Date: Fri, 28 Jan 2022 21:54:20 +0100 Subject: adjusted selection_to_guide_line to match new marker creation way --- lib/extensions/selection_to_guide_line.py | 55 ++++--------------------------- lib/marker.py | 2 +- 2 files changed, 7 insertions(+), 50 deletions(-) (limited to 'lib') diff --git a/lib/extensions/selection_to_guide_line.py b/lib/extensions/selection_to_guide_line.py index e11cdb4e..a0d32601 100644 --- a/lib/extensions/selection_to_guide_line.py +++ b/lib/extensions/selection_to_guide_line.py @@ -4,10 +4,10 @@ # Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details. import inkex -from lxml import etree from ..i18n import _ -from ..svg.tags import SVG_PATH_TAG, SVG_POLYLINE_TAG, SVG_DEFS_TAG +from ..marker import set_marker +from ..svg.tags import EMBROIDERABLE_TAGS from .base import InkstitchExtension @@ -18,52 +18,9 @@ class SelectionToGuideLine(InkstitchExtension): return if not self.svg.selected: - inkex.errormsg( - _("Please select one object to be marked as a guide line.")) + inkex.errormsg(_("Please select at least one object to be marked as a guide line.")) return - if len(self.get_nodes()) != 1: - inkex.errormsg( - _("Please select only one object to be marked as a guide line.")) - return - - for guide_line in self.get_nodes(): - if guide_line.tag in (SVG_PATH_TAG, SVG_POLYLINE_TAG): - self.set_marker(guide_line) - - def set_marker(self, node): - xpath = ".//marker[@id='inkstitch-guide-line-marker']" - guide_line_marker = self.document.xpath(xpath) - - if not guide_line_marker: - # get or create def element - defs = self.document.find(SVG_DEFS_TAG) - if defs is None: - defs = etree.SubElement(self.document, SVG_DEFS_TAG) - - # insert marker - marker = """ - - - - - """ # noqa: E501 - defs.append(etree.fromstring(marker)) - - # attach marker to node - style = node.get('style') or '' - style = style.split(";") - style = [i for i in style if not i.startswith('marker-start')] - style.append('marker-start:url(#inkstitch-guide-line-marker)') - node.set('style', ";".join(style)) + for pattern in self.get_nodes(): + if pattern.tag in EMBROIDERABLE_TAGS: + set_marker(pattern, 'start', 'guide-line') diff --git a/lib/marker.py b/lib/marker.py index 4f262abe..1d9145e7 100644 --- a/lib/marker.py +++ b/lib/marker.py @@ -33,5 +33,5 @@ def set_marker(node, position, marker): style = node.get('style') or '' style = style.split(";") style = [i for i in style if not i.startswith('marker-%s' % position)] - style.append('marker-%s:url(#inkstitch-pattern-marker)' % position) + style.append('marker-%s:url(#inkstitch-%s-marker)' % (position, marker)) node.set('style', ";".join(style)) -- cgit v1.2.3