controls/DebugVariablePanel.py
changeset 1041 736ec395399a
parent 1040 af8a1aee3584
child 1043 b46e45e0afc7
equal deleted inserted replaced
1040:af8a1aee3584 1041:736ec395399a
   816             self.Bind(wx.EVT_ENTER_WINDOW, self.OnEnter)
   816             self.Bind(wx.EVT_ENTER_WINDOW, self.OnEnter)
   817             self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeave)
   817             self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeave)
   818             self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
   818             self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground)
   819             self.Bind(wx.EVT_SIZE, self.OnResize)
   819             self.Bind(wx.EVT_SIZE, self.OnResize)
   820             
   820             
   821             self.SetMinSize(wx.Size(200, 200))
   821             self.SetMinSize(self.GetCanvasMinSize())
   822             self.SetDropTarget(DebugVariableDropTarget(self.ParentWindow, self))
   822             self.SetDropTarget(DebugVariableDropTarget(self.ParentWindow, self))
   823             self.mpl_connect('button_press_event', self.OnCanvasButtonPressed)
   823             self.mpl_connect('button_press_event', self.OnCanvasButtonPressed)
   824             self.mpl_connect('motion_notify_event', self.OnCanvasMotion)
   824             self.mpl_connect('motion_notify_event', self.OnCanvasMotion)
   825             self.mpl_connect('button_release_event', self.OnCanvasButtonReleased)
   825             self.mpl_connect('button_release_event', self.OnCanvasButtonReleased)
   826             self.mpl_connect('scroll_event', self.OnCanvasScroll)
   826             self.mpl_connect('scroll_event', self.OnCanvasScroll)
  2133             if item is not None:
  2133             if item is not None:
  2134                 source_panel = panel
  2134                 source_panel = panel
  2135                 break
  2135                 break
  2136         if source_panel is not None:
  2136         if source_panel is not None:
  2137             source_panel.RemoveItem(item)
  2137             source_panel.RemoveItem(item)
       
  2138             source_size = source_panel.GetSize()
  2138             if source_panel.IsEmpty():
  2139             if source_panel.IsEmpty():
  2139                 if source_panel.HasCapture():
  2140                 if source_panel.HasCapture():
  2140                     source_panel.ReleaseMouse()
  2141                     source_panel.ReleaseMouse()
  2141                 self.GraphicPanels.remove(source_panel)
  2142                 self.GraphicPanels.remove(source_panel)
  2142                 source_panel.Destroy()
  2143                 source_panel.Destroy()
  2143             
  2144             
  2144             if item.IsNumVariable():
  2145             if item.IsNumVariable():
  2145                 panel = DebugVariableGraphic(self.GraphicsWindow, self, [item], GRAPH_PARALLEL)
  2146                 panel = DebugVariableGraphic(self.GraphicsWindow, self, [item], GRAPH_PARALLEL)
       
  2147                 panel.SetCanvasSize(source_size.width, source_size.height)
  2146                 if self.CursorTick is not None:
  2148                 if self.CursorTick is not None:
  2147                     panel.SetCursorTick(self.CursorTick)
  2149                     panel.SetCursorTick(self.CursorTick)
  2148             else:
  2150             else:
  2149                 panel = DebugVariableText(self.GraphicsWindow, self, [item])
  2151                 panel = DebugVariableText(self.GraphicsWindow, self, [item])
  2150             self.GraphicPanels.insert(idx, panel)
  2152             self.GraphicPanels.insert(idx, panel)
  2165             if item.IsNumVariable():
  2167             if item.IsNumVariable():
  2166                 result = self.AddDataConsumer(source.upper(), item)
  2168                 result = self.AddDataConsumer(source.upper(), item)
  2167                 if result is not None or force:
  2169                 if result is not None or force:
  2168                     source_item = item
  2170                     source_item = item
  2169         if source_item is not None and source_item.IsNumVariable():
  2171         if source_item is not None and source_item.IsNumVariable():
       
  2172             if source_panel is not None:
       
  2173                 source_size = source_panel.GetSize()
       
  2174             else:
       
  2175                 source_size = None
  2170             target_panel = self.GraphicPanels[target_idx]
  2176             target_panel = self.GraphicPanels[target_idx]
  2171             graph_type = target_panel.GraphType
  2177             graph_type = target_panel.GraphType
  2172             if target_panel != source_panel:
  2178             if target_panel != source_panel:
  2173                 if (merge_type == GRAPH_PARALLEL and graph_type != merge_type or
  2179                 if (merge_type == GRAPH_PARALLEL and graph_type != merge_type or
  2174                     merge_type == GRAPH_ORTHOGONAL and 
  2180                     merge_type == GRAPH_ORTHOGONAL and 
  2189                 target_panel = None
  2195                 target_panel = None
  2190                 
  2196                 
  2191             if target_panel is not None:
  2197             if target_panel is not None:
  2192                 target_panel.AddItem(source_item)
  2198                 target_panel.AddItem(source_item)
  2193                 target_panel.GraphType = merge_type
  2199                 target_panel.GraphType = merge_type
       
  2200                 size = target_panel.GetSize()
       
  2201                 if merge_type == GRAPH_ORTHOGONAL:
       
  2202                     target_panel.SetCanvasSize(size.width, size.width)
       
  2203                 elif source_size is not None:
       
  2204                     target_panel.SetCanvasSize(size.width, size.height + source_size.height)
       
  2205                 else:
       
  2206                     target_panel.SetCanvasSize(size.width, size.height)
  2194                 target_panel.ResetGraphics()
  2207                 target_panel.ResetGraphics()
  2195                 
  2208                 
  2196                 self.ResetVariableNameMask()
  2209                 self.ResetVariableNameMask()
  2197                 self.RefreshGraphicsSizer()
  2210                 self.RefreshGraphicsSizer()
  2198                 self.ForceRefresh()
  2211                 self.ForceRefresh()
  2240     def OnGraphicsWindowPaint(self, event):
  2253     def OnGraphicsWindowPaint(self, event):
  2241         self.RefreshView()
  2254         self.RefreshView()
  2242         event.Skip()
  2255         event.Skip()
  2243     
  2256     
  2244     def OnGraphicsWindowResize(self, event):
  2257     def OnGraphicsWindowResize(self, event):
       
  2258         size = self.GetSize()
       
  2259         for panel in self.GraphicPanels:
       
  2260             panel_size = panel.GetSize()
       
  2261             if panel.GraphType == GRAPH_ORTHOGONAL and panel_size.width == panel_size.height:
       
  2262                 panel.SetCanvasSize(size.width, size.width)
  2245         self.RefreshGraphicsWindowScrollbars()
  2263         self.RefreshGraphicsWindowScrollbars()
  2246         event.Skip()
  2264         event.Skip()
  2247 
  2265 
  2248     def OnGraphicsWindowMouseWheel(self, event):
  2266     def OnGraphicsWindowMouseWheel(self, event):
  2249         if self.VetoScrollEvent:
  2267         if self.VetoScrollEvent: