827 item = event.GetItem() |
827 item = event.GetItem() |
828 itemtype = self.ProjectTree.GetPyData(item) |
828 itemtype = self.ProjectTree.GetPyData(item) |
829 if itemtype == ITEM_PROJECT: |
829 if itemtype == ITEM_PROJECT: |
830 self.Controler.SetProjectProperties(name = new_name) |
830 self.Controler.SetProjectProperties(name = new_name) |
831 elif itemtype == ITEM_POU: |
831 elif itemtype == ITEM_POU: |
832 if new_name.upper() in self.Controler.GetProjectPouNames(): |
832 if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]: |
833 message = "\"%s\" pou already exists!"%new_name |
833 message = "\"%s\" pou already exists!"%new_name |
834 abort = True |
834 abort = True |
835 elif new_name.upper() in self.Controler.GetProjectPouVariables(): |
835 elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables()]: |
836 messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION) |
836 messageDialog = wx.MessageDialog(self, "A variable is defined with \"%s\" as name. It can generate a conflict. Do you wish to continue?"%new_name, "Error", wx.YES_NO|wx.ICON_QUESTION) |
837 if messageDialog.ShowModal() == wx.ID_NO: |
837 if messageDialog.ShowModal() == wx.ID_NO: |
838 abort = True |
838 abort = True |
839 messageDialog.Destroy() |
839 messageDialog.Destroy() |
840 if not abort: |
840 if not abort: |
843 self.RefreshTabsOpenedTitles() |
843 self.RefreshTabsOpenedTitles() |
844 elif itemtype == ITEM_TRANSITION: |
844 elif itemtype == ITEM_TRANSITION: |
845 category = self.ProjectTree.GetItemParent(item) |
845 category = self.ProjectTree.GetItemParent(item) |
846 pou = self.ProjectTree.GetItemParent(category) |
846 pou = self.ProjectTree.GetItemParent(category) |
847 pou_name = self.ProjectTree.GetItemText(pou) |
847 pou_name = self.ProjectTree.GetItemText(pou) |
848 if new_name.upper() in self.Controler.GetProjectPouNames(): |
848 if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]: |
849 message = "A pou with \"%s\" as name exists!"%new_name |
849 message = "A pou with \"%s\" as name exists!"%new_name |
850 elif new_name.upper() in self.Controler.GetProjectPouVariables(pou_name): |
850 elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name)]: |
851 message = "A variable with \"%s\" as name already exists in this pou!"%new_name |
851 message = "A variable with \"%s\" as name already exists in this pou!"%new_name |
852 else: |
852 else: |
853 old_name = self.ProjectTree.GetItemText(item) |
853 old_name = self.ProjectTree.GetItemText(item) |
854 self.Controler.ChangePouTransitionName(pou_name, old_name, new_name) |
854 self.Controler.ChangePouTransitionName(pou_name, old_name, new_name) |
855 self.RefreshTabsOpenedTitles() |
855 self.RefreshTabsOpenedTitles() |
856 elif itemtype == ITEM_ACTION: |
856 elif itemtype == ITEM_ACTION: |
857 category = self.ProjectTree.GetItemParent(item) |
857 category = self.ProjectTree.GetItemParent(item) |
858 pou = self.ProjectTree.GetItemParent(category) |
858 pou = self.ProjectTree.GetItemParent(category) |
859 pou_name = self.ProjectTree.GetItemText(pou) |
859 pou_name = self.ProjectTree.GetItemText(pou) |
860 if new_name.upper() in self.Controler.GetProjectPouNames(): |
860 if new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames()]: |
861 message = "A pou with \"%s\" as name exists!"%new_name |
861 message = "A pou with \"%s\" as name exists!"%new_name |
862 elif new_name.upper() in self.Controler.GetProjectPouVariables(pou_name): |
862 elif new_name.upper() in [name.upper() for name in self.Controler.GetProjectPouVariables(pou_name)]: |
863 message = "A variable with \"%s\" as name already exists in this pou!"%new_name |
863 message = "A variable with \"%s\" as name already exists in this pou!"%new_name |
864 else: |
864 else: |
865 old_name = self.ProjectTree.GetItemText(item) |
865 old_name = self.ProjectTree.GetItemText(item) |
866 self.Controler.ChangePouActionName(pou_name, old_name, new_name) |
866 self.Controler.ChangePouActionName(pou_name, old_name, new_name) |
867 self.RefreshTabsOpenedTitles() |
|
868 elif itemtype == ITEM_VARIABLE: |
|
869 category = self.ProjectTree.GetItemParent(item) |
|
870 if self.ProjectTree.GetItemText(category) != 'Global': |
|
871 category = self.ProjectTree.GetItemParent(category) |
|
872 pou = self.ProjectTree.GetItemParent(category) |
|
873 pou_name = self.ProjectTree.GetItemText(pou) |
|
874 if new_name.upper() in self.Controler.GetProjectPouNames(): |
|
875 message = "A pou with \"%s\" as name exists!"%new_name |
|
876 elif new_name.upper() in self.Controler.GetProjectPouVariables(pou_name): |
|
877 message = "A variable with \"%s\" as name already exists in this pou!"%new_name |
|
878 else: |
|
879 old_name = self.ProjectTree.GetItemText(item) |
|
880 self.Controler.ChangePouVariableName(pou_name, old_name, new_name) |
|
881 self.RefreshTabsOpenedTitles() |
867 self.RefreshTabsOpenedTitles() |
882 if message or abort: |
868 if message or abort: |
883 if message: |
869 if message: |
884 messageDialog = wx.MessageDialog(self, message, "Error", wx.OK|wx.ICON_ERROR) |
870 messageDialog = wx.MessageDialog(self, message, "Error", wx.OK|wx.ICON_ERROR) |
885 messageDialog.ShowModal() |
871 messageDialog.ShowModal() |
1689 else: |
1694 else: |
1690 text += ", %s"%item |
1695 text += ", %s"%item |
1691 message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR) |
1696 message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR) |
1692 message.ShowModal() |
1697 message.ShowModal() |
1693 message.Destroy() |
1698 message.Destroy() |
|
1699 elif not TestIdentifier(transition_name): |
|
1700 message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%transition_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1701 message.ShowModal() |
|
1702 message.Destroy() |
|
1703 elif transition_name.upper() in IEC_KEYWORDS: |
|
1704 message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%transition_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1705 message.ShowModal() |
|
1706 message.Destroy() |
|
1707 elif transition_name.upper() in self.PouNames: |
|
1708 message = wx.MessageDialog(self, "A pou with \"%s\" for name exists!"%transition_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1709 message.ShowModal() |
|
1710 message.Destroy() |
|
1711 elif transition_name.upper() in self.PouElementNames: |
|
1712 message = wx.MessageDialog(self, "\"%s\" element for this pou already exists!"%transition_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1713 message.ShowModal() |
|
1714 message.Destroy() |
1694 else: |
1715 else: |
1695 self.EndModal(wx.ID_OK) |
1716 self.EndModal(wx.ID_OK) |
1696 |
1717 |
|
1718 def SetPouNames(self, pou_names): |
|
1719 self.PouNames = [pou_name.upper() for pou_name in pou_names] |
|
1720 |
|
1721 def SetPouElementNames(self, pou_names): |
|
1722 self.PouElementNames = [pou_name.upper() for pou_name in pou_names] |
|
1723 |
1697 def SetValues(self, values): |
1724 def SetValues(self, values): |
1698 for item, value in values.items(): |
1725 for item, value in values.items(): |
1699 if item == "transitionName": |
1726 if item == "transitionName": |
1700 self.TransitionName.SetValue(value) |
1727 self.TransitionName.SetValue(value) |
1701 elif item == "language": |
1728 elif item == "language": |
1795 else: |
1826 else: |
1796 text += ", %s"%item |
1827 text += ", %s"%item |
1797 message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR) |
1828 message = wx.MessageDialog(self, "Form isn't complete. %s must be filled!"%text, "Error", wx.OK|wx.ICON_ERROR) |
1798 message.ShowModal() |
1829 message.ShowModal() |
1799 message.Destroy() |
1830 message.Destroy() |
|
1831 elif not TestIdentifier(action_name): |
|
1832 message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%action_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1833 message.ShowModal() |
|
1834 message.Destroy() |
|
1835 elif action_name.upper() in IEC_KEYWORDS: |
|
1836 message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%action_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1837 message.ShowModal() |
|
1838 message.Destroy() |
|
1839 elif action_name.upper() in self.PouNames: |
|
1840 message = wx.MessageDialog(self, "A pou with \"%s\" for name exists!"%action_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1841 message.ShowModal() |
|
1842 message.Destroy() |
|
1843 elif action_name.upper() in self.PouElementNames: |
|
1844 message = wx.MessageDialog(self, "\"%s\" element for this pou already exists!"%action_name, "Error", wx.OK|wx.ICON_ERROR) |
|
1845 message.ShowModal() |
|
1846 message.Destroy() |
1800 else: |
1847 else: |
1801 self.EndModal(wx.ID_OK) |
1848 self.EndModal(wx.ID_OK) |
1802 |
1849 |
|
1850 def SetPouNames(self, pou_names): |
|
1851 self.PouNames = [pou_name.upper() for pou_name in pou_names] |
|
1852 |
|
1853 def SetPouElementNames(self, element_names): |
|
1854 self.PouElementNames = [element_name.upper() for element_name in element_names] |
|
1855 |
1803 def SetValues(self, values): |
1856 def SetValues(self, values): |
1804 for item, value in values.items(): |
1857 for item, value in values.items(): |
1805 if item == "actionName": |
1858 if item == "actionName": |
1806 self.ActionName.SetValue(value) |
1859 self.ActionName.SetValue(value) |
1807 elif item == "language": |
1860 elif item == "language": |
2202 self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"} |
2255 self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"} |
2203 else: |
2256 else: |
2204 self.DefaultTypes = {"All" : "Local", "Interface" : "Input", "Variables" : "Local"} |
2257 self.DefaultTypes = {"All" : "Local", "Interface" : "Input", "Variables" : "Local"} |
2205 self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"} |
2258 self.DefaultValue = {"Name" : "", "Class" : "", "Type" : "INT", "Location" : "", "Initial Value" : "", "Retain" : "No", "Constant" : "No", "Edit" : "True"} |
2206 if pou_type in ["config", "resource"] or pou_type == "program": |
2259 if pou_type in ["config", "resource"] or pou_type == "program": |
2207 self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Location", "Initial Value", "Retain", "Constant", "Edit"]) |
2260 self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Location", "Initial Value", "Retain", "Constant"]) |
2208 if pou_type not in ["config", "resource"]: |
2261 if pou_type not in ["config", "resource"]: |
2209 self.FilterChoices = ["All","Interface"," Input"," Output"," InOut"," External","Variables"," Local"," Temp","Global","Access"] |
2262 self.FilterChoices = ["All","Interface"," Input"," Output"," InOut"," External","Variables"," Local"," Temp","Global","Access"] |
2210 else: |
2263 else: |
2211 self.FilterChoices = ["All","Global","Access"] |
2264 self.FilterChoices = ["All","Global","Access"] |
2212 self.ColSizes = [40, 80, 70, 80, 80, 80, 60, 70, 50] |
2265 self.ColSizes = [40, 80, 70, 80, 80, 80, 60, 70] |
2213 self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER, wx.ALIGN_LEFT] |
2266 self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER] |
2214 else: |
2267 else: |
2215 self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Initial Value", "Retain", "Constant", "Edit"]) |
2268 self.Table = VariableTable(self, [], ["#", "Name", "Class", "Type", "Initial Value", "Retain", "Constant"]) |
2216 self.FilterChoices = ["All","Interface"," Input"," Output"," InOut"," External","Variables"," Local"," Temp"] |
2269 self.FilterChoices = ["All","Interface"," Input"," Output"," InOut"," External","Variables"," Local"," Temp"] |
2217 self.ColSizes = [40, 120, 70, 80, 120, 60, 70, 50] |
2270 self.ColSizes = [40, 120, 70, 80, 120, 60, 70] |
2218 self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER, wx.ALIGN_LEFT] |
2271 self.ColAlignements = [wx.ALIGN_CENTER, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_LEFT, wx.ALIGN_CENTER, wx.ALIGN_CENTER] |
2219 for choice in self.FilterChoices: |
2272 for choice in self.FilterChoices: |
2220 self.ClassFilter.Append(choice) |
2273 self.ClassFilter.Append(choice) |
2221 reverse_transfer = {} |
2274 reverse_transfer = {} |
2222 for filter, choice in self.FilterChoiceTransfer.items(): |
2275 for filter, choice in self.FilterChoiceTransfer.items(): |
2223 reverse_transfer[choice] = filter |
2276 reverse_transfer[choice] = filter |