diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2025-04-02 17:00:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-02 17:00:41 +0200 |
| commit | 4abe543a2839a1cd0541d15d2aaee7f3336b1096 (patch) | |
| tree | ad303909200de76b65f3039507101f79567f3200 /lib/extensions | |
| parent | f809fb52a696e619db32f71d56797573715b4e6a (diff) | |
Unlink clones: add option to group / not group resulting symbol elements (#3624)
Diffstat (limited to 'lib/extensions')
| -rw-r--r-- | lib/extensions/unlink_clone.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/extensions/unlink_clone.py b/lib/extensions/unlink_clone.py index b4af7961..37f1cfa8 100644 --- a/lib/extensions/unlink_clone.py +++ b/lib/extensions/unlink_clone.py @@ -17,6 +17,7 @@ class UnlinkClone(InkstitchExtension): def __init__(self, *args, **kwargs): InkstitchExtension.__init__(self, *args, **kwargs) self.arg_parser.add_argument("--notebook") + self.arg_parser.add_argument("-g", "--add-group", dest="add_group", type=Boolean, default=True) self.arg_parser.add_argument("-r", "--recursive", dest="recursive", type=Boolean, default=True) def effect(self) -> None: @@ -36,11 +37,7 @@ class UnlinkClone(InkstitchExtension): if isinstance(element, Clone): resolved = element.resolve_clone(recursive=recursive) if resolved[0].tag in SVG_SYMBOL_TAG: - group = Group() - for child in resolved[0]: - group.append(child) - parent = cast(BaseElement, resolved[0].getparent()) # Safe assumption that this has a parent. - parent.replace(resolved[0], group) + self._resolve_symbol(resolved) clones_resolved.append((element.node, resolved[0])) for (clone, resolved_clone) in clones_resolved: @@ -52,3 +49,16 @@ class UnlinkClone(InkstitchExtension): backlink_attrib = CONNECTION_START if command.connector.get(CONNECTION_START) == ("#"+orig_id) else CONNECTION_END command.connector.set(backlink_attrib, "#"+new_id) resolved_clone.set_id(new_id) + + def _resolve_symbol(self, resolved): + parent = cast(BaseElement, resolved[0].getparent()) # Safe assumption that this has a parent. + if self.options.add_group: + group = Group() + else: + group = parent + for child in resolved[0]: + group.append(child) + if self.options.add_group: + parent.replace(resolved[0], group) + else: + resolved[0].delete() |
