From f20726e5715455a0257ba6cf46e8055c31e350ff Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 3 Apr 2011 11:50:44 -0400 Subject: [PATCH] add crude line drawing --- SketchWidget.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/SketchWidget.py b/SketchWidget.py index 578f31f..345b5d4 100644 --- a/SketchWidget.py +++ b/SketchWidget.py @@ -15,6 +15,8 @@ class SketchWidget: self.view_width = 4.0 self.size = (1, 1) self.panning = False + self.drawingLine = None + self.drawingCircle = None # Configuration parameters self.line_width = 0.8 @@ -103,6 +105,9 @@ class SketchWidget: elif isinstance(shape, Circle): self.drawCircle(shape, self.line_width) + if self.drawingLine is not None: + self.drawLine(self.drawingLine, self.line_width) + if gldrawable.is_double_buffered(): gldrawable.swap_buffers() else: @@ -199,9 +204,19 @@ class SketchWidget: glPopAttrib() 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_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): if event.button == 2: @@ -215,6 +230,10 @@ class SketchWidget: self.view_center[1] - this_pt[1] + start_pt[1]) self.panning_start = (event.x, self.size[1] - event.y) 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): if event.direction == gtk.gdk.SCROLL_UP: