From 375ccb664d77bb5ece76462a68977e21a5af096e Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Thu, 5 Aug 2021 21:49:41 +0200 Subject: [PATCH] small enhancement in invetory sticker, added quick svg reload extension --- .../inventory_sticker/inventory_sticker.py | 10 ++---- .../papercraft_unfold/papercraft_unfold.py | 2 +- extensions/fablabchemnitz/reload/reload.inx | 14 ++++++++ extensions/fablabchemnitz/reload/reload.py | 32 +++++++++++++++++++ 4 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 extensions/fablabchemnitz/reload/reload.inx create mode 100644 extensions/fablabchemnitz/reload/reload.py diff --git a/extensions/fablabchemnitz/inventory_sticker/inventory_sticker.py b/extensions/fablabchemnitz/inventory_sticker/inventory_sticker.py index 6e7068a3..034f87a5 100644 --- a/extensions/fablabchemnitz/inventory_sticker/inventory_sticker.py +++ b/extensions/fablabchemnitz/inventory_sticker/inventory_sticker.py @@ -397,15 +397,9 @@ class InventorySticker(inkex.Effect): root.set("viewBox", "%f %f %f %f" % (0, 0, sticker_width, sticker_height)) #clean the document (make it blank) to avoid printing duplicated things - ct = 0 for node in self.document.xpath('//*', namespaces=inkex.NSS): - ct = ct + 1 - if ct > 3: #we keep svg:svg, sodipodi:namedview and svg:defs which defines the default canvas without any content inside - #inkex.errormsg(str(node)) - try: - root.remove(node) - except Exception as e: - pass + if node.TAG not in ('svg', 'defs', 'namedview'): + node.delete() #set the document units self.document.getroot().find(inkex.addNS("namedview", "sodipodi")).set("inkscape:document-units", "px") diff --git a/extensions/fablabchemnitz/papercraft_unfold/papercraft_unfold.py b/extensions/fablabchemnitz/papercraft_unfold/papercraft_unfold.py index 8f954aa5..851d5980 100644 --- a/extensions/fablabchemnitz/papercraft_unfold/papercraft_unfold.py +++ b/extensions/fablabchemnitz/papercraft_unfold/papercraft_unfold.py @@ -189,7 +189,7 @@ class PapercraftUnfold(inkex.EffectExtension): stream.close() doc.set('id', self.svg.get_unique_id('papercraft_unfold')) - self.document.getroot().append(doc) + self.document.getroot().append(doc) #adjust viewport and width/height to have the import at the center of the canvas if self.options.resizetoimport: diff --git a/extensions/fablabchemnitz/reload/reload.inx b/extensions/fablabchemnitz/reload/reload.inx new file mode 100644 index 00000000..6044de4d --- /dev/null +++ b/extensions/fablabchemnitz/reload/reload.inx @@ -0,0 +1,14 @@ + + + Reload drawing + fablabchemnitz.de.reload + + all + + + + + + \ No newline at end of file diff --git a/extensions/fablabchemnitz/reload/reload.py b/extensions/fablabchemnitz/reload/reload.py new file mode 100644 index 00000000..78dc7ce3 --- /dev/null +++ b/extensions/fablabchemnitz/reload/reload.py @@ -0,0 +1,32 @@ +#!/usr/bin/env python3 + +import inkex +from lxml import etree + +class Reload(inkex.EffectExtension): + + def effect(self): + currentDoc = self.document_path() + if currentDoc == "": + self.msg("Your document is not saved as a permanent file yet. Cannot reload.") + exit(1) + stream = open(self.document_path(), 'r') + p = etree.XMLParser(huge_tree=True) + doc = etree.parse(stream, parser=etree.XMLParser(huge_tree=True)) + stream.close() + root = self.document.getroot() + kept = [] #required. if we delete them directly without adding new defs or namedview, inkscape will crash + for node in self.document.xpath('//*', namespaces=inkex.NSS): + if node.TAG not in ('svg', 'defs', 'namedview'): + node.delete() + elif node.TAG in ('defs', 'namedview'): #except 'svg' + kept.append(node) + + children = doc.getroot().getchildren() + for child in children: + root.append(child) + for k in kept: + k.delete() + +if __name__ == '__main__': + Reload().run() \ No newline at end of file