summaryrefslogtreecommitdiff
path: root/lib/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'lib/extensions')
-rw-r--r--lib/extensions/base.py9
-rwxr-xr-xlib/extensions/params.py9
2 files changed, 13 insertions, 5 deletions
diff --git a/lib/extensions/base.py b/lib/extensions/base.py
index 5f840417..4a2895d0 100644
--- a/lib/extensions/base.py
+++ b/lib/extensions/base.py
@@ -7,11 +7,11 @@ import os
import inkex
+from ..elements.utils import iterate_nodes, nodes_to_elements
from ..i18n import _
from ..metadata import InkStitchMetadata
from ..svg import generate_unique_id
from ..svg.tags import INKSCAPE_GROUPMODE, SVG_GROUP_TAG
-from ..elements.utils import iterate_nodes, nodes_to_elements
from ..update import update_inkstitch_document
@@ -75,14 +75,17 @@ class InkstitchExtension(inkex.EffectExtension):
return False
def elements_to_stitch_groups(self, elements):
+ next_elements = [None]
+ if len(elements) > 1:
+ next_elements = elements[1:] + next_elements
stitch_groups = []
- for element in elements:
+ for element, next_element in zip(elements, next_elements):
if stitch_groups:
last_stitch_group = stitch_groups[-1]
else:
last_stitch_group = None
- stitch_groups.extend(element.embroider(last_stitch_group))
+ stitch_groups.extend(element.embroider(last_stitch_group, next_element))
return stitch_groups
diff --git a/lib/extensions/params.py b/lib/extensions/params.py
index dd5c427c..0cac9365 100755
--- a/lib/extensions/params.py
+++ b/lib/extensions/params.py
@@ -563,12 +563,12 @@ class SettingsPanel(wx.Panel):
try:
wx.CallAfter(self._hide_warning)
last_stitch_group = None
- for node in nodes:
+ for node, next_node in zip_longest(nodes, self._get_next_nodes(nodes)):
# Making a copy of the embroidery element is an easy
# way to drop the cache in the @cache decorators used
# for many params in embroider.py.
- stitch_groups.extend(copy(node).embroider(last_stitch_group))
+ stitch_groups.extend(copy(node).embroider(last_stitch_group, next_node))
if stitch_groups:
last_stitch_group = stitch_groups[-1]
@@ -587,6 +587,11 @@ class SettingsPanel(wx.Panel):
except Exception:
wx.CallAfter(self._show_warning, format_uncaught_exception())
+ def _get_next_nodes(self, nodes):
+ if len(nodes) > 1:
+ return nodes[1:]
+ return []
+
def get_stroke_last_tabs(self):
tabs = self.tabs
stroke_index = [tabs.index(tab) for tab in tabs if tab.name == _("Stroke")]