add XDim and YDim modes (no graphics yet)

This commit is contained in:
Josh Holtrop 2011-10-03 12:29:50 -04:00
parent 1585c8c9f2
commit 751b063237
2 changed files with 53 additions and 0 deletions

View File

@ -28,6 +28,8 @@ class SketchWidget(object):
'connect': ConnectMode(),
'horizontal': HorizontalMode(),
'vertical': VerticalMode(),
'xdim': XDimMode(),
'ydim': YDimMode(),
}
self.mode_name = 'select'
self.mode = self.modes[self.mode_name]
@ -496,6 +498,7 @@ class SketchWidget(object):
':solve(): Unknown Sketch.solve() result\n')
self.window.update_sketch_status(valid, text)
self.update_snap_ptrefs()
self.queue_redraw()
class Mode(object):
def do_left_click(self, sw, x, y):
@ -681,3 +684,51 @@ class VerticalMode(ConnectMode):
sw.sketch.constraints.append(c)
self.first_ptref = None
sw.invalidate()
class DimMode(Mode):
def start_mode(self, sw):
self.ptrefs = []
def get_cursor(self):
return 'crosshair'
def do_motion(self, sw, x, y):
if len(self.ptrefs) < 2:
sw.update_hover_snap_point(x, y)
def do_left_click(self, sw, x, y):
if len(self.ptrefs) < 2:
if sw.hover_snap_ptref is not None:
self.ptrefs.append(sw.hover_snap_ptref)
sw.set_hover_snap_point(None)
else:
c = self.get_constraint()
sw.sketch.constraints.append(c)
sw.invalidate()
self.ptrefs = []
def do_right_click(self, sw, x, y):
if len(self.ptrefs) > 0:
self.ptrefs = []
else:
sw.window.set_mode('')
class XDimMode(DimMode):
def get_constraint(self):
if (self.ptrefs[0].shape.getPt(self.ptrefs[0].ptNum)[0] <
self.ptrefs[1].shape.getPt(self.ptrefs[1].ptNum)[0]):
p1, p2 = self.ptrefs
else:
p2, p1 = self.ptrefs
dist = (p2.shape.getPt(p2.ptNum)[0] - p1.shape.getPt(p1.ptNum)[0])
return XDistance(p1.shape, p1.ptNum, p2.shape, p2.ptNum, dist)
class YDimMode(DimMode):
def get_constraint(self):
if (self.ptrefs[0].shape.getPt(self.ptrefs[0].ptNum)[1] <
self.ptrefs[1].shape.getPt(self.ptrefs[1].ptNum)[1]):
p1, p2 = self.ptrefs
else:
p2, p1 = self.ptrefs
dist = (p2.shape.getPt(p2.ptNum)[1] - p1.shape.getPt(p1.ptNum)[1])
return YDistance(p1.shape, p1.ptNum, p2.shape, p2.ptNum, dist)

View File

@ -36,6 +36,8 @@ class Window(object):
addButton('connect', 'Connect')
addButton('horizontal', 'Horiz')
addButton('vertical', 'Vert')
addButton('xdim', 'XDim')
addButton('ydim', 'YDim')
self.status_lbl = gtk.Label()
self.status_lbl.set_alignment(0.0, 0.5)