From 4a76120fce45cdacc83818c428c7a15a0967d565 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 6 Sep 2011 16:01:01 -0400 Subject: [PATCH] right-click while not drawing will return to select mode --- SketchWidget.py | 4 ++++ Window.py | 28 ++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/SketchWidget.py b/SketchWidget.py index b424942..4cd78a0 100644 --- a/SketchWidget.py +++ b/SketchWidget.py @@ -414,6 +414,8 @@ class SketchWidget: if self.drawingShape is not None: self.cancel_drawing_shape() self.queue_redraw() + else: + self.window.set_mode('') def do_line_motion(self, x, y): self.update_hover_snap_point(x, y) @@ -470,6 +472,8 @@ class SketchWidget: if self.drawingShape is not None: self.cancel_drawing_shape() self.queue_redraw() + else: + self.window.set_mode('') def do_circle_motion(self, x, y): if self.drawingShape is not None: diff --git a/Window.py b/Window.py index a900e62..6d3d35e 100644 --- a/Window.py +++ b/Window.py @@ -7,7 +7,8 @@ from SketchWidget import SketchWidget class Window: def __init__(self, title): - self.mode_buttons = {} + self.mode_buttons_to_names = {} + self.mode_names_to_buttons = {} self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_size_request(600, 500) @@ -19,23 +20,26 @@ class Window: ss.solve() - self.sw = SketchWidget(ss, self.window) + self.sw = SketchWidget(ss, self) self.toolbar = gtk.Toolbar() self.toolbar.set_style(gtk.TOOLBAR_BOTH) ttb = gtk.ToggleToolButton() - self.mode_buttons[ttb] = 'select' + self.mode_buttons_to_names[ttb] = 'select' + self.mode_names_to_buttons['select'] = ttb ttb.set_label('Select') ttb.connect('toggled', self.mode_toggle_event) ttb.set_active(True) self.toolbar.insert(ttb, -1) ttb = gtk.ToggleToolButton() - self.mode_buttons[ttb] = 'line' + self.mode_buttons_to_names[ttb] = 'line' + self.mode_names_to_buttons['line'] = ttb ttb.set_label('Line') ttb.connect('toggled', self.mode_toggle_event) self.toolbar.insert(ttb, -1) ttb = gtk.ToggleToolButton() - self.mode_buttons[ttb] = 'circle' + self.mode_buttons_to_names[ttb] = 'circle' + self.mode_names_to_buttons['circle'] = ttb ttb.set_label('Circle') ttb.connect('toggled', self.mode_toggle_event) self.toolbar.insert(ttb, -1) @@ -65,14 +69,22 @@ class Window: def mode_toggle_event(self, ttb): if not ttb.get_active(): - for b in self.mode_buttons: + for b in self.mode_buttons_to_names: if b.get_active(): break else: ttb.set_active(True) else: - for b in self.mode_buttons: + for b in self.mode_buttons_to_names: if b != ttb: b.set_active(False) - self.sw.set_mode(self.mode_buttons[ttb]) + self.sw.set_mode(self.mode_buttons_to_names[ttb]) return True + + def set_mode(self, mode): + if mode == '': + mode = 'select' # default mode + if mode in self.mode_names_to_buttons: + self.mode_names_to_buttons[mode].set_active(True) + else: + raise ValueError('Unknown mode')