# HG changeset patch # User Edouard Tisserant # Date 1563451773 -7200 # Node ID 2769b3aed34d0fa1a4b6737fcde11a8865778b82 # Parent 55c43933ff51a4f3d62ae9e3940c56621a6ea319 Use a POU Library's Generate_C to collect all variables in SVGHMI. diff -r 55c43933ff51 -r 2769b3aed34d features.py --- a/features.py Wed Jul 17 09:44:44 2019 +0200 +++ b/features.py Thu Jul 18 14:09:33 2019 +0200 @@ -12,7 +12,8 @@ ('Native', 'NativeLib.NativeLibrary', True), ('Python', 'py_ext.PythonLibrary', True), ('Etherlab', 'etherlab.EthercatMaster.EtherlabLibrary', False), - ('SVGUI', 'svgui.SVGUILibrary', False)] + ('SVGUI', 'svgui.SVGUILibrary', False), + ('SVGHMI', 'svghmi.SVGHMILibrary', False)] catalog = [ ('canfestival', _('CANopen support'), _('Map located variables over CANopen'), 'canfestival.canfestival.RootClass'), diff -r 55c43933ff51 -r 2769b3aed34d svghmi/svghmi.py --- a/svghmi/svghmi.py Wed Jul 17 09:44:44 2019 +0200 +++ b/svghmi/svghmi.py Thu Jul 18 14:09:33 2019 +0200 @@ -16,11 +16,40 @@ from POULibrary import POULibrary from docutil import open_svg +HMI_TYPES_DESC = { + "HMI_CLASS":{}, + "HMI_LABEL":{}, + "HMI_STRING":{}, + "HMI_INT":{}, + "HMI_REAL":{} +} + +HMI_TYPES = HMI_TYPES_DESC.keys() class SVGHMILibrary(POULibrary): def GetLibraryPath(self): return paths.AbsNeighbourFile(__file__, "pous.xml") + def Generate_C(self, buildpath, varlist, IECCFLAGS): + + # Filter known HMI types + hmi_types_instances = [v for v in varlist if v["derived"] in HMI_TYPES] + + # TODO deduce HMI tree + + # TODO generate C code to observe/access HMI tree variables + svghmi_c_filepath = paths.AbsNeighbourFile(__file__, "svghmi.c") + svghmi_c_file = open(svghmi_c_filepath, 'r') + svghmi_c_code = svghmi_c_file.read() + svghmi_c_file.close() + svghmi_c_code = svghmi_c_code % { "the code": "/* TODO */"} + + gen_svghmi_c_path = os.path.join(buildpath, "svghmi.c") + gen_svghmi_c = open(gen_svghmi_c_path, 'w') + gen_svghmi_c.write(svghmi_c_code) + gen_svghmi_c.close() + + return (["svghmi"], [(gen_svghmi_c_path, IECCFLAGS)], True), "" class SVGHMI(object): XSD = """ @@ -70,9 +99,7 @@ @return: [(C_file_name, CFLAGS),...] , LDFLAGS_TO_APPEND """ - # TODO : get variable list from Controller - # self.GetCTRoot().blah - # TODO deduce HMI tree + # TODO fetch HMI tree from library svgfile = self._getSVGpath() if os.path.exists(svgfile):