snap lines to shape handles while drawing

This commit is contained in:
Josh Holtrop 2011-07-28 10:28:57 -04:00
parent c75fbc50ab
commit fdcb07003c

View File

@ -376,16 +376,31 @@ class SketchWidget:
self.cancel_drawing_shape() self.cancel_drawing_shape()
def do_line_left_click(self, x, y): def do_line_left_click(self, x, y):
start = self.screenPtToPt((x, self.size[1] - y)) click_pt = self.screenPtToPt((x, self.size[1] - y))
previous_line = None start = click_pt
start_pt_ref = None
if self.hover_snap_point is not None:
start = self.hover_snap_point[0].getPt(self.hover_snap_point[1])
start_pt_ref = self.hover_snap_point
if self.drawingShape is not None: if self.drawingShape is not None:
# end a currently drawing line
start = self.drawingShape.getPt(1) # start at last snap point start = self.drawingShape.getPt(1) # start at last snap point
previous_line = self.drawingShape prev_line = self.drawingShape
if self.hover_snap_point is not None:
c = Connect(self.hover_snap_point[0], self.hover_snap_point[1],
self.drawingShape, 1)
self.drawingConstraints['c2'] = c
pt = self.hover_snap_point[0].getPt(self.hover_snap_point[1])
self.drawingShape.setPt(1, pt)
self.merge_in_drawing_shape() self.merge_in_drawing_shape()
self.drawingShape = Line(start[0], start[1], start[0], start[1]) start = prev_line.getPt(1)
if previous_line is not None: start_pt_ref = (prev_line, 1)
connect = Connect(previous_line, 1, self.drawingShape, 0) # begin a new line
self.drawingConstraints['c'] = connect self.drawingShape = Line(
start[0], start[1], click_pt[0], click_pt[1])
if start_pt_ref is not None:
c = Connect(start_pt_ref[0], start_pt_ref[1], self.drawingShape, 0)
self.drawingConstraints['c1'] = c
self.queue_redraw() self.queue_redraw()
def do_line_right_click(self, x, y): def do_line_right_click(self, x, y):