svghmi/ui.py
branchsvghmi
changeset 3235 b2b6bf45aa2d
parent 3234 f2bfb047d0e6
child 3237 d000a91d1e95
--- 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