def __init__(self, area): self._load_shape_on_init = None #"shapefiles/lt/keliai.shp" self._print_orientation = 1 # landscape self._print_settings = gtk.PrintSettings() try: self._print_settings.load_file("printer.settings") except: pass self.main_window = gtk.Window() vbox = gtk.VBox(False, 0) self.main_window.add(vbox) self.main_window.set_size_request(area.width, area.height) vbox.show() self.main_window.connect("destroy", self.destroy_event) self.draw_area = gtk.DrawingArea() #self.draw_area.set_size_request(200, 200) hbox = gtk.HBox(False, 1) vbox.pack_start(hbox, True, True, 0) hbox.pack_start(self.draw_area, True, True, 0) hbox.show() self.draw_area.show() self.draw_area.connect("expose-event", self.expose_event) self.draw_area.connect("configure_event", self.configure_event) # Event signals # http://www.pygtk.org/pygtk2tutorial/sec-EventHandling.html self.draw_area.connect("motion_notify_event", self.motion_notify_event) self.draw_area.connect("button_press_event", self.button_press_event) self.draw_area.connect("button_release_event", self.button_release_event) self.main_window.connect("key_press_event", self.key_press_event) #self.main_window.connect("leave_notify_event", self.leave_notify_event) #self.main_window.connect("enter_notify_event", self.leave_notify_event) #self.main_window.set_events(gtk.gdk.LEAVE_NOTIFY_MASK) self.draw_area.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.BUTTON3_MOTION_MASK | gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK #| gtk.gdk.ENTER_NOTIFY_MASK #| gtk.gdk.LEAVE_NOTIFY_MASK #| gtk.gdk.KEY_PRESS_MASK ) vbox_toolbar = gtk.VBox(False, 1) vbox_toolbar.set_size_request(100, 0) hbox.pack_start(vbox_toolbar, False, False, 0) vbox_toolbar.show() zoom_in_button = gtk.Button("ZoomIn") vbox_toolbar.pack_start(zoom_in_button, False, False, 0) zoom_in_button.connect_object("clicked", self.zoom, 1) zoom_in_button.show() zoom_out_button = gtk.Button("ZoomOut") vbox_toolbar.pack_start(zoom_out_button, False, False, 0) zoom_out_button.connect_object("clicked", self.zoom, -1) zoom_out_button.show() center_button = gtk.Button("Center") vbox_toolbar.pack_start(center_button, False, False, 0) center_button.connect_object("clicked", self.center, None) center_button.show() valign0 = gtk.Alignment(0, 1, 0, 0) vbox_toolbar.pack_start(valign0) valign0.show() Invoker.set_button_event("enable", lambda button: button.set_sensitive(1)) Invoker.set_button_event("disable", lambda button: button.set_sensitive(0)) undo_button = gtk.Button("Undo") Invoker.set_button("undo", undo_button, disable=True) vbox_toolbar.pack_start(undo_button, False, False, 0) undo_button.connect_object("clicked", self.undo, None) undo_button.show() redo_button = gtk.Button("Redo") Invoker.set_button("redo", redo_button, disable=True) vbox_toolbar.pack_start(redo_button, False, False, 0) redo_button.connect_object("clicked", self.redo, None) redo_button.show() #Invoker.execute(Command(1)) #Invoker.execute(Command(2)) valign1 = gtk.Alignment(0, 1, 0, 0) vbox_toolbar.pack_start(valign1) valign1.show() detect_point_button = gtk.Button("Detect Point") vbox_toolbar.pack_start(detect_point_button, False, False, 0) detect_point_button.connect_object("clicked", self.set_tool, "detect_point") detect_point_button.show() select_object_button = gtk.Button("Move Shape") vbox_toolbar.pack_start(select_object_button, False, False, 0) select_object_button.connect_object("clicked", self.set_tool, "move_shape") select_object_button.show() valign2 = gtk.Alignment(0, 1, 0, 0) vbox_toolbar.pack_start(valign2) valign2.show() add_point_button = gtk.Button("Add Point") vbox_toolbar.pack_start(add_point_button, False, False, 0) add_point_button.connect_object("clicked", self.set_tool, "add_point") add_point_button.show() add_line_button = gtk.Button("Add Line") vbox_toolbar.pack_start(add_line_button, False, False, 0) add_line_button.connect_object("clicked", self.set_tool, "add_line") add_line_button.show() add_curve_button = gtk.Button("Add Curve") vbox_toolbar.pack_start(add_curve_button, False, False, 0) add_curve_button.connect_object("clicked", self.set_tool, "add_curve") add_curve_button.show() valign_line = gtk.Alignment(0, 1, 0, 0) vbox_toolbar.pack_start(valign_line) valign_line.show() load_file_button = gtk.Button("Load File") vbox_toolbar.pack_start(load_file_button, False, False, 0) #load_file_button.connect_object("clicked", self.load_file, "shapefiles/lt/gyvenvie.shp") #load_file_button.connect_object("clicked", self.load_file, "shapefiles/lt/reljefas.shp") #load_file_button.connect_object("clicked", self.load_file, "shapefiles/lt/keliai.shp") load_file_button.connect_object("clicked", self.load_file, "") #load_file_button.connect_object("clicked", self.load_file, "shapefiles/iceland/cultural_landmark-point.shp") load_file_button.show() clear_button = gtk.Button("Clear") vbox_toolbar.pack_start(clear_button, False, False, 0) clear_button.connect_object("clicked", self.clear, None) clear_button.show() save_button = gtk.Button("Save") vbox_toolbar.pack_start(save_button, False, False, 0) save_button.connect_object("clicked", self.save, "dump") save_button.show() redraw_button = gtk.Button("Redraw") vbox_toolbar.pack_start(redraw_button, False, False, 0) redraw_button.connect_object("clicked", self.redraw, "") redraw_button.show() valign3 = gtk.Alignment(0, 1, 0, 0) vbox_toolbar.pack_start(valign3) valign3.show() print_preview = gtk.Button("Preview A4") vbox_toolbar.pack_start(print_preview, False, False, 0) print_preview.connect_object("clicked", self.print_preview, "A4") print_preview.show() print_button = gtk.Button("Print") vbox_toolbar.pack_start(print_button, False, False, 0) print_button.connect_object("clicked", self.print_dialog, "") print_button.show() self.status_bar = gtk.Statusbar() self._status = "Ready" self.status_bar.push(1, self._status) vbox.pack_start(self.status_bar, False, False, 0) self.status_bar.show() #self.main_window.add(self.draw_area) #self.main_window.set_size_request(area.width, area.height) self.screen = GisGTK2Screen(self.draw_area) self.screen.add(ScreenText("@ FoxyCAD", SceenOverlay.BOTTOM_RIGHT, (-60, -5))) self.screen.add(ScreenCrosshair(SceenOverlay.CENTER)) self.tools = Tools(self.screen) # tools dirbs tik su ekrano koordinatemis self.printer = Printer(self.screen) # viskas kas susije su paruosimu spausdinimui # As durnas, o mano vartotojai dar durnesni, todel viskas turi buti maximaliai aisku ir paprasta #self.canvas.setCoordinateCenter(("WGS", 54.7892, 24.7852)) # ten padesime kyziuka #self.canvas.setUnit("meters", 1) # rodysime liniuotes kastuose metrus # @----10m----->@ su pelia traukiojma ir matom atstuma metrais #self.canvas.add_random_points(10000, gtk.gdk.Rectangle(0, 0, 6800, 4000)) #self.canvas.add_random_points(100000, gtk.gdk.Rectangle(0, 0, 12000, 8000), generator=True) self.main_window.show() #show_all()