448 def __del__(self): |
448 def __del__(self): |
449 DebugViewer.__del__(self) |
449 DebugViewer.__del__(self) |
450 self.Flush() |
450 self.Flush() |
451 self.ResetView() |
451 self.ResetView() |
452 |
452 |
453 def SetScale(self, scale_number): |
453 def SetScale(self, scale_number, refresh=True): |
454 self.CurrentScale = max(0, min(scale_number, len(ZOOM_FACTORS) - 1)) |
454 self.CurrentScale = max(0, min(scale_number, len(ZOOM_FACTORS) - 1)) |
455 self.ViewScale = (ZOOM_FACTORS[self.CurrentScale], ZOOM_FACTORS[self.CurrentScale]) |
455 self.ViewScale = (ZOOM_FACTORS[self.CurrentScale], ZOOM_FACTORS[self.CurrentScale]) |
456 self.RefreshScaling() |
456 self.RefreshScaling(refresh) |
457 |
457 |
458 def GetScale(self): |
458 def GetScale(self): |
459 return self.CurrentScale |
459 return self.CurrentScale |
460 |
460 |
461 def GetLogicalDC(self, buffered=False): |
461 def GetLogicalDC(self, buffered=False): |
2806 xp = max(0, min(x - rotation * 3, self.GetVirtualSize()[0] / self.GetScrollPixelsPerUnit()[0])) |
2807 xp = max(0, min(x - rotation * 3, self.GetVirtualSize()[0] / self.GetScrollPixelsPerUnit()[0])) |
2807 self.RefreshVisibleElements(xp = xp) |
2808 self.RefreshVisibleElements(xp = xp) |
2808 self.Scroll(xp, y) |
2809 self.Scroll(xp, y) |
2809 elif event.ControlDown(): |
2810 elif event.ControlDown(): |
2810 dc = self.GetLogicalDC() |
2811 dc = self.GetLogicalDC() |
|
2812 self.Freeze() |
2811 pos = event.GetLogicalPosition(dc) |
2813 pos = event.GetLogicalPosition(dc) |
2812 mouse_pos = event.GetPosition() |
2814 mouse_pos = event.GetPosition() |
2813 self.SetScale(self.CurrentScale + rotation) |
2815 self.SetScale(self.CurrentScale + rotation, False) |
2814 self.Scroll(round(pos.x * self.ViewScale[0] - mouse_pos.x) / SCROLLBAR_UNIT, |
2816 xmax = self.GetScrollRange(wx.HORIZONTAL) - self.GetScrollThumb(wx.HORIZONTAL) |
2815 round(pos.y * self.ViewScale[1] - mouse_pos.y) / SCROLLBAR_UNIT) |
2817 ymax = self.GetScrollRange(wx.VERTICAL) - self.GetScrollThumb(wx.VERTICAL) |
2816 self.RefreshScrollBars() |
2818 scrollx = max(0, round(pos.x * self.ViewScale[0] - mouse_pos.x) / SCROLLBAR_UNIT) |
|
2819 scrolly = max(0, round(pos.y * self.ViewScale[1] - mouse_pos.y) / SCROLLBAR_UNIT) |
|
2820 if scrollx > xmax or scrolly > ymax: |
|
2821 self.RefreshScrollBars(max(0, scrollx - xmax), max(0, scrolly - ymax)) |
|
2822 self.Scroll(scrollx, scrolly) |
|
2823 else: |
|
2824 self.Scroll(scrollx, scrolly) |
|
2825 self.RefreshScrollBars() |
2817 self.RefreshVisibleElements() |
2826 self.RefreshVisibleElements() |
2818 self.Refresh() |
2827 self.Refresh() |
|
2828 self.Thaw() |
2819 self.ParentWindow.RefreshDisplayMenu() |
2829 self.ParentWindow.RefreshDisplayMenu() |
2820 else: |
2830 else: |
2821 x, y = self.GetViewStart() |
2831 x, y = self.GetViewStart() |
2822 yp = max(0, min(y - rotation * 3, self.GetVirtualSize()[1] / self.GetScrollPixelsPerUnit()[1])) |
2832 yp = max(0, min(y - rotation * 3, self.GetVirtualSize()[1] / self.GetScrollPixelsPerUnit()[1])) |
2823 self.RefreshVisibleElements(yp = yp) |
2833 self.RefreshVisibleElements(yp = yp) |