initial attempt at panning, need to redraw
This commit is contained in:
parent
e3dc55efc7
commit
10549ff7ae
@ -14,6 +14,7 @@ class SketchWidget:
|
|||||||
self.view_center = (0, 0)
|
self.view_center = (0, 0)
|
||||||
self.view_width = 4.0
|
self.view_width = 4.0
|
||||||
self.size = (1, 1)
|
self.size = (1, 1)
|
||||||
|
self.panning = False
|
||||||
|
|
||||||
# Configuration parameters
|
# Configuration parameters
|
||||||
self.line_width = 0.8
|
self.line_width = 0.8
|
||||||
@ -120,6 +121,16 @@ class SketchWidget:
|
|||||||
def distToScreenDist(self, dist):
|
def distToScreenDist(self, dist):
|
||||||
return dist / self.view_width * self.size[0]
|
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):
|
def drawLine(self, shape, size):
|
||||||
pt0 = self.ptToScreenPt(shape.getPt(0))
|
pt0 = self.ptToScreenPt(shape.getPt(0))
|
||||||
pt1 = self.ptToScreenPt(shape.getPt(1))
|
pt1 = self.ptToScreenPt(shape.getPt(1))
|
||||||
@ -189,14 +200,21 @@ class SketchWidget:
|
|||||||
glPopAttrib()
|
glPopAttrib()
|
||||||
|
|
||||||
def button_press_event(self, widget, event, data = None):
|
def button_press_event(self, widget, event, data = None):
|
||||||
print 'clicked'
|
if event.button == 2:
|
||||||
print 'button:', event.button
|
self.panning = True
|
||||||
|
self.panning_start = (event.x, event.y)
|
||||||
|
|
||||||
def button_release_event(self, widget, event, data = None):
|
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):
|
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):
|
def scroll_event(self, widget, event, data = None):
|
||||||
if event.direction == gtk.gdk.SCROLL_UP:
|
if event.direction == gtk.gdk.SCROLL_UP:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user