PLCControler.py
changeset 47 2b2f8d88e6d3
parent 46 4379e98a30aa
child 53 4988262d03e3
--- a/PLCControler.py	Thu Jul 19 15:04:41 2007 +0200
+++ b/PLCControler.py	Fri Jul 20 18:28:03 2007 +0200
@@ -261,24 +261,24 @@
             for pou in self.Project.getPous():
                 pou_type = pou.getPouType().getValue()
                 pou_infos = {"name": pou.getName(), "type": ITEM_POU}
-                var_types = {"Input": {"name": "Input", "type": ITEM_CLASS, "values": []},
-                         "Output": {"name": "Output", "type": ITEM_CLASS, "values": []},
-                         "InOut": {"name": "InOut", "type": ITEM_CLASS, "values": []},
-                         "External": {"name": "External", "type": ITEM_CLASS, "values": []},
-                         "Local": {"name": "Local", "type": ITEM_CLASS, "values": []},
-                         "Temp": {"name": "Temp", "type": ITEM_CLASS, "values": []},
-                         "Global": {"name": "Global", "type": ITEM_CLASS, "values": []}}
-                for var in self.GetPouInterfaceVars(pou):
-                    var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []}
-                    if var["Class"] in var_types.keys():
-                        var_types[var["Class"]]["values"].append(var_values)
                 pou_values = []
-                pou_values.append({"name": "Interface", "type": ITEM_CLASS, 
-                    "values": [var_types["Input"], var_types["Output"], var_types["InOut"], var_types["External"]]})
-                pou_values.append({"name": "Variables", "type": ITEM_CLASS, 
-                    "values": [var_types["Local"], var_types["Temp"]]})
-                if pou_type == "program":
-                    pou_values.append(var_types["Global"])
+##                var_types = {"Input": {"name": "Input", "type": ITEM_CLASS, "values": []},
+##                         "Output": {"name": "Output", "type": ITEM_CLASS, "values": []},
+##                         "InOut": {"name": "InOut", "type": ITEM_CLASS, "values": []},
+##                         "External": {"name": "External", "type": ITEM_CLASS, "values": []},
+##                         "Local": {"name": "Local", "type": ITEM_CLASS, "values": []},
+##                         "Temp": {"name": "Temp", "type": ITEM_CLASS, "values": []},
+##                         "Global": {"name": "Global", "type": ITEM_CLASS, "values": []}}
+##                for var in self.GetPouInterfaceVars(pou):
+##                    var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []}
+##                    if var["Class"] in var_types.keys():
+##                        var_types[var["Class"]]["values"].append(var_values)
+##                pou_values.append({"name": "Interface", "type": ITEM_CLASS, 
+##                    "values": [var_types["Input"], var_types["Output"], var_types["InOut"], var_types["External"]]})
+##                pou_values.append({"name": "Variables", "type": ITEM_CLASS, 
+##                    "values": [var_types["Local"], var_types["Temp"]]})
+##                if pou_type == "program":
+##                    pou_values.append(var_types["Global"])
                 if pou.getBodyType() == "SFC":
                     transitions = []
                     for transition in pou.getTransitionList():
@@ -295,21 +295,22 @@
             for config in self.Project.getConfigurations():
                 config_name = config.getName()
                 config_infos = {"name": config_name, "type": ITEM_CONFIGURATION, "values": []}
-                config_vars = {"name": "Global", "type": ITEM_CLASS, "values": []}
-                for var in self.GetConfigurationGlobalVars(config_name):
-                    var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []}
-                    config_vars["values"].append(var_values)
+##                config_vars = {"name": "Global", "type": ITEM_CLASS, "values": []}
+##                for var in self.GetConfigurationGlobalVars(config_name):
+##                    var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []}
+##                    config_vars["values"].append(var_values)
                 resources = {"name": "Resources", "type": ITEM_UNEDITABLE, "values": []}
                 for resource in config.getResource():
                     resource_name = resource.getName()
                     resource_infos = {"name": resource_name, "type": ITEM_RESOURCE, "values": []}
-                    resource_vars = {"name": "Global", "type": ITEM_CLASS, "values": []}
-                    for var in self.GetConfigurationResourceGlobalVars(config_name, resource_name):
-                        var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []}
-                        resource_vars["values"].append(var_values)
-                    resource_infos["values"].append(resource_vars)
+##                    resource_vars = {"name": "Global", "type": ITEM_CLASS, "values": []}
+##                    for var in self.GetConfigurationResourceGlobalVars(config_name, resource_name):
+##                        var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []}
+##                        resource_vars["values"].append(var_values)
+##                    resource_infos["values"].append(resource_vars)
                     resources["values"].append(resource_infos)
-                config_infos["values"] = [config_vars, resources]
+##                config_infos["values"] = [config_vars, resources]
+                config_infos["values"] = [resources]
                 configurations["values"].append(config_infos)
             infos["values"] = [{"name": "Properties", "type": ITEM_UNEDITABLE, "values": []},
                                pou_types["function"], pou_types["functionBlock"], 
@@ -851,6 +852,8 @@
             words = pou_name.split("::")
             if len(words) == 1:
                 names.append(pou_name)
+            elif len(words) == 2:
+                names.append(words[1])
             else:
                 names.append("%s-%s"%(words[1],words[2]))
         return names
@@ -864,6 +867,10 @@
         return "A::%s::%s" % (pou, action)
 
     # Compute a pou  name
+    def ComputeConfigurationName(self, config):
+        return "C::%s" % config
+
+    # Compute a pou  name
     def ComputeConfigurationResourceName(self, config, resource):
         return "R::%s::%s" % (config, resource)
     
@@ -885,6 +892,10 @@
     def OpenPouActionEditing(self, pou, action):
         return self.OpenElementEditing(self.ComputePouActionName(pou, action))
 
+    # Open a configuration resource by giving configuration name
+    def OpenConfigurationEditing(self, config):
+        return self.OpenElementEditing(self.ComputeConfigurationName(config))
+
     # Open a configuration resource by giving configuration and resource names
     def OpenConfigurationResourceEditing(self, config, resource):
         return self.OpenElementEditing(self.ComputeConfigurationResourceName(config, resource))
@@ -901,8 +912,12 @@
     def IsPouActionEditing(self, pou, action):
         return self.ComputePouActionName(pou, action) in self.ElementsOpened
 
-    # Return if pou action given by pou and action names is opened
-    def IsConfigurationResourceEditing(self, pou, action):
+    # Return if pou action given by configuration name is opened
+    def IsConfigurationEditing(self, pou):
+        return self.ComputeConfigurationName(config) in self.ElementsOpened
+
+    # Return if pou action given by configuration and resource names is opened
+    def IsConfigurationResourceEditing(self, pou, resource):
         return self.ComputeConfigurationResourceName(config, resource) in self.ElementsOpened
 
     # Close current pou editing
@@ -932,6 +947,10 @@
     def ChangePouActionEditing(self, pou, action):
         return self.ChangeElementEditing(self.ComputePouActionName(pou, action))
 
+    # Change current pou editing for action given by configuration name
+    def ChangeConfigurationEditing(self, config):
+        return self.ChangeElementEditing(self.ComputeConfigurationName(config))
+
     # Change current pou editing for action given by configuration and resource names
     def ChangeConfigurationResourceEditing(self, config, resource):
         return self.ChangeElementEditing(self.ComputeConfigurationResourceName(config, resource))
@@ -955,6 +974,9 @@
                         return pou.getTransition(words[2])
                     elif words[0] == 'A':
                         return pou.getAction(words[2])
+                elif words[0] == 'C':
+                    result = self.Project.getConfiguration(words[1])
+                    return result
                 elif words[0] == 'R':
                     result = self.Project.getConfigurationResource(words[1], words[2])
                     return result
@@ -968,6 +990,8 @@
             words = name.split("::")
             if len(words) == 1:
                 return name
+            elif len(words) == 2:
+                return words[1]
             else:
                 return words[2]
         return None
@@ -983,7 +1007,9 @@
             words = name.split("::")
             if len(words) == 1:
                 return self.GetPouType(name)
-            else:
+            elif len(words) == 2:
+                return None
+            elif words[0] != "R":
                 return self.GetPouType(words[1])
         return None