summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorKaalleen <36401965+kaalleen@users.noreply.github.com>2025-04-02 17:00:41 +0200
committerGitHub <noreply@github.com>2025-04-02 17:00:41 +0200
commit4abe543a2839a1cd0541d15d2aaee7f3336b1096 (patch)
treead303909200de76b65f3039507101f79567f3200 /lib
parentf809fb52a696e619db32f71d56797573715b4e6a (diff)
Unlink clones: add option to group / not group resulting symbol elements (#3624)
Diffstat (limited to 'lib')
-rw-r--r--lib/extensions/unlink_clone.py20
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()