diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2023-05-01 12:03:44 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-01 12:03:44 +0200 |
| commit | ac688331eb3c961281812cd824e3734796ac321d (patch) | |
| tree | 1a018eed3baa590d99786990421dde29dd8d360a /lib/update.py | |
| parent | 2542f124eb4e741687ebc7e0d69b27e2291310c6 (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.py | 33 |
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 |
