Viewer.py
changeset 47 2b2f8d88e6d3
parent 45 42637f721b5b
child 53 4988262d03e3
equal deleted inserted replaced
46:4379e98a30aa 47:2b2f8d88e6d3
    43  wxID_FBDVIEWERCONTEXTUALMENUITEMS5, wxID_FBDVIEWERCONTEXTUALMENUITEMS6,
    43  wxID_FBDVIEWERCONTEXTUALMENUITEMS5, wxID_FBDVIEWERCONTEXTUALMENUITEMS6,
    44  wxID_FBDVIEWERCONTEXTUALMENUITEMS8, wxID_FBDVIEWERCONTEXTUALMENUITEMS9,
    44  wxID_FBDVIEWERCONTEXTUALMENUITEMS8, wxID_FBDVIEWERCONTEXTUALMENUITEMS9,
    45  wxID_FBDVIEWERCONTEXTUALMENUITEMS11,
    45  wxID_FBDVIEWERCONTEXTUALMENUITEMS11,
    46 ] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(9)]
    46 ] = [wx.NewId() for _init_coll_ContextualMenu_Items in range(9)]
    47 
    47 
       
    48 
       
    49 class ViewerDropTarget(wx.TextDropTarget):
       
    50     
       
    51     def __init__(self, parent):
       
    52         wx.TextDropTarget.__init__(self)
       
    53         self.Parent = parent
       
    54     
       
    55     def OnDropText(self, x, y, data):
       
    56         values = eval(data)
       
    57         if values[1] in ["function", "functionBlock", "program"]:
       
    58             id = self.Parent.GetNewId()
       
    59             block = FBD_Block(self.Parent, values[0], "", id)
       
    60             block.SetPosition(x, y)
       
    61             width, height = block.GetMinSize()
       
    62             block.SetSize(width, height)
       
    63             self.Parent.AddBlock(block)
       
    64             self.Parent.Controler.AddCurrentElementEditingBlock(id)
       
    65             self.Parent.RefreshBlockModel(block)
       
    66             self.Parent.RefreshScrollBars()
       
    67             self.Parent.Refresh()
       
    68         else:
       
    69             id = self.Parent.GetNewId()
       
    70             if values[1] == "Output":
       
    71                 var_type = OUTPUT
       
    72             elif values[1] == "InOut":
       
    73                 var_type = INPUT
       
    74             else:
       
    75                 var_type = INPUT
       
    76             variable = FBD_Variable(self.Parent, var_type, values[0], values[2], id)
       
    77             variable.SetPosition(x, y)
       
    78             width, height = variable.GetMinSize()
       
    79             variable.SetSize(width, height)
       
    80             self.Parent.AddBlock(variable)
       
    81             self.Parent.Controler.AddCurrentElementEditingVariable(id, var_type)
       
    82             self.Parent.RefreshVariableModel(variable)
       
    83             self.Parent.RefreshScrollBars()
       
    84             self.Parent.Refresh()
       
    85             
    48 
    86 
    49 """
    87 """
    50 Class that implements a Viewer based on a wxScrolledWindow for drawing and 
    88 Class that implements a Viewer based on a wxScrolledWindow for drawing and 
    51 manipulating graphic elements
    89 manipulating graphic elements
    52 """
    90 """
   124         self.SavedMode = False
   162         self.SavedMode = False
   125         
   163         
   126         self.Parent = window
   164         self.Parent = window
   127         self.Controler = controler
   165         self.Controler = controler
   128         
   166         
       
   167         self.SetDropTarget(ViewerDropTarget(self))
       
   168         
   129         # Link Viewer event to corresponding methods
   169         # Link Viewer event to corresponding methods
   130         EVT_PAINT(self, self.OnPaint)
   170         EVT_PAINT(self, self.OnPaint)
   131         EVT_LEFT_DOWN(self, self.OnViewerLeftDown)
   171         EVT_LEFT_DOWN(self, self.OnViewerLeftDown)
   132         EVT_LEFT_UP(self, self.OnViewerLeftUp)
   172         EVT_LEFT_UP(self, self.OnViewerLeftUp)
   133         EVT_LEFT_DCLICK(self, self.OnViewerLeftDClick)
   173         EVT_LEFT_DCLICK(self, self.OnViewerLeftDClick)
   205     def ResetView(self):
   245     def ResetView(self):
   206         self.Blocks = {}
   246         self.Blocks = {}
   207         self.Wires = {}
   247         self.Wires = {}
   208         self.Comments = {}
   248         self.Comments = {}
   209         self.SelectedElement = None
   249         self.SelectedElement = None
       
   250     
       
   251     # Remove all elements
       
   252     def CleanView(self):
       
   253         for block in self.Blocks.keys():
       
   254             block.Clean()
       
   255         self.ResetView()
   210     
   256     
   211     # Changes Viewer mode
   257     # Changes Viewer mode
   212     def SetMode(self, mode):
   258     def SetMode(self, mode):
   213         if self.Mode != mode or mode == MODE_SELECTION:
   259         if self.Mode != mode or mode == MODE_SELECTION:
   214             self.Mode = mode
   260             self.Mode = mode