summaryrefslogtreecommitdiff
path: root/lib/update.py
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2023-05-01 12:03:44 +0200
committerGitHub <noreply@github.com>2023-05-01 12:03:44 +0200
commitac688331eb3c961281812cd824e3734796ac321d (patch)
tree1a018eed3baa590d99786990421dde29dd8d360a /lib/update.py
parent2542f124eb4e741687ebc7e0d69b27e2291310c6 (diff)
Add svg updater extension (#2252)
* add updater extension * update legacy underlay_fill_angle: comma to space
Diffstat (limited to 'lib/update.py')
-rw-r--r--lib/update.py33
1 files changed, 21 insertions, 12 deletions
diff --git a/lib/update.py b/lib/update.py
index f8e6740c..6287a77c 100644
--- a/lib/update.py
+++ b/lib/update.py
@@ -4,12 +4,12 @@ from .elements import EmbroideryElement
from .i18n import _
from .metadata import InkStitchMetadata
from .svg import PIXELS_PER_MM
-from .svg.tags import INKSTITCH_ATTRIBS
+from .svg.tags import EMBROIDERABLE_TAGS, INKSTITCH_ATTRIBS
INKSTITCH_SVG_VERSION = 1
-def update_inkstitch_document(svg):
+def update_inkstitch_document(svg, selection=None):
document = svg.getroot()
# get the inkstitch svg version from the document
search_string = "//*[local-name()='inkstitch_svg_version']//text()"
@@ -41,10 +41,15 @@ def update_inkstitch_document(svg):
return
# update elements
- for element in document.iterdescendants():
- # We are just checking for params and update them.
- # No need to check for specific stitch types at this point
- update_legacy_params(EmbroideryElement(element), file_version, INKSTITCH_SVG_VERSION)
+ if selection:
+ # this comes from the updater extension where we only update selected elements
+ for element in selection:
+ update_legacy_params(EmbroideryElement(element), file_version, INKSTITCH_SVG_VERSION)
+ else:
+ # this is the automatic update when a legacy inkstitch svg version was recognized
+ for element in document.iterdescendants():
+ if element.tag in EMBROIDERABLE_TAGS:
+ update_legacy_params(EmbroideryElement(element), file_version, INKSTITCH_SVG_VERSION)
_update_inkstitch_svg_version(svg)
@@ -90,17 +95,26 @@ def _update_to_one(element): # noqa: C901
elif legacy_fill_method == 3:
element.set_param('fill_method', 'legacy_fill')
+ underlay_angle = element.get_param('fill_underlay_angle', None)
+ if underlay_angle and ',' in underlay_angle:
+ element.set_param('fill_underlay_angle', underlay_angle.replace(',', ' '))
+
# legacy satin method
if element.get_boolean_param('e_stitch', False) is True:
element.remove_param('e_stitch')
element.set_param('satin_method', 'e_stitch')
+ if element.get_boolean_param('satin_column', False):
+ # reverse_rails defaults to Automatic, but we should never reverse an
+ # old satin automatically, only new ones
+ element.set_param('reverse_rails', 'none')
+
# default setting for fill_underlay has changed
if legacy_attribs and not element.get_param('fill_underlay', ""):
element.set_param('fill_underlay', False)
# convert legacy stroke_method
- if element.get_style("stroke"):
+ if element.get_style("stroke") and not element.node.get('inkscape:connection-start', None):
# manual stitch
legacy_manual_stitch = element.get_boolean_param('manual_stitch', False)
if legacy_manual_stitch is True:
@@ -124,11 +138,6 @@ def _update_to_one(element): # noqa: C901
element.set_param('grid_size_mm', size)
element.remove_param('grid_size')
- if element.get_boolean_param('satin_column', False):
- # reverse_rails defaults to Automatic, but we should never reverse an
- # old satin automatically, only new ones
- element.set_param('reverse_rails', 'none')
-
def _replace_legacy_embroider_param(element, param):
# remove "embroider_" prefix