def release(self, screen, point): # release - kampas uzfiksuojamas ! """turetu grazinti liijos ilgi i statusa""" print "Line end point: ", point upoint = screen.get_canvas().device_to_user(point) if self._curve[-1][0] == upoint and not self._control: self._curve.pop() # pasaliname pasutini taska... if len(self._curve) > 1: Invoker.execute(AddCurveCommand(screen, self._curve)) #screen.add_shape(Shape(4, self._curve, color=16711680)) # screen atomatiskai perpaisys ta plota self._curve = [] self._control = None screen.remove(self._curve_overlay_id) else: # kitu atveju braizom toliau pass
def release(self, screen, point): # release """turetu grazinti liijos ilgi i statusa""" print "Line end point: ", point upoint = screen.get_canvas().device_to_user(point) # jeigu clikas tai baigiam braizyti if self._line[-1] == upoint and not self._control: self._line.pop() if len(self._line) > 1: Invoker.execute(AddLineCommand(screen, self._line)) #screen.add_line(self._line) self._line = [] self._control = None screen.remove(self._line_overlay_id) elif self._control: self._control = None else: # kituy atveju braizom toliau self._line.append(upoint)
def release(self, screen, point): timer.start("release") if self._drag_object_id != None: # object drag end offset = (point.x - self._drag_object_point.x, point.y - self._drag_object_point.y) if offset != (0,0): Invoker.execute(MoveShapeCommand(self, screen, self._drag_object_id, offset)) text = "Object %i was moved." % self._drag_object_id self._drag_object_id = None return text shape_id = self.get_next(screen, point) if shape_id != None: self.show_handlers(screen, ScreenSelectedObject(shape_id)) timer.end("release") return "%i:%i of %i" % (self._object_index, shape_id, len(self._selected_objects)) else: timer.end("release") return "No objects found"
def press(self, screen, point): #print "AddTool press...", widget, event upoint = screen.get_canvas().device_to_user(point) Invoker.execute(AddPointCommand(screen, upoint))
def redo(self, arg): Invoker.redo()
def undo(self, arg): Invoker.undo()
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()