PLCControler.py
changeset 45 42637f721b5b
parent 42 4a8400732001
child 46 4379e98a30aa
--- a/PLCControler.py	Wed Jul 18 16:22:39 2007 +0200
+++ b/PLCControler.py	Thu Jul 19 11:53:14 2007 +0200
@@ -1073,7 +1073,7 @@
                     infos["connectors"]["outputs"].append(connector)
             elif isinstance(instance, plcopen.inVariable):
                 infos["name"] = instance.getExpression()
-                infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
+                infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "input"
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
@@ -1081,7 +1081,7 @@
                 infos["connector"]["edge"] = instance.getConnectorEdge()
             elif isinstance(instance, plcopen.outVariable):
                 infos["name"] = instance.getExpression()
-                infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
+                infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "output"
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
@@ -1095,7 +1095,7 @@
                         infos["connector"]["links"].append(dic)
             elif isinstance(instance, plcopen.inOutVariable):
                 infos["name"] = instance.getExpression()
-                infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
+                infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "inout"
                 infos["connectors"] = {"input":{},"output":{}}
                 infos["connectors"]["output"]["position"] = instance.connectionPointOut.getRelPosition()
@@ -1112,13 +1112,13 @@
                         infos["connectors"]["input"]["links"].append(dic)
             elif isinstance(instance, plcopen.continuation):
                 infos["name"] = instance.getName()
-                infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
+                infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "continuation"
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointOut.getRelPosition()
             elif isinstance(instance, plcopen.connector):
                 infos["name"] = instance.getName()
-                infos["value_type"] = self.GetPouVarValueType(self.GetCurrentElementEditing(), infos["name"])
+                infos["value_type"] = self.GetCurrentPouVarValueType(infos["name"])
                 infos["type"] = "connection"
                 infos["connector"] = {}
                 infos["connector"]["position"] = instance.connectionPointIn.getRelPosition()
@@ -1273,7 +1273,13 @@
         return False
     
     # Return the variable type of the given pou
-    def GetPouVarValueType(self, pou, varname):
+    def GetCurrentPouVarValueType(self, varname):
+        current_name = self.ElementsOpened[self.CurrentElementEditing]
+        words = current_name.split("::")
+        if len(words) == 1:
+            pou = self.Project.getPou(current_name)
+        else:
+            pou = self.Project.getPou(words[1])
         for type, varlist in pou.getVars():
             for var in varlist.getVariable():
                 if var.getName() == varname: