297 for msg in msgs: |
297 for msg in msgs: |
298 self.msg += msg.text + "\n" |
298 self.msg += msg.text + "\n" |
299 |
299 |
300 def GetSubHMITree(self, _context): |
300 def GetSubHMITree(self, _context): |
301 return [self.hmitree_node.etree()] |
301 return [self.hmitree_node.etree()] |
|
302 def AnalyseWidget(self): |
|
303 self.msg = "" |
|
304 |
|
305 try: |
|
306 if self.selected_SVG is None: |
|
307 raise Exception(_("No widget selected")) |
|
308 |
|
309 transform = XSLTransform( |
|
310 os.path.join(ScriptDirectory, "analyse_widget.xslt"),[]) |
|
311 |
|
312 svgdom = etree.parse(self.selected_SVG) |
|
313 |
|
314 result = transform.transform(svgdom) |
|
315 |
|
316 for entry in transform.get_error_log(): |
|
317 self.msg += "XSLT: " + entry.message + "\n" |
|
318 |
|
319 except Exception as e: |
|
320 self.msg += str(e) |
|
321 except XSLTApplyError as e: |
|
322 self.msg += "Widget analysis error: " + e.message |
|
323 else: |
|
324 return result |
|
325 |
|
326 def UpdateUI(self, signature): |
|
327 if signature is not None: |
|
328 print(etree.tostring(signature, pretty_print=True)) |
|
329 widgets = signature.getroot() |
|
330 for widget in widgets: |
|
331 widget_type = widget.get("type") |
|
332 print(widget_type) |
|
333 for path in widget: |
|
334 path_value = path.get("value") |
|
335 path_accepts = map( |
|
336 str.strip, path.get("accepts", '')[1:-1].split(',')) |
|
337 print(path_value, path_accepts) |
|
338 |
|
339 |
302 |
340 |
303 def ValidateWidget(self): |
341 def ValidateWidget(self): |
304 self.msg = "" |
342 self.msg = "" |
|
343 |
|
344 signature = self.AnalyseWidget() |
|
345 |
|
346 self.UpdateUI(signature) |
|
347 |
|
348 return |
305 |
349 |
306 if self.tempf is not None: |
350 if self.tempf is not None: |
307 os.unlink(self.tempf.name) |
351 os.unlink(self.tempf.name) |
308 self.tempf = None |
352 self.tempf = None |
309 |
353 |