--- a/TextViewer.py Thu Sep 24 18:18:04 2009 +0200
+++ b/TextViewer.py Thu Sep 24 18:20:07 2009 +0200
@@ -216,20 +216,41 @@
except:
values = event.GetDragText()
if isinstance(values, tuple):
- if values[1] in ["functionBlock", "program", "location", "debug"]:
+ message = None
+ if values[1] in ["functionBlock", "program", "debug"]:
event.SetDragText("")
elif values[1] == "function":
event.SetDragText(values[0])
- elif values[1] != "location":
- if values[3] == self.TagName:
- self.ResetBuffer()
- event.SetDragText(values[0])
- wx.CallAfter(self.RefreshModel)
+ elif values[1] == "location":
+ pou_name, pou_type = self.Controler.GetEditedElementType(self.TagName, self.Debug)
+ if len(values) > 2 and pou_type == "program":
+ var_name = values[3]
+ if var_name.upper() in [name.upper() for name in self.Controler.GetProjectPouNames(self.Debug)]:
+ message = _("\"%s\" pou already exists!")%blockname
+ elif var_name.upper() in [name.upper() for name in self.Controler.GetEditedElementVariables(self.TagName, self.Debug)]:
+ message = _("\"%s\" element for this pou already exists!")%blockname
+ else:
+ if values[2] is not None:
+ var_type = values[2]
+ else:
+ var_type = LOCATIONDATATYPES.get(values[0][2], ["BOOL"])[0]
+ self.Controler.AddEditedElementPouVar(self.TagName, var_type, var_name, values[0], values[4])
+ self.ParentWindow.RefreshVariablePanel(self.TagName)
+ self.RefreshVariableTree()
+ event.SetDragText(var_name)
else:
event.SetDragText("")
- message = wx.MessageDialog(self.ParentWindow, _("Variable don't belong to this POU!"), _("Error"), wx.OK|wx.ICON_ERROR)
- message.ShowModal()
- message.Destroy()
+ elif values[3] == self.TagName:
+ self.ResetBuffer()
+ event.SetDragText(values[0])
+ wx.CallAfter(self.RefreshModel)
+ else:
+ message = _("Variable don't belong to this POU!")
+ if message is not None:
+ dialog = wx.MessageDialog(self, message, _("Error"), wx.OK|wx.ICON_ERROR)
+ dialog.ShowModal()
+ dialog.Destroy()
+ event.SetDragText("")
event.Skip()
def SetTextSyntax(self, syntax):
@@ -278,11 +299,7 @@
self.EmptyUndoBuffer()
self.DisableEvents = False
- words = self.TagName.split("::")
-
- self.Variables = self.GenerateVariableTree([(variable["Name"], variable["Type"], variable["Tree"]) for variable in self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)])
- if self.Controler.GetEditedElementType(self.TagName, self.Debug)[1] == "function" or words[0] == "T" and self.TextSyntax == "IL":
- self.Variables[words[-1].upper()] = {}
+ self.RefreshVariableTree()
self.Functions = []
for category in self.Controler.GetBlockTypes(self.TagName, self.Debug):
@@ -296,6 +313,12 @@
self.Colourise(0, -1)
+ def RefreshVariableTree(self):
+ words = self.TagName.split("::")
+ self.Variables = self.GenerateVariableTree([(variable["Name"], variable["Type"], variable["Tree"]) for variable in self.Controler.GetEditedElementInterfaceVars(self.TagName, self.Debug)])
+ if self.Controler.GetEditedElementType(self.TagName, self.Debug)[1] == "function" or words[0] == "T" and self.TextSyntax == "IL":
+ self.Variables[words[-1].upper()] = {}
+
def GenerateVariableTree(self, list):
tree = {}
for var_name, var_type, (var_tree, var_dimension) in list: