215 values = eval(event.GetDragText()) |
215 values = eval(event.GetDragText()) |
216 except: |
216 except: |
217 values = event.GetDragText() |
217 values = event.GetDragText() |
218 if isinstance(values, tuple): |
218 if isinstance(values, tuple): |
219 message = None |
219 message = None |
220 if values[1] in ["functionBlock", "program", "debug"]: |
220 if values[1] in ["program", "debug"]: |
221 event.SetDragText("") |
221 event.SetDragText("") |
222 elif values[1] == "function": |
222 elif values[1] in ["functionBlock", "function"]: |
223 event.SetDragText(values[0]) |
223 blockname = values[2] |
|
224 if len(values) > 3: |
|
225 blockinputs = values[3] |
|
226 else: |
|
227 blockinputs = None |
|
228 if values[1] != "function": |
|
229 if blockname == "": |
|
230 dialog = wx.TextEntryDialog(self.ParentWindow, "Block name", "Please enter a block name", "", wx.OK|wx.CANCEL|wx.CENTRE) |
|
231 if dialog.ShowModal() == wx.ID_OK: |
|
232 blockname = dialog.GetValue() |
|
233 else: |
|
234 return |
|
235 dialog.Destroy() |
|
236 if blockname.upper() in [name.upper() for name in self.Controler.GetProjectPouNames(self.Debug)]: |
|
237 message = _("\"%s\" pou already exists!")%blockname |
|
238 elif blockname.upper() in [name.upper() for name in self.Controler.GetEditedElementVariables(self.TagName, self.Debug)]: |
|
239 message = _("\"%s\" element for this pou already exists!")%blockname |
|
240 else: |
|
241 self.Controler.AddEditedElementPouVar(self.TagName, values[0], blockname) |
|
242 self.ParentWindow.RefreshVariablePanel(self.TagName) |
|
243 self.RefreshVariableTree() |
|
244 blockinfo = self.Controler.GetBlockType(values[0], blockinputs, self.Debug) |
|
245 hint = ',\n '.join( |
|
246 [ " " + fctdecl[0]+" := (*"+fctdecl[1]+"*)" for fctdecl in blockinfo["inputs"]] + |
|
247 [ " " + fctdecl[0]+" => (*"+fctdecl[1]+"*)" for fctdecl in blockinfo["outputs"]]) |
|
248 event.SetDragText(blockname+"(\n "+hint+")") |
224 elif values[1] == "location": |
249 elif values[1] == "location": |
225 pou_name, pou_type = self.Controler.GetEditedElementType(self.TagName, self.Debug) |
250 pou_name, pou_type = self.Controler.GetEditedElementType(self.TagName, self.Debug) |
226 if len(values) > 2 and pou_type == "program": |
251 if len(values) > 2 and pou_type == "program": |
227 var_name = values[3] |
252 var_name = values[3] |
228 if var_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames(self.Debug)]: |
253 if var_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames(self.Debug)]: |