Esempio n. 1
0
 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
Esempio n. 2
0
    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)
Esempio n. 3
0
    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"
Esempio n. 4
0
 def press(self, screen, point):
     #print "AddTool press...", widget, event
     upoint = screen.get_canvas().device_to_user(point)
     Invoker.execute(AddPointCommand(screen, upoint))
Esempio n. 5
0
File: ui.py Progetto: vosvos/foxycad
 def redo(self, arg):
     Invoker.redo()
Esempio n. 6
0
File: ui.py Progetto: vosvos/foxycad
 def undo(self, arg):
     Invoker.undo()
Esempio n. 7
0
File: ui.py Progetto: vosvos/foxycad
    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()