--- a/Viewer.py Thu Jul 19 15:04:41 2007 +0200
+++ b/Viewer.py Fri Jul 20 18:28:03 2007 +0200
@@ -46,6 +46,44 @@
] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(9)]
+class ViewerDropTarget(wx.TextDropTarget):
+
+ def __init__(self, parent):
+ wx.TextDropTarget.__init__(self)
+ self.Parent = parent
+
+ def OnDropText(self, x, y, data):
+ values = eval(data)
+ if values[1] in ["function", "functionBlock", "program"]:
+ id = self.Parent.GetNewId()
+ block = FBD_Block(self.Parent, values[0], "", id)
+ block.SetPosition(x, y)
+ width, height = block.GetMinSize()
+ block.SetSize(width, height)
+ self.Parent.AddBlock(block)
+ self.Parent.Controler.AddCurrentElementEditingBlock(id)
+ self.Parent.RefreshBlockModel(block)
+ self.Parent.RefreshScrollBars()
+ self.Parent.Refresh()
+ else:
+ id = self.Parent.GetNewId()
+ if values[1] == "Output":
+ var_type = OUTPUT
+ elif values[1] == "InOut":
+ var_type = INPUT
+ else:
+ var_type = INPUT
+ variable = FBD_Variable(self.Parent, var_type, values[0], values[2], id)
+ variable.SetPosition(x, y)
+ width, height = variable.GetMinSize()
+ variable.SetSize(width, height)
+ self.Parent.AddBlock(variable)
+ self.Parent.Controler.AddCurrentElementEditingVariable(id, var_type)
+ self.Parent.RefreshVariableModel(variable)
+ self.Parent.RefreshScrollBars()
+ self.Parent.Refresh()
+
+
"""
Class that implements a Viewer based on a wxScrolledWindow for drawing and
manipulating graphic elements
@@ -126,6 +164,8 @@
self.Parent = window
self.Controler = controler
+ self.SetDropTarget(ViewerDropTarget(self))
+
# Link Viewer event to corresponding methods
EVT_PAINT(self, self.OnPaint)
EVT_LEFT_DOWN(self, self.OnViewerLeftDown)
@@ -208,6 +248,12 @@
self.Comments = {}
self.SelectedElement = None
+ # Remove all elements
+ def CleanView(self):
+ for block in self.Blocks.keys():
+ block.Clean()
+ self.ResetView()
+
# Changes Viewer mode
def SetMode(self, mode):
if self.Mode != mode or mode == MODE_SELECTION: