diff -r 4379e98a30aa -r 2b2f8d88e6d3 Viewer.py --- 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: