much more user-friendly zooming
This commit is contained in:
parent
21d969b5cb
commit
764012a889
@ -20,6 +20,7 @@ class SketchWidget:
|
||||
self.line_width = 0.8
|
||||
self.axis_width = 1.8
|
||||
self.axis_length = 50
|
||||
self.zoom_factor = 1.2
|
||||
|
||||
try:
|
||||
# try double-buffered
|
||||
@ -217,14 +218,22 @@ class SketchWidget:
|
||||
|
||||
def scroll_event(self, widget, event, data = None):
|
||||
if event.direction == gtk.gdk.SCROLL_UP:
|
||||
self.view_center = self.screenPtToPt((event.x,
|
||||
zoom_pt = self.screenPtToPt((event.x,
|
||||
self.size[1] - event.y))
|
||||
self.view_width /= 1.2
|
||||
off_x = zoom_pt[0] - self.view_center[0]
|
||||
off_y = zoom_pt[1] - self.view_center[1]
|
||||
self.view_center = (zoom_pt[0] - off_x / self.zoom_factor,
|
||||
zoom_pt[1] - off_y / self.zoom_factor)
|
||||
self.view_width /= self.zoom_factor
|
||||
self.redraw()
|
||||
elif event.direction == gtk.gdk.SCROLL_DOWN:
|
||||
self.view_center = self.screenPtToPt((event.x,
|
||||
zoom_pt = self.screenPtToPt((event.x,
|
||||
self.size[1] - event.y))
|
||||
self.view_width *= 1.2
|
||||
off_x = zoom_pt[0] - self.view_center[0]
|
||||
off_y = zoom_pt[1] - self.view_center[1]
|
||||
self.view_center = (zoom_pt[0] - off_x * self.zoom_factor,
|
||||
zoom_pt[1] - off_y * self.zoom_factor)
|
||||
self.view_width *= self.zoom_factor
|
||||
self.redraw()
|
||||
|
||||
def redraw(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user