change drawingConstraints to a hash for easier updating

This commit is contained in:
Josh Holtrop 2011-07-28 00:43:43 -04:00
parent ada889ab5e
commit b5080f14dd

View File

@ -17,7 +17,7 @@ class SketchWidget:
self.size = (1, 1) self.size = (1, 1)
self.panning = False self.panning = False
self.drawingShape = None self.drawingShape = None
self.drawingConstraints = [] self.drawingConstraints = {}
self.mode = '' self.mode = ''
self.snap_points = {} # keyed by (shape, ptNum) self.snap_points = {} # keyed by (shape, ptNum)
self.cursors = { self.cursors = {
@ -132,7 +132,7 @@ class SketchWidget:
self.drawShape(self.drawingShape) self.drawShape(self.drawingShape)
glColor(*self.constraint_color) glColor(*self.constraint_color)
for c in self.drawingConstraints: for c in self.drawingConstraints:
self.drawConstraint(c) self.drawConstraint(self.drawingConstraints[c])
if self.hover_snap_point is not None: if self.hover_snap_point is not None:
glColor(*self.hover_color) glColor(*self.hover_color)
@ -400,19 +400,22 @@ class SketchWidget:
if ((snaps_to(-180) or snaps_to(180) or snaps_to(0)) if ((snaps_to(-180) or snaps_to(180) or snaps_to(0))
and within(start[1], this_pt[1], hv_snap_dist)): and within(start[1], this_pt[1], hv_snap_dist)):
this_pt = (this_pt[0], start[1]) this_pt = (this_pt[0], start[1])
if not (len(self.drawingConstraints) > 0 if not ('hv' in self.drawingConstraints
and isinstance(self.drawingConstraints[0], Horizontal)): and isinstance(self.drawingConstraints['hv'],
Horizontal)):
c = Horizontal(self.drawingShape, 0, self.drawingShape, 1) c = Horizontal(self.drawingShape, 0, self.drawingShape, 1)
self.drawingConstraints = [c] self.drawingConstraints['hv'] = c
elif ((snaps_to(-90) or snaps_to(90)) elif ((snaps_to(-90) or snaps_to(90))
and within(start[0], this_pt[0], hv_snap_dist)): and within(start[0], this_pt[0], hv_snap_dist)):
this_pt = (start[0], this_pt[1]) this_pt = (start[0], this_pt[1])
if not (len(self.drawingConstraints) > 0 if not ('hv' in self.drawingConstraints
and isinstance(self.drawingConstraints[0], Vertical)): and isinstance(self.drawingConstraints['hv'],
Vertical)):
c = Vertical(self.drawingShape, 0, self.drawingShape, 1) c = Vertical(self.drawingShape, 0, self.drawingShape, 1)
self.drawingConstraints = [c] self.drawingConstraints['hv'] = c
else: else:
self.drawingConstraints = [] if 'hv' in self.drawingConstraints:
del self.drawingConstraints['hv']
self.drawingShape.setPt(1, this_pt) self.drawingShape.setPt(1, this_pt)
self.queue_redraw() self.queue_redraw()
sp = self.get_closest_snap_point(x, y) sp = self.get_closest_snap_point(x, y)
@ -443,15 +446,15 @@ class SketchWidget:
def cancel_drawing_shape(self): def cancel_drawing_shape(self):
self.drawingShape = None self.drawingShape = None
self.drawingConstraints = [] self.drawingConstraints = {}
self.hover_snap_point = None self.hover_snap_point = None
def merge_in_drawing_shape(self): def merge_in_drawing_shape(self):
self.sketch.shapes.append(self.drawingShape) self.sketch.shapes.append(self.drawingShape)
for c in self.drawingConstraints: for c in self.drawingConstraints:
self.sketch.constraints.append(c) self.sketch.constraints.append(self.drawingConstraints[c])
self.drawingShape = None self.drawingShape = None
self.drawingConstraints = [] self.drawingConstraints = {}
def dist_bw(self, pt1, pt2): def dist_bw(self, pt1, pt2):
x = pt2[0] - pt1[0] x = pt2[0] - pt1[0]