Dialogs.py
changeset 70 0e48629c1e6d
parent 64 dd6f693e46a1
child 71 0578bc212c20
--- a/Dialogs.py	Mon Aug 13 18:04:19 2007 +0200
+++ b/Dialogs.py	Mon Aug 13 18:06:50 2007 +0200
@@ -152,6 +152,9 @@
         self.Inputs.Enable(False)
         self.Block = None
         self.MinBlockSize = None
+        
+        self.PouNames = []
+        self.PouElementNames = []
     
     def FindTreeItem(self, root, name, inputs = None):
         if root.IsOk():
@@ -174,14 +177,32 @@
     def OnOK(self, event):
         error = []
         selected = self.TypeTree.GetSelection()
+        block_name = self.Name.GetValue()
+        name_enabled = self.Name.IsEnabled()
         if not selected.IsOk() or self.TypeTree.GetItemParent(selected) == self.TypeTree.GetRootItem() or selected == self.TypeTree.GetRootItem():
             message = wx.MessageDialog(self, "Form isn't complete. Valid block type must be selected!", "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
-        elif self.Name.IsEnabled() and self.Name.GetValue() == "":
+        elif name_enabled and block_name == "":
             message = wx.MessageDialog(self, "Form isn't complete. Name must be filled!", "Error", wx.OK|wx.ICON_ERROR)
             message.ShowModal()
             message.Destroy()
+        elif name_enabled and not TestIdentifier(block_name):
+            message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
+            message.ShowModal()
+            message.Destroy()
+        elif name_enabled and block_name.upper() in IEC_KEYWORDS:
+            message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
+            message.ShowModal()
+            message.Destroy()
+        elif name_enabled and block_name.upper() in self.PouNames:
+            message = wx.MessageDialog(self, "\"%s\" pou already exists!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
+            message.ShowModal()
+            message.Destroy()
+        elif name_enabled and block_name.upper() in self.PouElementNames:
+            message = wx.MessageDialog(self, "\"%s\" element for this pou already exists!"%block_name, "Error", wx.OK|wx.ICON_ERROR)
+            message.ShowModal()
+            message.Destroy()
         else:
             self.EndModal(wx.ID_OK)
 
@@ -198,6 +219,12 @@
     def SetMinBlockSize(self, size):
         self.MinBlockSize = size
 
+    def SetPouNames(self, pou_names):
+        self.PouNames = [pou_name.upper() for pou_name in pou_names]
+        
+    def SetPouElementNames(self, element_names):
+        self.PouElementNames = [element_name.upper() for element_name in element_names]
+        
     def SetValues(self, values):
         for name, value in values.items():
             if name == "type":