SVGHMI : Added python fomating {port} and {name} to commands so that command can build target URL svghmi
authorEdouard Tisserant <edouard.tisserant@gmail.com>
Mon, 13 Jan 2020 15:15:01 +0100
branchsvghmi
changeset 2824 074f43e6e114
parent 2823 d631f8671c75
child 2825 b4b69e85ed53
SVGHMI : Added python fomating {port} and {name} to commands so that command can build target URL
svghmi/svghmi.py
tests/svghmi/plc.xml
tests/svghmi/svghmi_0@svghmi/confnode.xml
--- a/svghmi/svghmi.py	Fri Jan 10 17:00:01 2020 +0100
+++ b/svghmi/svghmi.py	Mon Jan 13 15:15:01 2020 +0100
@@ -379,7 +379,6 @@
           <xsd:attribute name="OnStart" type="xsd:string" use="optional"/>
           <xsd:attribute name="OnStop" type="xsd:string" use="optional"/>
           <xsd:attribute name="OnWatchdog" type="xsd:string" use="optional"/>
-          <xsd:attribute name="port" type="xsd:string" use="optional" default="8080"/>
         </xsd:complexType>
       </xsd:element>
     </xsd:schema>
@@ -509,33 +508,30 @@
         svghmi_cmds = {}
         for thing in ["Start", "Stop", "Watchdog"]:
              given_command = self.GetParamsAttributes("SVGHMI.On"+thing)["value"]
-             if given_command:
-                 svghmi_cmds[thing] = shlex.split(given_command)
+             svghmi_cmds[thing] = (
+                "Popen(" +
+                repr(shlex.split(given_command.format(port="8008", name=view_name))) + 
+                ")") if given_command else "# no command given"
 
         runtimefile_path = os.path.join(buildpath, "runtime_svghmi1_%s.py" % location_str)
         runtimefile = open(runtimefile_path, 'w')
         runtimefile.write("""
 # TODO : multi        
-svghmi_cmds = %(svghmi_cmds)s
-def svghmi_cmd(cmd):
-    if cmd in svghmi_cmds:
-        Popen(svghmi_cmds[cmd])
-
 def watchdog_trigger():
-    svghmi_cmd("Watchdog")
-
-def _runtime_svghmi1_%(location)s_start():
-    svghmi_root.putChild('%(view_name)s',File('%(xhtml)s', defaultType='application/xhtml+xml'))
-    svghmi_cmd("Start")
-
-def _runtime_svghmi1_%(location)s_stop():
-    svghmi_root.delEntity('%(view_name)s')
-    svghmi_cmd("Stop")
-
-        """ % {"location": location_str,
-               "xhtml": target_fname,
-               "view_name": view_name,
-               "svghmi_cmds": repr(svghmi_cmds)})
+    {svghmi_cmds.Watchdog}
+
+def _runtime_svghmi1_{location}_start():
+    svghmi_root.putChild('{view_name}',File('{xhtml}', defaultType='application/xhtml+xml'))
+    {svghmi_cmds.Start}
+
+def _runtime_svghmi1_{location}_stop():
+    svghmi_root.delEntity('{view_name}')
+    {svghmi_cmds.Stop}
+
+        """.format(location=location_str,
+                   xhtml=target_fname,
+                   view_name=view_name,
+                   svghmi_cmds=type("dicobj",(object,),svghmi_cmds)))
 
         runtimefile.close()
 
--- a/tests/svghmi/plc.xml	Fri Jan 10 17:00:01 2020 +0100
+++ b/tests/svghmi/plc.xml	Mon Jan 13 15:15:01 2020 +0100
@@ -1,7 +1,7 @@
 <?xml version='1.0' encoding='utf-8'?>
 <project xmlns:ns1="http://www.plcopen.org/xml/tc6_0201" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.plcopen.org/xml/tc6_0201">
   <fileHeader companyName="Unknown" productName="Unnamed" productVersion="1" creationDateTime="2019-08-06T14:23:42"/>
-  <contentHeader name="Unnamed" modificationDateTime="2020-01-10T16:48:16">
+  <contentHeader name="Unnamed" modificationDateTime="2020-01-13T15:12:19">
     <coordinateInfo>
       <fbd>
         <scaling x="5" y="5"/>
--- a/tests/svghmi/svghmi_0@svghmi/confnode.xml	Fri Jan 10 17:00:01 2020 +0100
+++ b/tests/svghmi/svghmi_0@svghmi/confnode.xml	Mon Jan 13 15:15:01 2020 +0100
@@ -1,2 +1,2 @@
 <?xml version='1.0' encoding='utf-8'?>
-<SVGHMI xmlns:xsd="http://www.w3.org/2001/XMLSchema" OnWatchdog="echo Banana" OnStart="echo Whaaaa" OnStop="echo Hoooo"/>
+<SVGHMI xmlns:xsd="http://www.w3.org/2001/XMLSchema" OnWatchdog="echo Watchdog for {name} !" OnStart="xdg-open http://127.0.0.1:{port}/{name}" OnStop="echo Closing {name}"/>