initial attempt at panning, need to redraw

This commit is contained in:
Josh Holtrop 2011-04-01 23:49:09 -04:00
parent e3dc55efc7
commit 10549ff7ae

View File

@ -14,6 +14,7 @@ class SketchWidget:
self.view_center = (0, 0)
self.view_width = 4.0
self.size = (1, 1)
self.panning = False
# Configuration parameters
self.line_width = 0.8
@ -120,6 +121,16 @@ class SketchWidget:
def distToScreenDist(self, dist):
return dist / self.view_width * self.size[0]
def screenPtToPt(self, pt):
return ((pt[0] - self.size[0]) / self.size[0] * self.view_width
+ self.view_center[0] / 2,
(pt[1] - self.size[1]) / self.size[1] *
(self.view_width * self.size[1] / self.size[0])
+ self.view_center[1] / 2)
def screenDistToDist(self, dist):
return dist * self.size[0] / self.view_width
def drawLine(self, shape, size):
pt0 = self.ptToScreenPt(shape.getPt(0))
pt1 = self.ptToScreenPt(shape.getPt(1))
@ -189,14 +200,21 @@ class SketchWidget:
glPopAttrib()
def button_press_event(self, widget, event, data = None):
print 'clicked'
print 'button:', event.button
if event.button == 2:
self.panning = True
self.panning_start = (event.x, event.y)
def button_release_event(self, widget, event, data = None):
print 'unclicked button', event.button
if event.button == 2:
self.panning = False
def motion_event(self, widget, event, data = None):
print 'motion'
if self.panning:
start_pt = self.screenPtToPt(self.panning_start)
this_pt = self.screenPtToPt((event.x, event.y))
self.view_center = (self.view_center[0] + this_pt[0] - start_pt[0],
self.view_center[1] + this_pt[1] - start_pt[1])
self.panning_start = (event.x, event.y)
def scroll_event(self, widget, event, data = None):
if event.direction == gtk.gdk.SCROLL_UP: