PLCOpenEditor.py
changeset 10 112985848e1d
parent 9 b29105e29081
child 11 e55d8385aef1
equal deleted inserted replaced
9:b29105e29081 10:112985848e1d
   799                 self.RefreshProjectTree()
   799                 self.RefreshProjectTree()
   800             dialog.Destroy()
   800             dialog.Destroy()
   801         elif data == ITEM_CLASS:
   801         elif data == ITEM_CLASS:
   802             item = self.ProjectTree.GetItemParent(selected)
   802             item = self.ProjectTree.GetItemParent(selected)
   803             item_type = self.ProjectTree.GetPyData(item)
   803             item_type = self.ProjectTree.GetPyData(item)
   804             while item_type != ITEM_POU:
   804             while item_type not in [ITEM_POU, ITEM_RESOURCE, ITEM_CONFIGURATION] and item.IsOk():
   805                 item = self.ProjectTree.GetItemParent(item)
   805                 item = self.ProjectTree.GetItemParent(item)
   806                 item_type = self.ProjectTree.GetPyData(item)
   806                 item_type = self.ProjectTree.GetPyData(item)
   807             pou_name = self.ProjectTree.GetItemText(item)
   807             item_name = self.ProjectTree.GetItemText(item)
   808             dialog = EditVariableDialog(self, pou_name, self.Controler.GetPouType(pou_name), name)
   808             if item_type == ITEM_POU:
   809             dialog.SetPouNames(self.Controler.GetProjectPouNames())
   809                 dialog = EditVariableDialog(self, item_name, self.Controler.GetPouType(item_name), name)
   810             values = {}
   810                 dialog.SetPouNames(self.Controler.GetProjectPouNames())
   811             values["returnType"] = self.Controler.GetPouInterfaceReturnTypeByName(pou_name)
   811                 values = {}
   812             values["data"] = self.Controler.GetPouInterfaceVarsByName(pou_name)
   812                 values["returnType"] = self.Controler.GetPouInterfaceReturnTypeByName(item_name)
   813             dialog.SetValues(values)
   813                 values["data"] = self.Controler.GetPouInterfaceVarsByName(item_name)
   814             if dialog.ShowModal() == wxID_OK:
   814                 dialog.SetValues(values)
   815                 if not self.Controler.PouIsUsed(pou_name):
   815                 if dialog.ShowModal() == wxID_OK:
   816                     new_values = dialog.GetValues()
   816                     if not self.Controler.PouIsUsed(item_name):
   817                     if "returnType" in new_values:
   817                         new_values = dialog.GetValues()
   818                         self.Controler.SetPouInterfaceReturnType(pou_name, new_values["returnType"])
   818                         if "returnType" in new_values:
   819                     self.Controler.SetPouInterfaceVars(pou_name, new_values["data"])
   819                             self.Controler.SetPouInterfaceReturnType(item_name, new_values["returnType"])
   820                     pou_names = self.Controler.GetElementsOpenedNames()
   820                         self.Controler.SetPouInterfaceVars(item_name, new_values["data"])
   821                     if pou_name in pou_names:
   821                         pou_names = self.Controler.GetElementsOpenedNames()
   822                         window = self.TabsOpened.GetPage(pou_names.index(pou_name))
   822                         if pou_name in pou_names:
   823                         if isinstance(window, TextViewer):
   823                             window = self.TabsOpened.GetPage(pou_names.index(item_name))
   824                             varlist = []
   824                             if isinstance(window, TextViewer):
   825                             if "returnType" in new_values:
   825                                 varlist = []
   826                                 varlist.append(name)
   826                                 if "returnType" in new_values:
   827                             for var in new_values["data"]:
   827                                     varlist.append(name)
   828                                 varlist.append(var["Name"])
   828                                 for var in new_values["data"]:
   829                             window.SetVariables(varlist)
   829                                     varlist.append(var["Name"])
   830                 else:
   830                                 window.SetVariables(varlist)
   831                     message = wxMessageDialog(self, "\"%s\" is used by one or more POUs. Its interface can't be changed!"%pou_name, "Error", wxOK|wxICON_ERROR)
   831                     else:
   832                     message.ShowModal()
   832                         message = wxMessageDialog(self, "\"%s\" is used by one or more POUs. Its interface can't be changed!"%pou_name, "Error", wxOK|wxICON_ERROR)
   833                     message.Destroy()
   833                         message.ShowModal()
   834             dialog.Destroy()
   834                         message.Destroy()
   835             self.RefreshProjectTree()
   835                 dialog.Destroy()
   836         elif name == "Global Vars":
   836                 self.RefreshProjectTree()
   837             parent = self.ProjectTree.GetItemParent(selected)
   837             elif item_type == ITEM_CONFIGURATION:
   838             parent_name = self.ProjectTree.GetItemText(parent)
   838                 dialog = EditVariableDialog(self, item_name, None, name)
   839             dialog = EditVariableDialog(self, parent_name, None)
   839                 dialog.SetPouNames(self.Controler.GetProjectPouNames())
   840             dialog.SetPouNames(self.Controler.GetProjectPouNames())
   840                 values = {"data" : self.Controler.GetConfigurationGlobalVars(item_name)}
   841             if self.ProjectTree.GetPyData(parent) == ITEM_CONFIGURATION:
       
   842                 values = {"data" : self.Controler.GetConfigurationGlobalVars(parent_name)}
       
   843                 dialog.SetValues(values)
   841                 dialog.SetValues(values)
   844                 if dialog.ShowModal() == wxID_OK:
   842                 if dialog.ShowModal() == wxID_OK:
   845                     new_values = dialog.GetValues()
   843                     new_values = dialog.GetValues()
   846                     self.Controler.SetConfigurationGlobalVars(parent_name, new_values["data"])
   844                     self.Controler.SetConfigurationGlobalVars(item_name, new_values["data"])
   847             else:
   845                 dialog.Destroy()
   848                 config = self.ProjectTree.GetItemParent(parent)
   846                 self.RefreshProjectTree()
   849                 config_name = self.ProjectTree.GetItemText(config)
   847             elif item_type == ITEM_RESOURCE:
   850                 values = {"data" : self.Controler.GetConfigurationResourceGlobalVars(config_name, parent_name)}
   848                 config = self.ProjectTree.GetItemParent(item)
   851                 dialog.SetValues(values)
   849                 config_type = self.ProjectTree.GetPyData(config)
   852                 if dialog.ShowModal() == wxID_OK:
   850                 while config_type != ITEM_CONFIGURATION and config.IsOk():
   853                     new_values = dialog.GetValues()
   851                     config = self.ProjectTree.GetItemParent(config)
   854                     self.Controler.SetConfigurationResourceGlobalVars(config_name, parent_name, new_values["data"])
   852                     config_type = self.ProjectTree.GetPyData(config)
   855             self.RefreshProjectTree()
   853                 if config.IsOk():
       
   854                     config_name = self.ProjectTree.GetItemText(config)
       
   855                     dialog = EditVariableDialog(self, item_name, None, name)
       
   856                     values = {"data" : self.Controler.GetConfigurationResourceGlobalVars(config_name, item_name)}
       
   857                     dialog.SetValues(values)
       
   858                     if dialog.ShowModal() == wxID_OK:
       
   859                         new_values = dialog.GetValues()
       
   860                         self.Controler.SetConfigurationResourceGlobalVars(config_name, item_name, new_values["data"])
       
   861                     dialog.Destroy()
       
   862                     self.RefreshProjectTree()
   856         elif data in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
   863         elif data in [ITEM_POU, ITEM_TRANSITION, ITEM_ACTION]:
   857             if data == ITEM_POU:
   864             if data == ITEM_POU:
   858                 idx = self.Controler.OpenElementEditing(name)
   865                 idx = self.Controler.OpenElementEditing(name)
   859                 language = self.Controler.GetPouBodyType(name)
   866                 language = self.Controler.GetPouBodyType(name)
   860                 varlist = []
   867                 varlist = []