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