controls/DebugVariablePanel/DebugVariableGraphicPanel.py
changeset 1218 a5a6072ac944
parent 1217 b64dcc1a011f
child 1227 01e86190f8c7
equal deleted inserted replaced
1217:b64dcc1a011f 1218:a5a6072ac944
   116         Function called when mouse is released in Drop Target
   116         Function called when mouse is released in Drop Target
   117         @param x: X coordinate of mouse pointer
   117         @param x: X coordinate of mouse pointer
   118         @param y: Y coordinate of mouse pointer
   118         @param y: Y coordinate of mouse pointer
   119         @param data: Text associated to drag'n drop
   119         @param data: Text associated to drag'n drop
   120         """
   120         """
       
   121         # Signal Debug Variable Panel to reset highlight
       
   122         self.ParentWindow.ResetHighlight()
       
   123         
   121         message = None
   124         message = None
   122         
   125         
   123         # Check that data is valid regarding DebugVariablePanel
   126         # Check that data is valid regarding DebugVariablePanel
   124         try:
   127         try:
   125             values = eval(data)
   128             values = eval(data)
   202         self.Ticks = numpy.array([]) # List of tick received
   205         self.Ticks = numpy.array([]) # List of tick received
   203         self.StartTick = 0           # Tick starting range of data displayed
   206         self.StartTick = 0           # Tick starting range of data displayed
   204         self.Fixed = False           # Flag that range of data is fixed
   207         self.Fixed = False           # Flag that range of data is fixed
   205         self.CursorTick = None       # Tick of cursor for displaying values
   208         self.CursorTick = None       # Tick of cursor for displaying values
   206         
   209         
   207         # 
       
   208         self.DraggingAxesPanel = None
   210         self.DraggingAxesPanel = None
   209         self.DraggingAxesBoundingBox = None
   211         self.DraggingAxesBoundingBox = None
   210         self.DraggingAxesMousePos = None
   212         self.DraggingAxesMousePos = None
   211         self.VetoScrollEvent = False
   213         self.VetoScrollEvent = False
   212         
   214         
   359         """
   361         """
   360         Called to force refresh of graphs
   362         Called to force refresh of graphs
   361         """
   363         """
   362         self.Force = True
   364         self.Force = True
   363         wx.CallAfter(self.NewDataAvailable, None, True)
   365         wx.CallAfter(self.NewDataAvailable, None, True)
   364     
       
   365     def RefreshGraphicsSizer(self):
       
   366         self.GraphicsSizer.Clear()
       
   367         
       
   368         for panel in self.GraphicPanels:
       
   369             self.GraphicsSizer.AddWindow(panel, flag=wx.GROW)
       
   370             
       
   371         self.GraphicsSizer.Layout()
       
   372         self.RefreshGraphicsWindowScrollbars()
       
   373     
       
   374     def SetCanvasPosition(self, tick):
       
   375         tick = max(self.Ticks[0], min(tick, self.Ticks[-1] - self.CurrentRange))
       
   376         self.StartTick = self.Ticks[numpy.argmin(numpy.abs(self.Ticks - tick))]
       
   377         self.Fixed = True
       
   378         self.RefreshCanvasPosition()
       
   379         self.ForceRefresh()
       
   380     
   366     
   381     def SetCursorTick(self, cursor_tick):
   367     def SetCursorTick(self, cursor_tick):
   382         self.CursorTick = cursor_tick
   368         self.CursorTick = cursor_tick
   383         self.Fixed = cursor_tick is not None
   369         self.Fixed = cursor_tick is not None
   384         self.UpdateCursorTick() 
   370         self.UpdateCursorTick() 
   508         rect = wx.Rect(0, 0, width, height)
   494         rect = wx.Rect(0, 0, width, height)
   509         if rect.InsideXY(x_mouse, y_mouse):
   495         if rect.InsideXY(x_mouse, y_mouse):
   510             wx.CallAfter(self.MoveValue, variable, len(self.GraphicPanels), True)
   496             wx.CallAfter(self.MoveValue, variable, len(self.GraphicPanels), True)
   511         self.ForceRefresh()
   497         self.ForceRefresh()
   512     
   498     
       
   499     def RefreshGraphicsSizer(self):
       
   500         self.GraphicsSizer.Clear()
       
   501         
       
   502         for panel in self.GraphicPanels:
       
   503             self.GraphicsSizer.AddWindow(panel, flag=wx.GROW)
       
   504             
       
   505         self.GraphicsSizer.Layout()
       
   506         self.RefreshGraphicsWindowScrollbars()
       
   507     
   513     def RefreshView(self):
   508     def RefreshView(self):
   514         self.RefreshCanvasPosition()
   509         self.RefreshCanvasPosition()
   515         
   510         
   516         width, height = self.GraphicsWindow.GetVirtualSize()
   511         width, height = self.GraphicsWindow.GetVirtualSize()
   517         bitmap = wx.EmptyBitmap(width, height)
   512         bitmap = wx.EmptyBitmap(width, height)
   598         for panel in self.GraphicPanels:
   593         for panel in self.GraphicPanels:
   599             panel.Destroy()
   594             panel.Destroy()
   600         self.GraphicPanels = []
   595         self.GraphicPanels = []
   601         self.ResetVariableNameMask()
   596         self.ResetVariableNameMask()
   602         self.RefreshGraphicsSizer()
   597         self.RefreshGraphicsSizer()
       
   598     
       
   599     def SetCanvasPosition(self, tick):
       
   600         tick = max(self.Ticks[0], min(tick, self.Ticks[-1] - self.CurrentRange))
       
   601         self.StartTick = self.Ticks[numpy.argmin(numpy.abs(self.Ticks - tick))]
       
   602         self.Fixed = True
       
   603         self.RefreshCanvasPosition()
       
   604         self.ForceRefresh()
   603     
   605     
   604     def RefreshCanvasPosition(self):
   606     def RefreshCanvasPosition(self):
   605         if len(self.Ticks) > 0:
   607         if len(self.Ticks) > 0:
   606             pos = int(self.StartTick - self.Ticks[0])
   608             pos = int(self.StartTick - self.Ticks[0])
   607             range = int(self.Ticks[-1] - self.Ticks[0])
   609             range = int(self.Ticks[-1] - self.Ticks[0])
   768                 source_panel = panel
   770                 source_panel = panel
   769                 break
   771                 break
   770         if source_panel is not None:
   772         if source_panel is not None:
   771             source_panel_idx = self.GraphicPanels.index(source_panel)
   773             source_panel_idx = self.GraphicPanels.index(source_panel)
   772             
   774             
   773             if (len(panel.GetItems()) == 1):
   775             if (len(source_panel.GetItems()) == 1):
   774                 
   776                 
   775                 self.GraphicPanels.insert(idx, source_panel)
   777                 if source_panel_idx < idx:
   776                 self.GraphicPanels.pop(source_panel_idx)
   778                     self.GraphicPanels.insert(idx, source_panel)
       
   779                     self.GraphicPanels.pop(source_panel_idx)
       
   780                 elif source_panel_idx > idx:
       
   781                     self.GraphicPanels.pop(source_panel_idx)
       
   782                     self.GraphicPanels.insert(idx, source_panel)
       
   783                 else:
       
   784                     return
   777                 
   785                 
   778             else:
   786             else:
   779                 source_panel.RemoveItem(item)
   787                 source_panel.RemoveItem(item)
   780                 source_size = source_panel.GetSize()
   788                 source_size = source_panel.GetSize()
   781                 if item.IsNumVariable() and graph:
   789                 if item.IsNumVariable() and graph: