mode buttons change SketchWidget mode
This commit is contained in:
parent
99129c60e1
commit
1564fbbb74
@ -18,6 +18,7 @@ class SketchWidget:
|
||||
self.panning = False
|
||||
self.drawingLine = None
|
||||
self.drawingCircle = None
|
||||
self.mode = ''
|
||||
|
||||
# Configuration parameters
|
||||
self.line_width = 1.5
|
||||
@ -222,29 +223,31 @@ class SketchWidget:
|
||||
|
||||
def button_press_event(self, widget, event, data = None):
|
||||
if event.button == 1:
|
||||
start = self.screenPtToPt((event.x, self.size[1] - event.y))
|
||||
if self.drawingLine is not None:
|
||||
self.sketch.shapes.append(self.drawingLine)
|
||||
if self.drawingLine.getPt(0)[0] == self.drawingLine.getPt(1)[0]:
|
||||
self.sketch.constraints.append(
|
||||
Vertical(self.drawingLine, 0,
|
||||
self.drawingLine, 1))
|
||||
elif (self.drawingLine.getPt(0)[1]
|
||||
== self.drawingLine.getPt(1)[1]):
|
||||
self.sketch.constraints.append(
|
||||
Horizontal(self.drawingLine, 0,
|
||||
self.drawingLine, 1))
|
||||
start = self.drawingLine.getPt(1)
|
||||
self.drawingLine = Line(start[0], start[1], start[0], start[1])
|
||||
self.queue_redraw()
|
||||
if self.mode == 'line':
|
||||
start = self.screenPtToPt((event.x, self.size[1] - event.y))
|
||||
if self.drawingLine is not None:
|
||||
self.sketch.shapes.append(self.drawingLine)
|
||||
if self.drawingLine.getPt(0)[0] == self.drawingLine.getPt(1)[0]:
|
||||
self.sketch.constraints.append(
|
||||
Vertical(self.drawingLine, 0,
|
||||
self.drawingLine, 1))
|
||||
elif (self.drawingLine.getPt(0)[1]
|
||||
== self.drawingLine.getPt(1)[1]):
|
||||
self.sketch.constraints.append(
|
||||
Horizontal(self.drawingLine, 0,
|
||||
self.drawingLine, 1))
|
||||
start = self.drawingLine.getPt(1)
|
||||
self.drawingLine = Line(start[0], start[1], start[0], start[1])
|
||||
self.queue_redraw()
|
||||
elif event.button == 2:
|
||||
self.panning = True
|
||||
self.panning_start = (event.x, self.size[1] - event.y)
|
||||
elif event.button == 3:
|
||||
if self.drawingLine is not None:
|
||||
# cancel line currently being drawn
|
||||
self.drawingLine = None
|
||||
self.queue_redraw()
|
||||
if self.mode == 'line':
|
||||
if self.drawingLine is not None:
|
||||
# cancel line currently being drawn
|
||||
self.drawingLine = None
|
||||
self.queue_redraw()
|
||||
|
||||
def button_release_event(self, widget, event, data = None):
|
||||
if event.button == 2:
|
||||
@ -362,3 +365,11 @@ class SketchWidget:
|
||||
glVertex(pt[0] + self.line_width * 2, pt[1] - l/2)
|
||||
glEnd()
|
||||
glPopAttrib()
|
||||
|
||||
def set_mode(self, mode):
|
||||
if mode != self.mode:
|
||||
if self.mode == 'line':
|
||||
self.drawingLine = None
|
||||
elif self.mode == 'circle':
|
||||
self.drawingCircle = None
|
||||
self.mode = mode
|
||||
|
13
Window.py
13
Window.py
@ -19,38 +19,38 @@ class Window:
|
||||
|
||||
ss.solve()
|
||||
|
||||
sw = SketchWidget(ss, self.window)
|
||||
self.sw = SketchWidget(ss, self.window)
|
||||
|
||||
self.toolbar = gtk.Toolbar()
|
||||
self.toolbar.set_style(gtk.TOOLBAR_BOTH)
|
||||
ttb = gtk.ToggleToolButton()
|
||||
self.mode_buttons[ttb] = 'select'
|
||||
ttb.set_label('Select')
|
||||
ttb.connect('toggled', self.mode_toggle_event)
|
||||
ttb.set_active(True)
|
||||
self.toolbar.insert(ttb, -1)
|
||||
self.mode_buttons[ttb] = 'select'
|
||||
ttb = gtk.ToggleToolButton()
|
||||
self.mode_buttons[ttb] = 'line'
|
||||
ttb.set_label('Line')
|
||||
ttb.connect('toggled', self.mode_toggle_event)
|
||||
self.toolbar.insert(ttb, -1)
|
||||
self.mode_buttons[ttb] = 'line'
|
||||
ttb = gtk.ToggleToolButton()
|
||||
self.mode_buttons[ttb] = 'circle'
|
||||
ttb.set_label('Circle')
|
||||
ttb.connect('toggled', self.mode_toggle_event)
|
||||
self.toolbar.insert(ttb, -1)
|
||||
self.mode_buttons[ttb] = 'circle'
|
||||
|
||||
self.statusbar = gtk.Statusbar()
|
||||
|
||||
vbox = gtk.VBox()
|
||||
vbox.pack_start(self.toolbar, expand = False)
|
||||
vbox.pack_start(sw.widget, expand = True)
|
||||
vbox.pack_start(self.sw.widget, expand = True)
|
||||
vbox.pack_start(self.statusbar, expand = False)
|
||||
|
||||
self.window.add(vbox)
|
||||
self.window.show_all()
|
||||
|
||||
sw.widget.grab_focus()
|
||||
self.sw.widget.grab_focus()
|
||||
|
||||
def main(self):
|
||||
gtk.main()
|
||||
@ -74,4 +74,5 @@ class Window:
|
||||
for b in self.mode_buttons:
|
||||
if b != ttb:
|
||||
b.set_active(False)
|
||||
self.sw.set_mode(self.mode_buttons[ttb])
|
||||
return True
|
||||
|
Loading…
x
Reference in New Issue
Block a user