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: |