259 "functionBlock": {"name": "Function Blocks", "type": ITEM_UNEDITABLE, "values":[]}, |
259 "functionBlock": {"name": "Function Blocks", "type": ITEM_UNEDITABLE, "values":[]}, |
260 "program": {"name": "Programs", "type": ITEM_UNEDITABLE, "values":[]}} |
260 "program": {"name": "Programs", "type": ITEM_UNEDITABLE, "values":[]}} |
261 for pou in self.Project.getPous(): |
261 for pou in self.Project.getPous(): |
262 pou_type = pou.getPouType().getValue() |
262 pou_type = pou.getPouType().getValue() |
263 pou_infos = {"name": pou.getName(), "type": ITEM_POU} |
263 pou_infos = {"name": pou.getName(), "type": ITEM_POU} |
264 var_types = {"Input": {"name": "Input", "type": ITEM_CLASS, "values": []}, |
|
265 "Output": {"name": "Output", "type": ITEM_CLASS, "values": []}, |
|
266 "InOut": {"name": "InOut", "type": ITEM_CLASS, "values": []}, |
|
267 "External": {"name": "External", "type": ITEM_CLASS, "values": []}, |
|
268 "Local": {"name": "Local", "type": ITEM_CLASS, "values": []}, |
|
269 "Temp": {"name": "Temp", "type": ITEM_CLASS, "values": []}, |
|
270 "Global": {"name": "Global", "type": ITEM_CLASS, "values": []}} |
|
271 for var in self.GetPouInterfaceVars(pou): |
|
272 var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []} |
|
273 if var["Class"] in var_types.keys(): |
|
274 var_types[var["Class"]]["values"].append(var_values) |
|
275 pou_values = [] |
264 pou_values = [] |
276 pou_values.append({"name": "Interface", "type": ITEM_CLASS, |
265 ## var_types = {"Input": {"name": "Input", "type": ITEM_CLASS, "values": []}, |
277 "values": [var_types["Input"], var_types["Output"], var_types["InOut"], var_types["External"]]}) |
266 ## "Output": {"name": "Output", "type": ITEM_CLASS, "values": []}, |
278 pou_values.append({"name": "Variables", "type": ITEM_CLASS, |
267 ## "InOut": {"name": "InOut", "type": ITEM_CLASS, "values": []}, |
279 "values": [var_types["Local"], var_types["Temp"]]}) |
268 ## "External": {"name": "External", "type": ITEM_CLASS, "values": []}, |
280 if pou_type == "program": |
269 ## "Local": {"name": "Local", "type": ITEM_CLASS, "values": []}, |
281 pou_values.append(var_types["Global"]) |
270 ## "Temp": {"name": "Temp", "type": ITEM_CLASS, "values": []}, |
|
271 ## "Global": {"name": "Global", "type": ITEM_CLASS, "values": []}} |
|
272 ## for var in self.GetPouInterfaceVars(pou): |
|
273 ## var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []} |
|
274 ## if var["Class"] in var_types.keys(): |
|
275 ## var_types[var["Class"]]["values"].append(var_values) |
|
276 ## pou_values.append({"name": "Interface", "type": ITEM_CLASS, |
|
277 ## "values": [var_types["Input"], var_types["Output"], var_types["InOut"], var_types["External"]]}) |
|
278 ## pou_values.append({"name": "Variables", "type": ITEM_CLASS, |
|
279 ## "values": [var_types["Local"], var_types["Temp"]]}) |
|
280 ## if pou_type == "program": |
|
281 ## pou_values.append(var_types["Global"]) |
282 if pou.getBodyType() == "SFC": |
282 if pou.getBodyType() == "SFC": |
283 transitions = [] |
283 transitions = [] |
284 for transition in pou.getTransitionList(): |
284 for transition in pou.getTransitionList(): |
285 transitions.append({"name": transition.getName(), "type": ITEM_TRANSITION, "values": []}) |
285 transitions.append({"name": transition.getName(), "type": ITEM_TRANSITION, "values": []}) |
286 pou_values.append({"name": "Transitions", "type": ITEM_UNEDITABLE, "values": transitions}) |
286 pou_values.append({"name": "Transitions", "type": ITEM_UNEDITABLE, "values": transitions}) |
293 pou_types[pou_type]["values"].append(pou_infos) |
293 pou_types[pou_type]["values"].append(pou_infos) |
294 configurations = {"name": "Configurations", "type": ITEM_UNEDITABLE, "values": []} |
294 configurations = {"name": "Configurations", "type": ITEM_UNEDITABLE, "values": []} |
295 for config in self.Project.getConfigurations(): |
295 for config in self.Project.getConfigurations(): |
296 config_name = config.getName() |
296 config_name = config.getName() |
297 config_infos = {"name": config_name, "type": ITEM_CONFIGURATION, "values": []} |
297 config_infos = {"name": config_name, "type": ITEM_CONFIGURATION, "values": []} |
298 config_vars = {"name": "Global", "type": ITEM_CLASS, "values": []} |
298 ## config_vars = {"name": "Global", "type": ITEM_CLASS, "values": []} |
299 for var in self.GetConfigurationGlobalVars(config_name): |
299 ## for var in self.GetConfigurationGlobalVars(config_name): |
300 var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []} |
300 ## var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []} |
301 config_vars["values"].append(var_values) |
301 ## config_vars["values"].append(var_values) |
302 resources = {"name": "Resources", "type": ITEM_UNEDITABLE, "values": []} |
302 resources = {"name": "Resources", "type": ITEM_UNEDITABLE, "values": []} |
303 for resource in config.getResource(): |
303 for resource in config.getResource(): |
304 resource_name = resource.getName() |
304 resource_name = resource.getName() |
305 resource_infos = {"name": resource_name, "type": ITEM_RESOURCE, "values": []} |
305 resource_infos = {"name": resource_name, "type": ITEM_RESOURCE, "values": []} |
306 resource_vars = {"name": "Global", "type": ITEM_CLASS, "values": []} |
306 ## resource_vars = {"name": "Global", "type": ITEM_CLASS, "values": []} |
307 for var in self.GetConfigurationResourceGlobalVars(config_name, resource_name): |
307 ## for var in self.GetConfigurationResourceGlobalVars(config_name, resource_name): |
308 var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []} |
308 ## var_values = {"name": var["Name"], "type": ITEM_VARIABLE, "values": []} |
309 resource_vars["values"].append(var_values) |
309 ## resource_vars["values"].append(var_values) |
310 resource_infos["values"].append(resource_vars) |
310 ## resource_infos["values"].append(resource_vars) |
311 resources["values"].append(resource_infos) |
311 resources["values"].append(resource_infos) |
312 config_infos["values"] = [config_vars, resources] |
312 ## config_infos["values"] = [config_vars, resources] |
|
313 config_infos["values"] = [resources] |
313 configurations["values"].append(config_infos) |
314 configurations["values"].append(config_infos) |
314 infos["values"] = [{"name": "Properties", "type": ITEM_UNEDITABLE, "values": []}, |
315 infos["values"] = [{"name": "Properties", "type": ITEM_UNEDITABLE, "values": []}, |
315 pou_types["function"], pou_types["functionBlock"], |
316 pou_types["function"], pou_types["functionBlock"], |
316 pou_types["program"], configurations] |
317 pou_types["program"], configurations] |
317 return infos |
318 return infos |
860 return "T::%s::%s" % (pou, transition) |
863 return "T::%s::%s" % (pou, transition) |
861 |
864 |
862 # Compute a pou action name |
865 # Compute a pou action name |
863 def ComputePouActionName(self, pou, action): |
866 def ComputePouActionName(self, pou, action): |
864 return "A::%s::%s" % (pou, action) |
867 return "A::%s::%s" % (pou, action) |
|
868 |
|
869 # Compute a pou name |
|
870 def ComputeConfigurationName(self, config): |
|
871 return "C::%s" % config |
865 |
872 |
866 # Compute a pou name |
873 # Compute a pou name |
867 def ComputeConfigurationResourceName(self, config, resource): |
874 def ComputeConfigurationResourceName(self, config, resource): |
868 return "R::%s::%s" % (config, resource) |
875 return "R::%s::%s" % (config, resource) |
869 |
876 |
883 |
890 |
884 # Open a pou action by giving pou and action names |
891 # Open a pou action by giving pou and action names |
885 def OpenPouActionEditing(self, pou, action): |
892 def OpenPouActionEditing(self, pou, action): |
886 return self.OpenElementEditing(self.ComputePouActionName(pou, action)) |
893 return self.OpenElementEditing(self.ComputePouActionName(pou, action)) |
887 |
894 |
|
895 # Open a configuration resource by giving configuration name |
|
896 def OpenConfigurationEditing(self, config): |
|
897 return self.OpenElementEditing(self.ComputeConfigurationName(config)) |
|
898 |
888 # Open a configuration resource by giving configuration and resource names |
899 # Open a configuration resource by giving configuration and resource names |
889 def OpenConfigurationResourceEditing(self, config, resource): |
900 def OpenConfigurationResourceEditing(self, config, resource): |
890 return self.OpenElementEditing(self.ComputeConfigurationResourceName(config, resource)) |
901 return self.OpenElementEditing(self.ComputeConfigurationResourceName(config, resource)) |
891 |
902 |
892 # Return if pou given by name is opened |
903 # Return if pou given by name is opened |
899 |
910 |
900 # Return if pou action given by pou and action names is opened |
911 # Return if pou action given by pou and action names is opened |
901 def IsPouActionEditing(self, pou, action): |
912 def IsPouActionEditing(self, pou, action): |
902 return self.ComputePouActionName(pou, action) in self.ElementsOpened |
913 return self.ComputePouActionName(pou, action) in self.ElementsOpened |
903 |
914 |
904 # Return if pou action given by pou and action names is opened |
915 # Return if pou action given by configuration name is opened |
905 def IsConfigurationResourceEditing(self, pou, action): |
916 def IsConfigurationEditing(self, pou): |
|
917 return self.ComputeConfigurationName(config) in self.ElementsOpened |
|
918 |
|
919 # Return if pou action given by configuration and resource names is opened |
|
920 def IsConfigurationResourceEditing(self, pou, resource): |
906 return self.ComputeConfigurationResourceName(config, resource) in self.ElementsOpened |
921 return self.ComputeConfigurationResourceName(config, resource) in self.ElementsOpened |
907 |
922 |
908 # Close current pou editing |
923 # Close current pou editing |
909 def CloseElementEditing(self): |
924 def CloseElementEditing(self): |
910 # Remove pou from list of pou opened |
925 # Remove pou from list of pou opened |
929 return self.ChangeElementEditing(self.ComputePouTransitionName(pou, transition)) |
944 return self.ChangeElementEditing(self.ComputePouTransitionName(pou, transition)) |
930 |
945 |
931 # Change current pou editing for action given by pou and action names |
946 # Change current pou editing for action given by pou and action names |
932 def ChangePouActionEditing(self, pou, action): |
947 def ChangePouActionEditing(self, pou, action): |
933 return self.ChangeElementEditing(self.ComputePouActionName(pou, action)) |
948 return self.ChangeElementEditing(self.ComputePouActionName(pou, action)) |
|
949 |
|
950 # Change current pou editing for action given by configuration name |
|
951 def ChangeConfigurationEditing(self, config): |
|
952 return self.ChangeElementEditing(self.ComputeConfigurationName(config)) |
934 |
953 |
935 # Change current pou editing for action given by configuration and resource names |
954 # Change current pou editing for action given by configuration and resource names |
936 def ChangeConfigurationResourceEditing(self, config, resource): |
955 def ChangeConfigurationResourceEditing(self, config, resource): |
937 return self.ChangeElementEditing(self.ComputeConfigurationResourceName(config, resource)) |
956 return self.ChangeElementEditing(self.ComputeConfigurationResourceName(config, resource)) |
938 |
957 |