diff -r f2bfb047d0e6 -r b2b6bf45aa2d svghmi/ui.py --- a/svghmi/ui.py Sun May 02 23:43:57 2021 +0200 +++ b/svghmi/ui.py Mon May 03 00:04:08 2021 +0200 @@ -299,10 +299,54 @@ def GetSubHMITree(self, _context): return [self.hmitree_node.etree()] + def AnalyseWidget(self): + self.msg = "" + + try: + if self.selected_SVG is None: + raise Exception(_("No widget selected")) + + transform = XSLTransform( + os.path.join(ScriptDirectory, "analyse_widget.xslt"),[]) + + svgdom = etree.parse(self.selected_SVG) + + result = transform.transform(svgdom) + + for entry in transform.get_error_log(): + self.msg += "XSLT: " + entry.message + "\n" + + except Exception as e: + self.msg += str(e) + except XSLTApplyError as e: + self.msg += "Widget analysis error: " + e.message + else: + return result + + def UpdateUI(self, signature): + if signature is not None: + print(etree.tostring(signature, pretty_print=True)) + widgets = signature.getroot() + for widget in widgets: + widget_type = widget.get("type") + print(widget_type) + for path in widget: + path_value = path.get("value") + path_accepts = map( + str.strip, path.get("accepts", '')[1:-1].split(',')) + print(path_value, path_accepts) + + def ValidateWidget(self): self.msg = "" + signature = self.AnalyseWidget() + + self.UpdateUI(signature) + + return + if self.tempf is not None: os.unlink(self.tempf.name) self.tempf = None