import gtk from Sketch import Sketch from SketchWidget import SketchWidget from shapes import * from constraints import * class Window: def __init__(self, title): 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) s = Sketch() l1 = Line(0, 1, 1, 1) s.shapes.append(l1) l2 = Line(1, 1, 1, 0) s.shapes.append(l2) l3 = Line(1, 0, 0, 0) s.shapes.append(l3) l4 = Line(0, 0, 0, 1) s.shapes.append(l4) c = Circle(0, 0, 0.3) s.shapes.append(c) l5 = Line(0, 0, 0, 0) s.shapes.append(l5) s.constraints.append(Horizontal(l1, 0, l1, 1)) s.constraints.append(Connect(l1, 1, l2, 0)) s.constraints.append(Vertical(l2, 0, l2, 1)) s.constraints.append(Connect(l2, 1, l3, 0)) s.constraints.append(Horizontal(l3, 0, l3, 1)) s.constraints.append(Connect(l3, 1, l4, 0)) s.constraints.append(Vertical(l4, 0, l4, 1)) s.constraints.append(Connect(l4, 1, l1, 0)) s.constraints.append(Connect(c, 1, l2, 0)) s.constraints.append(Horizontal(c, 4, l3, 1)) # s.constraints.append(Connect(c, 4, l3, 1)) s.constraints.append(XDistance(l1, 0, l1, 1, 1.2)) s.constraints.append(YDistance(l4, 0, l4, 1, 0.8)) s.constraints.append(XFix(l1, 0, 0)) s.constraints.append(YFix(l1, 0, 0)) s.constraints.append(Connect(l5, 0, l2, 1)) s.constraints.append(Connect(l5, 2, l1, 0)) s.solve() sw = SketchWidget(s, self.window) self.statusbar = gtk.Statusbar() vbox = gtk.VBox() 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