add crude line drawing

This commit is contained in:
Josh Holtrop 2011-04-03 11:50:44 -04:00
parent 204f4591e9
commit f20726e571

View File

@ -15,6 +15,8 @@ class SketchWidget:
self.view_width = 4.0 self.view_width = 4.0
self.size = (1, 1) self.size = (1, 1)
self.panning = False self.panning = False
self.drawingLine = None
self.drawingCircle = None
# Configuration parameters # Configuration parameters
self.line_width = 0.8 self.line_width = 0.8
@ -103,6 +105,9 @@ class SketchWidget:
elif isinstance(shape, Circle): elif isinstance(shape, Circle):
self.drawCircle(shape, self.line_width) self.drawCircle(shape, self.line_width)
if self.drawingLine is not None:
self.drawLine(self.drawingLine, self.line_width)
if gldrawable.is_double_buffered(): if gldrawable.is_double_buffered():
gldrawable.swap_buffers() gldrawable.swap_buffers()
else: else:
@ -199,9 +204,19 @@ class SketchWidget:
glPopAttrib() glPopAttrib()
def button_press_event(self, widget, event, data = None): def button_press_event(self, widget, event, data = None):
if event.button == 2: if event.button == 1:
if self.drawingLine is not None:
self.sketch.shapes.append(self.drawingLine)
start = self.screenPtToPt((event.x, self.size[1] - event.y))
self.drawingLine = Line(start[0], start[1], start[0], start[1])
elif event.button == 2:
self.panning = True self.panning = True
self.panning_start = (event.x, self.size[1] - event.y) self.panning_start = (event.x, self.size[1] - event.y)
elif event.button == 3:
if self.drawingLine is not None:
# cancel line currently being drawn
self.drawingLine = None
self.redraw()
def button_release_event(self, widget, event, data = None): def button_release_event(self, widget, event, data = None):
if event.button == 2: if event.button == 2:
@ -215,6 +230,10 @@ class SketchWidget:
self.view_center[1] - this_pt[1] + start_pt[1]) self.view_center[1] - this_pt[1] + start_pt[1])
self.panning_start = (event.x, self.size[1] - event.y) self.panning_start = (event.x, self.size[1] - event.y)
self.redraw() self.redraw()
elif self.drawingLine is not None:
this_pt = self.screenPtToPt((event.x, self.size[1] - event.y))
self.drawingLine.setPt(1, this_pt)
self.redraw()
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: