From a24179d38fd88dad7a746a61be0c902ff98669de Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Fri, 30 Sep 2011 14:40:09 -0400 Subject: [PATCH] add Horiz/Vert contraint buttons and drawing modes --- SketchWidget.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ Window.py | 2 ++ 2 files changed, 58 insertions(+) diff --git a/SketchWidget.py b/SketchWidget.py index 9060c58..544d14e 100644 --- a/SketchWidget.py +++ b/SketchWidget.py @@ -26,6 +26,8 @@ class SketchWidget(object): 'line': LineMode(), 'circle': CircleMode(), 'connect': ConnectMode(), + 'horizontal': HorizontalMode(), + 'vertical': VerticalMode(), } self.mode_name = 'select' self.mode = self.modes[self.mode_name] @@ -635,3 +637,57 @@ class ConnectMode(Mode): self.first_ptref = None else: sw.window.set_mode('') + +class HorizontalMode(Mode): + def start_mode(self, sw): + self.first_ptref = None + + def get_cursor(self): + return 'crosshair' + + def do_motion(self, sw, x, y): + sw.update_hover_snap_point(x, y) + + def do_left_click(self, sw, x, y): + if sw.hover_snap_ptref is not None: + if self.first_ptref is None: + self.first_ptref = sw.hover_snap_ptref + else: + c = Horizontal(self.first_ptref.shape, self.first_ptref.ptNum, + sw.hover_snap_ptref.shape, sw.hover_snap_ptref.ptNum) + sw.sketch.constraints.append(c) + self.first_ptref = None + sw.invalidate() + + def do_right_click(self, sw, x, y): + if self.first_ptref is not None: + self.first_ptref = None + else: + sw.window.set_mode('') + +class VerticalMode(Mode): + def start_mode(self, sw): + self.first_ptref = None + + def get_cursor(self): + return 'crosshair' + + def do_motion(self, sw, x, y): + sw.update_hover_snap_point(x, y) + + def do_left_click(self, sw, x, y): + if sw.hover_snap_ptref is not None: + if self.first_ptref is None: + self.first_ptref = sw.hover_snap_ptref + else: + c = Vertical(self.first_ptref.shape, self.first_ptref.ptNum, + sw.hover_snap_ptref.shape, sw.hover_snap_ptref.ptNum) + sw.sketch.constraints.append(c) + self.first_ptref = None + sw.invalidate() + + def do_right_click(self, sw, x, y): + if self.first_ptref is not None: + self.first_ptref = None + else: + sw.window.set_mode('') diff --git a/Window.py b/Window.py index 06b6c1c..2dbdc44 100644 --- a/Window.py +++ b/Window.py @@ -34,6 +34,8 @@ class Window(object): addButton('line', 'Line') addButton('circle', 'Circle') addButton('connect', 'Connect') + addButton('horizontal', 'Horiz') + addButton('vertical', 'Vert') self.status_lbl = gtk.Label() self.status_lbl.set_alignment(0.0, 0.5)