73 lines
2.3 KiB
Python
73 lines
2.3 KiB
Python
|
|
import gtk
|
|
|
|
from Sketch import Sketch
|
|
from SampleSketch import SampleSketch
|
|
from SketchWidget import SketchWidget
|
|
|
|
class Window:
|
|
def __init__(self, title):
|
|
self.buttons = {}
|
|
|
|
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
|
self.window.set_size_request(600, 500)
|
|
self.window.set_title(title)
|
|
self.window.connect("destroy", self.destroy_event)
|
|
self.window.connect("key-press-event", self.key_press_event)
|
|
|
|
ss = SampleSketch()
|
|
|
|
ss.solve()
|
|
|
|
sw = SketchWidget(ss, self.window)
|
|
|
|
self.toolbar = gtk.Toolbar()
|
|
self.toolbar.set_style(gtk.TOOLBAR_BOTH)
|
|
self.buttons['select'] = gtk.ToggleToolButton()
|
|
self.buttons['select'].set_label('Select')
|
|
self.buttons['select'].connect('toggled', self.toggled_event)
|
|
self.buttons['select'].set_active(True)
|
|
self.toolbar.insert(self.buttons['select'], -1)
|
|
self.buttons['line'] = gtk.ToggleToolButton()
|
|
self.buttons['line'].set_label('Line')
|
|
self.buttons['line'].connect('toggled', self.toggled_event)
|
|
self.toolbar.insert(self.buttons['line'], -1)
|
|
self.buttons['circle'] = gtk.ToggleToolButton()
|
|
self.buttons['circle'].set_label('Circle')
|
|
self.buttons['circle'].connect('toggled', self.toggled_event)
|
|
self.toolbar.insert(self.buttons['circle'], -1)
|
|
|
|
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.statusbar, expand = False)
|
|
|
|
self.window.add(vbox)
|
|
self.window.show_all()
|
|
|
|
def main(self):
|
|
gtk.main()
|
|
|
|
def destroy_event(self, widget, data=None):
|
|
gtk.main_quit()
|
|
|
|
def key_press_event(self, widget, event, data=None):
|
|
if event.keyval == gtk.gdk.keyval_from_name("Escape"):
|
|
gtk.main_quit()
|
|
return False
|
|
|
|
def toggled_event(self, ttb):
|
|
if not ttb.get_active():
|
|
for b in self.buttons:
|
|
if self.buttons[b].get_active():
|
|
break
|
|
else:
|
|
ttb.set_active(True)
|
|
else:
|
|
for b in self.buttons:
|
|
if self.buttons[b] != ttb:
|
|
self.buttons[b].set_active(False)
|
|
return True
|