add crude line drawing
This commit is contained in:
parent
204f4591e9
commit
f20726e571
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user