--- a/svghmi/svghmi.py Tue Nov 30 18:43:10 2021 +0100
+++ b/svghmi/svghmi.py Sun Jan 16 17:00:58 2022 +0100
@@ -130,6 +130,10 @@
# ignores variables starting with _TMP_
if path[-1].startswith("_TMP_"):
continue
+ vartype = v["vartype"]
+ # ignores external variables
+ if vartype == "EXT":
+ continue
derived = v["derived"]
kwargs={}
if derived == "HMI_NODE":
@@ -138,7 +142,7 @@
kwargs['hmiclass'] = path[-1]
else:
name = path[-1]
- new_node = HMITreeNode(path, name, derived, v["type"], v["vartype"], v["C_path"], **kwargs)
+ new_node = HMITreeNode(path, name, derived, v["type"], vartype, v["C_path"], **kwargs)
placement_result = hmi_tree_root.place_node(new_node)
if placement_result is not None:
cause, problematic_node = placement_result
@@ -148,10 +152,10 @@
".".join(new_node.path))
last_FB = None
- for v in varlist:
- if v["vartype"] == "FB":
- last_FB = v
- if v["C_path"] == problematic_node:
+ for _v in varlist:
+ if _v["vartype"] == "FB":
+ last_FB = _v
+ if _v["C_path"] == problematic_node:
break
if last_FB is not None:
failing_parent = last_FB["type"]
@@ -187,14 +191,14 @@
if hasattr(node, "iectype"):
sz = DebugTypesSize.get(node.iectype, 0)
variable_decl_array += [
- "{&(" + node.cpath + "), " + node.iectype + {
+ "HMITREE_ITEM_INITIALIZER(" + node.cpath + ", " + node.iectype + {
"EXT": "_P_ENUM",
"IN": "_P_ENUM",
"MEM": "_O_ENUM",
"OUT": "_O_ENUM",
"VAR": "_ENUM"
}[node.vartype] + ", " +
- str(buf_index) + ", 0, }"]
+ str(buf_index) + ")"]
buf_index += sz
item_count += 1
if len(node.path) == 1:
@@ -572,7 +576,8 @@
# call xslt transform on Inkscape's SVG to generate XHTML
try:
self.ProgressStart("xslt", "XSLT transform")
- result = transform.transform(svgdom) # , profile_run=True)
+ result = transform.transform(
+ svgdom, instance_name=location_str) # , profile_run=True)
self.ProgressEnd("xslt")
except XSLTApplyError as e:
self.FatalError("SVGHMI " + svghmi_options["name"] + ": " + e.message)
@@ -826,8 +831,11 @@
self.GetCTRoot().logger.write_error(
_("Font file does not exist: %s\n") % fontfile)
+ def CTNGlobalInstances(self):
+ location_str = "_".join(map(str, self.GetCurrentLocation()))
+ return [("CURRENT_PAGE_"+location_str, "HMI_STRING", "")]
+
## In case one day we support more than one heartbeat
- # def CTNGlobalInstances(self):
# view_name = self.BaseParams.getName()
# return [(view_name + "_HEARTBEAT", "HMI_INT", "")]