--- a/Viewer.py Wed Sep 19 13:28:04 2007 +0200
+++ b/Viewer.py Wed Sep 19 13:32:24 2007 +0200
@@ -53,17 +53,35 @@
def OnDropText(self, x, y, data):
values = eval(data)
- if values[1] in ["function", "functionBlock", "program"]:
- id = self.ParentWindow.GetNewId()
- block = FBD_Block(self.ParentWindow, values[0], values[2], id)
- block.SetPosition(x, y)
- width, height = block.GetMinSize()
- block.SetSize(width, height)
- self.ParentWindow.AddBlock(block)
- self.ParentWindow.Controler.AddCurrentElementEditingBlock(id,values[0], values[2])
- self.ParentWindow.RefreshBlockModel(block)
- self.ParentWindow.RefreshScrollBars()
- self.ParentWindow.Refresh()
+ if values[1] == "program":
+ message = wx.MessageDialog(self.ParentWindow, "Programs can't be used by other POUs!", "Error", wx.OK|wx.ICON_ERROR)
+ message.ShowModal()
+ message.Destroy()
+ elif values[1] in ["function", "functionBlock", "program"]:
+ name, type = self.ParentWindow.Controler.GetCurrentElementEditingType()
+ if name == values[0]:
+ message = wx.MessageDialog(self.ParentWindow, "\"%s\" can't use itself!"%name, "Error", wx.OK|wx.ICON_ERROR)
+ message.ShowModal()
+ message.Destroy()
+ elif type == "function" and values[1] != "function":
+ message = wx.MessageDialog(self.ParentWindow, "Function Blocks can't be used by Functions!", "Error", wx.OK|wx.ICON_ERROR)
+ message.ShowModal()
+ message.Destroy()
+ elif self.ParentWindow.Controler.PouIsUsedBy(name, values[0]):
+ message = wx.MessageDialog(self.ParentWindow, "\"%s\" is already used by \"%s\"!"%(name, values[0]), "Error", wx.OK|wx.ICON_ERROR)
+ message.ShowModal()
+ message.Destroy()
+ else:
+ id = self.ParentWindow.GetNewId()
+ block = FBD_Block(self.ParentWindow, values[0], values[2], id)
+ block.SetPosition(x, y)
+ width, height = block.GetMinSize()
+ block.SetSize(width, height)
+ self.ParentWindow.AddBlock(block)
+ self.ParentWindow.Controler.AddCurrentElementEditingBlock(id, values[0], values[2])
+ self.ParentWindow.RefreshBlockModel(block)
+ self.ParentWindow.RefreshScrollBars()
+ self.ParentWindow.Refresh()
elif values[1] != "location":
id = self.ParentWindow.GetNewId()
if values[1] == "Output":
@@ -976,7 +994,7 @@
if event.ControlDown() and event.ShiftDown():
self.Scroll(0, ypos)
elif event.ControlDown():
- self.Scroll(max(0, xpos - 1), ypos)
+ event.Skip()
elif self.SelectedElement:
self.SelectedElement.Move(-scaling[0], 0)
self.SelectedElement.RefreshModel()
@@ -987,7 +1005,7 @@
if event.ControlDown() and event.ShiftDown():
self.Scroll(xmax, ypos)
elif event.ControlDown():
- self.Scroll(min(xpos + 1, xmax), ypos)
+ event.Skip()
elif self.SelectedElement:
self.SelectedElement.Move(scaling[0], 0)
self.SelectedElement.RefreshModel()
@@ -998,7 +1016,7 @@
if event.ControlDown() and event.ShiftDown():
self.Scroll(xpos, 0)
elif event.ControlDown():
- self.Scroll(xpos, max(0, ypos - 1))
+ event.Skip()
elif self.SelectedElement:
self.SelectedElement.Move(0, -scaling[1])
self.SelectedElement.RefreshModel()
@@ -1009,13 +1027,15 @@
if event.ControlDown() and event.ShiftDown():
self.Scroll(xpos, ymax)
elif event.ControlDown():
- self.Scroll(xpos, min(ypos + 1, ymax))
+ event.Skip()
elif self.SelectedElement:
self.SelectedElement.Move(0, scaling[1])
self.SelectedElement.RefreshModel()
self.RefreshBuffer()
self.RefreshScrollBars()
self.Refresh(False)
+ else:
+ event.Skip()
#-------------------------------------------------------------------------------
# Model adding functions