From b5080f14dd318b6e03873b75c9ba66fe32058a80 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 28 Jul 2011 00:43:43 -0400 Subject: [PATCH] change drawingConstraints to a hash for easier updating --- SketchWidget.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/SketchWidget.py b/SketchWidget.py index 4cb3b6d..586ec89 100644 --- a/SketchWidget.py +++ b/SketchWidget.py @@ -17,7 +17,7 @@ class SketchWidget: self.size = (1, 1) self.panning = False self.drawingShape = None - self.drawingConstraints = [] + self.drawingConstraints = {} self.mode = '' self.snap_points = {} # keyed by (shape, ptNum) self.cursors = { @@ -132,7 +132,7 @@ class SketchWidget: self.drawShape(self.drawingShape) glColor(*self.constraint_color) for c in self.drawingConstraints: - self.drawConstraint(c) + self.drawConstraint(self.drawingConstraints[c]) if self.hover_snap_point is not None: glColor(*self.hover_color) @@ -400,19 +400,22 @@ class SketchWidget: if ((snaps_to(-180) or snaps_to(180) or snaps_to(0)) and within(start[1], this_pt[1], hv_snap_dist)): this_pt = (this_pt[0], start[1]) - if not (len(self.drawingConstraints) > 0 - and isinstance(self.drawingConstraints[0], Horizontal)): + if not ('hv' in self.drawingConstraints + and isinstance(self.drawingConstraints['hv'], + Horizontal)): c = Horizontal(self.drawingShape, 0, self.drawingShape, 1) - self.drawingConstraints = [c] + self.drawingConstraints['hv'] = c elif ((snaps_to(-90) or snaps_to(90)) and within(start[0], this_pt[0], hv_snap_dist)): this_pt = (start[0], this_pt[1]) - if not (len(self.drawingConstraints) > 0 - and isinstance(self.drawingConstraints[0], Vertical)): + if not ('hv' in self.drawingConstraints + and isinstance(self.drawingConstraints['hv'], + Vertical)): c = Vertical(self.drawingShape, 0, self.drawingShape, 1) - self.drawingConstraints = [c] + self.drawingConstraints['hv'] = c else: - self.drawingConstraints = [] + if 'hv' in self.drawingConstraints: + del self.drawingConstraints['hv'] self.drawingShape.setPt(1, this_pt) self.queue_redraw() sp = self.get_closest_snap_point(x, y) @@ -443,15 +446,15 @@ class SketchWidget: def cancel_drawing_shape(self): self.drawingShape = None - self.drawingConstraints = [] + self.drawingConstraints = {} self.hover_snap_point = None def merge_in_drawing_shape(self): self.sketch.shapes.append(self.drawingShape) for c in self.drawingConstraints: - self.sketch.constraints.append(c) + self.sketch.constraints.append(self.drawingConstraints[c]) self.drawingShape = None - self.drawingConstraints = [] + self.drawingConstraints = {} def dist_bw(self, pt1, pt2): x = pt2[0] - pt1[0]