150 self.Name.SetValue("") |
150 self.Name.SetValue("") |
151 self.Name.Enable(False) |
151 self.Name.Enable(False) |
152 self.Inputs.Enable(False) |
152 self.Inputs.Enable(False) |
153 self.Block = None |
153 self.Block = None |
154 self.MinBlockSize = None |
154 self.MinBlockSize = None |
|
155 |
|
156 self.PouNames = [] |
|
157 self.PouElementNames = [] |
155 |
158 |
156 def FindTreeItem(self, root, name, inputs = None): |
159 def FindTreeItem(self, root, name, inputs = None): |
157 if root.IsOk(): |
160 if root.IsOk(): |
158 pydata = self.TypeTree.GetPyData(root) |
161 pydata = self.TypeTree.GetPyData(root) |
159 if inputs and "inputs" in pydata: |
162 if inputs and "inputs" in pydata: |
172 return None |
175 return None |
173 |
176 |
174 def OnOK(self, event): |
177 def OnOK(self, event): |
175 error = [] |
178 error = [] |
176 selected = self.TypeTree.GetSelection() |
179 selected = self.TypeTree.GetSelection() |
|
180 block_name = self.Name.GetValue() |
|
181 name_enabled = self.Name.IsEnabled() |
177 if not selected.IsOk() or self.TypeTree.GetItemParent(selected) == self.TypeTree.GetRootItem() or selected == self.TypeTree.GetRootItem(): |
182 if not selected.IsOk() or self.TypeTree.GetItemParent(selected) == self.TypeTree.GetRootItem() or selected == self.TypeTree.GetRootItem(): |
178 message = wx.MessageDialog(self, "Form isn't complete. Valid block type must be selected!", "Error", wx.OK|wx.ICON_ERROR) |
183 message = wx.MessageDialog(self, "Form isn't complete. Valid block type must be selected!", "Error", wx.OK|wx.ICON_ERROR) |
179 message.ShowModal() |
184 message.ShowModal() |
180 message.Destroy() |
185 message.Destroy() |
181 elif self.Name.IsEnabled() and self.Name.GetValue() == "": |
186 elif name_enabled and block_name == "": |
182 message = wx.MessageDialog(self, "Form isn't complete. Name must be filled!", "Error", wx.OK|wx.ICON_ERROR) |
187 message = wx.MessageDialog(self, "Form isn't complete. Name must be filled!", "Error", wx.OK|wx.ICON_ERROR) |
|
188 message.ShowModal() |
|
189 message.Destroy() |
|
190 elif name_enabled and not TestIdentifier(block_name): |
|
191 message = wx.MessageDialog(self, "\"%s\" is not a valid identifier!"%block_name, "Error", wx.OK|wx.ICON_ERROR) |
|
192 message.ShowModal() |
|
193 message.Destroy() |
|
194 elif name_enabled and block_name.upper() in IEC_KEYWORDS: |
|
195 message = wx.MessageDialog(self, "\"%s\" is a keyword. It can't be used!"%block_name, "Error", wx.OK|wx.ICON_ERROR) |
|
196 message.ShowModal() |
|
197 message.Destroy() |
|
198 elif name_enabled and block_name.upper() in self.PouNames: |
|
199 message = wx.MessageDialog(self, "\"%s\" pou already exists!"%block_name, "Error", wx.OK|wx.ICON_ERROR) |
|
200 message.ShowModal() |
|
201 message.Destroy() |
|
202 elif name_enabled and block_name.upper() in self.PouElementNames: |
|
203 message = wx.MessageDialog(self, "\"%s\" element for this pou already exists!"%block_name, "Error", wx.OK|wx.ICON_ERROR) |
183 message.ShowModal() |
204 message.ShowModal() |
184 message.Destroy() |
205 message.Destroy() |
185 else: |
206 else: |
186 self.EndModal(wx.ID_OK) |
207 self.EndModal(wx.ID_OK) |
187 |
208 |
196 self.TypeTree.SetPyData(blocktype_item, {"type" : BLOCK, "inputs" : tuple([type for name, type, modifier in blocktype["inputs"]])}) |
217 self.TypeTree.SetPyData(blocktype_item, {"type" : BLOCK, "inputs" : tuple([type for name, type, modifier in blocktype["inputs"]])}) |
197 |
218 |
198 def SetMinBlockSize(self, size): |
219 def SetMinBlockSize(self, size): |
199 self.MinBlockSize = size |
220 self.MinBlockSize = size |
200 |
221 |
|
222 def SetPouNames(self, pou_names): |
|
223 self.PouNames = [pou_name.upper() for pou_name in pou_names] |
|
224 |
|
225 def SetPouElementNames(self, element_names): |
|
226 self.PouElementNames = [element_name.upper() for element_name in element_names] |
|
227 |
201 def SetValues(self, values): |
228 def SetValues(self, values): |
202 for name, value in values.items(): |
229 for name, value in values.items(): |
203 if name == "type": |
230 if name == "type": |
204 inputs = None |
231 inputs = None |
205 if "inputs" in values: |
232 if "inputs" in values: |