Viewer.py
changeset 47 2b2f8d88e6d3
parent 45 42637f721b5b
child 53 4988262d03e3
--- 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: