unlink clones: add option wether resulting paths should be grouped or not

pull/3624/head
Kaalleen 2025-03-30 20:29:43 +02:00
rodzic 2d18a061e3
commit 37ed8de66d
2 zmienionych plików z 13 dodań i 3 usunięć

Wyświetl plik

@ -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,14 @@ class UnlinkClone(InkstitchExtension):
if isinstance(element, Clone):
resolved = element.resolve_clone(recursive=recursive)
if resolved[0].tag in SVG_SYMBOL_TAG:
group = Group()
parent = cast(BaseElement, resolved[0].getparent()) # Safe assumption that this has a parent.
group = self.get_group(parent)
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)
if self.options.add_group:
parent.replace(resolved[0], group)
else:
resolved[0].delete()
clones_resolved.append((element.node, resolved[0]))
for (clone, resolved_clone) in clones_resolved:
@ -52,3 +56,8 @@ 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 get_group(self, parent):
if self.options.add_group:
return Group()
return parent

Wyświetl plik

@ -6,6 +6,7 @@
<page name="options" gui-text="Options">
<param name="extension" type="string" gui-hidden="true">unlink_clone</param>
<param name="recursive" type="boolean" gui-text="Recursive">true</param>
<param name="add-group" type="boolean" gui-text="Group unlinked elements">true</param>
</page>
<page name="info" gui-text="Help">
<label>Unlink clones and apply the fill stitch angle.</label>