Ejemplo n.º 1
0
    def initUI(self):
        self.setWindowTitle('GrMap')
        self.setGeometry(10, 30, 800, 700)
        self.grid = QGridLayout(self)

        # Views ************************************
        self.mapview = QGraphicsView(self)
        self.mapview.setStyleSheet("border: 0px; background: black")
        self.grid.addWidget(self.mapview, 1, 0, 10, 10)

        self.ocanvas = ObjectCanvas(self)
        self.oview = QGraphicsView(self.ocanvas, self)
        self.oview.setStyleSheet("border: 0px; background: transparent")
        self.grid.addWidget(self.oview, 1, 0, 10, 10)

        self.gcanvas = GridCanvas(self)
        self.view = QGraphicsView(self.gcanvas, self)
        self.view.setStyleSheet("border: 0px; background: transparent")
        self.view.setMouseTracking(True)
        self.view.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
        self.grid.addWidget(self.view, 1, 0, 10, 10)

        # gcanvas signal connecting here
        self.gcanvas.grid_done.connect(self.ocanvas.update_view)
        self.gcanvas.mouse_move.connect(self.refresh_coords)
        self.gcanvas.point.connect(self.ocanvas.add_point)

        if WMS_ENABLED:
            self.map_canvas = MapCanvas(self)
            self.mapview.setScene(self.map_canvas)
            self.map_canvas.img_loading.connect(self.busy)
            self.map_canvas.img_loaded.connect(self.ready)
            self.gcanvas.grid_done.connect(self.map_canvas.update_view)

        # Toolbar ************************************
        btn_group = QButtonGroup(self)
        pan_btn = QPushButton('Pan', self)
        pan_btn.setCheckable(True)
        zoom_btn = QPushButton('Zoom', self)
        zoom_btn.setCheckable(True)
        zoom_btn.setChecked(True)
        zoom_btn.clicked.connect(lambda: self.set_command('zoom'))
        point_btn = QPushButton('Σημείο', self)
        point_btn.setCheckable(True)
        point_btn.clicked.connect(lambda: self.set_command('point'))

        btn_group.addButton(pan_btn)
        btn_group.addButton(zoom_btn)
        btn_group.addButton(point_btn)

        freeze_btn = QPushButton('Πάγωμα χάρτη', self)
        freeze_btn.setCheckable(True)
        freeze_btn.clicked.connect(self.freeze_map)

        correct_map_btn = QPushButton('Διόρθωση χάρτη', self)
        correct_map_btn.clicked.connect(self.correct_map)

        import_points_btn = QPushButton('Εισαγωγή σημείων', self)
        import_points_btn.clicked.connect(self.show_import_points_dialog)

        hatt_grid_btn = QPushButton('Διανομή Κ.Φ.Χ 1:50000', self)
        hatt_grid_btn.setCheckable(True)
        hatt_grid_btn.clicked.connect(self.ocanvas.hatt_grid)

        self.grid.addWidget(pan_btn, 0, 0, 1, 1)
        self.grid.addWidget(zoom_btn, 0, 1, 1, 1)
        self.grid.addWidget(point_btn, 0, 2, 1, 1)
        self.grid.addWidget(freeze_btn, 0, 3, 1, 1)
        self.grid.addWidget(correct_map_btn, 0, 4, 1, 1)
        self.grid.addWidget(import_points_btn, 0, 5, 1, 1)
        self.grid.addWidget(hatt_grid_btn, 0, 6, 1, 1)

        # Footer ************************************
        self.spinner = QtGui.QMovie('spinner.gif', QtCore.QByteArray(), self)
        self.spinner.setCacheMode(QtGui.QMovie.CacheAll)
        self.spinner.setSpeed(100)
        self.spinlbl = QLabel(self)
        self.spinlbl.setMovie(self.spinner)
        self.spinlbl.hide()

        self.lbl = QLabel(self)
        self.lbl.setText('0.000, 0.000')

        tiffbutton = QPushButton('Αποθήκευση dxf', self)
        tiffbutton.clicked.connect(self.export_tiff)

        self.grid.addWidget(self.spinlbl, 11, 0, 1, 2)
        self.grid.addWidget(self.lbl, 11, 2, 1, 4)
        self.grid.addWidget(tiffbutton, 11, 6, 1, 4)

        self.show()
Ejemplo n.º 2
0
		help="color for the path")
	args = p.parse_args()

	in_file = sys.stdin

	if args.input != '-':
		in_file = open(args.input, 'r')

	# Raum aus Datei auslesen
	room = Room(in_file)

	if in_file != sys.stdin:
		in_file.close()

	# Zeichenoberfläche vorbereiten
	grid_canvas = GridCanvas("Turn90", room.dimension, args.scale)

	# Raum einzeichnen
	room.paint(grid_canvas, color=args.wall_color)

	# Weg berechnen und einzeichnen
	path = solve(room)
	path.paint(grid_canvas, color=args.path_color)

	# Ausgabe
	if args.output:
		grid_canvas.dump(args.output)
	if not args.no_interactive:
		grid_canvas.mainloop()

Ejemplo n.º 3
0
class Map(QWidget):
    def __init__(self):
        super(Map, self).__init__()
        self.initial = True
        self.frozen_map = False
        self.points = []
        self.command = 'zoom'
        self.initUI()

    def initUI(self):
        self.setWindowTitle('GrMap')
        self.setGeometry(10, 30, 800, 700)
        self.grid = QGridLayout(self)

        # Views ************************************
        self.mapview = QGraphicsView(self)
        self.mapview.setStyleSheet("border: 0px; background: black")
        self.grid.addWidget(self.mapview, 1, 0, 10, 10)

        self.ocanvas = ObjectCanvas(self)
        self.oview = QGraphicsView(self.ocanvas, self)
        self.oview.setStyleSheet("border: 0px; background: transparent")
        self.grid.addWidget(self.oview, 1, 0, 10, 10)

        self.gcanvas = GridCanvas(self)
        self.view = QGraphicsView(self.gcanvas, self)
        self.view.setStyleSheet("border: 0px; background: transparent")
        self.view.setMouseTracking(True)
        self.view.setCursor(QtGui.QCursor(QtCore.Qt.CrossCursor))
        self.grid.addWidget(self.view, 1, 0, 10, 10)

        # gcanvas signal connecting here
        self.gcanvas.grid_done.connect(self.ocanvas.update_view)
        self.gcanvas.mouse_move.connect(self.refresh_coords)
        self.gcanvas.point.connect(self.ocanvas.add_point)

        if WMS_ENABLED:
            self.map_canvas = MapCanvas(self)
            self.mapview.setScene(self.map_canvas)
            self.map_canvas.img_loading.connect(self.busy)
            self.map_canvas.img_loaded.connect(self.ready)
            self.gcanvas.grid_done.connect(self.map_canvas.update_view)

        # Toolbar ************************************
        btn_group = QButtonGroup(self)
        pan_btn = QPushButton('Pan', self)
        pan_btn.setCheckable(True)
        zoom_btn = QPushButton('Zoom', self)
        zoom_btn.setCheckable(True)
        zoom_btn.setChecked(True)
        zoom_btn.clicked.connect(lambda: self.set_command('zoom'))
        point_btn = QPushButton('Σημείο', self)
        point_btn.setCheckable(True)
        point_btn.clicked.connect(lambda: self.set_command('point'))

        btn_group.addButton(pan_btn)
        btn_group.addButton(zoom_btn)
        btn_group.addButton(point_btn)

        freeze_btn = QPushButton('Πάγωμα χάρτη', self)
        freeze_btn.setCheckable(True)
        freeze_btn.clicked.connect(self.freeze_map)

        correct_map_btn = QPushButton('Διόρθωση χάρτη', self)
        correct_map_btn.clicked.connect(self.correct_map)

        import_points_btn = QPushButton('Εισαγωγή σημείων', self)
        import_points_btn.clicked.connect(self.show_import_points_dialog)

        hatt_grid_btn = QPushButton('Διανομή Κ.Φ.Χ 1:50000', self)
        hatt_grid_btn.setCheckable(True)
        hatt_grid_btn.clicked.connect(self.ocanvas.hatt_grid)

        self.grid.addWidget(pan_btn, 0, 0, 1, 1)
        self.grid.addWidget(zoom_btn, 0, 1, 1, 1)
        self.grid.addWidget(point_btn, 0, 2, 1, 1)
        self.grid.addWidget(freeze_btn, 0, 3, 1, 1)
        self.grid.addWidget(correct_map_btn, 0, 4, 1, 1)
        self.grid.addWidget(import_points_btn, 0, 5, 1, 1)
        self.grid.addWidget(hatt_grid_btn, 0, 6, 1, 1)

        # Footer ************************************
        self.spinner = QtGui.QMovie('spinner.gif', QtCore.QByteArray(), self)
        self.spinner.setCacheMode(QtGui.QMovie.CacheAll)
        self.spinner.setSpeed(100)
        self.spinlbl = QLabel(self)
        self.spinlbl.setMovie(self.spinner)
        self.spinlbl.hide()

        self.lbl = QLabel(self)
        self.lbl.setText('0.000, 0.000')

        tiffbutton = QPushButton('Αποθήκευση dxf', self)
        tiffbutton.clicked.connect(self.export_tiff)

        self.grid.addWidget(self.spinlbl, 11, 0, 1, 2)
        self.grid.addWidget(self.lbl, 11, 2, 1, 4)
        self.grid.addWidget(tiffbutton, 11, 6, 1, 4)

        self.show()

    def freeze_map(self, pressed):
        # pressed is boolean
        self.frozen_map = pressed
        if not pressed:
            vw, vh = self.view.size().width(), self.view.size().height()
            self.gcanvas.redraw_canvas(vw, vh)

    def correct_map(self):
        pass

    def set_command(self, command):
        self.command = command

    def show_import_points_dialog(self):
        import_points_dialog = ImportPointsDialog(self)
        import_points_dialog.show()
        import_points_dialog.importing_points.connect(self.ocanvas.import_points)

    def resizeEvent(self, event):
        self.gcanvas.clear()
        vw, vh = self.view.size().width(), self.view.size().height()
        self.view.setSceneRect(QtCore.QRectF(0, 0, vw, vh))
        self.oview.setSceneRect(QtCore.QRectF(0, 0, vw, vh))
        self.mapview.setSceneRect(QtCore.QRectF(0, 0, vw, vh))
        if self.initial:
            self.gcanvas.calc_initial(vw, vh)
            self.initial = False
        self.gcanvas.redraw_canvas(vw, vh)

    def refresh_coords(self, coords):
        self.lbl.setText(coords)

    def busy(self):
        self.spinlbl.show()
        self.spinner.start()

    def ready(self):
        self.spinner.stop()
        self.spinlbl.hide()

    def keyPressEvent(self, event):
        if event.key() == QtCore.Qt.Key_C:
            # Copy point coords to clipboard
            coords = self.lbl.text()
            clipboard = QApplication.clipboard()
            clipboard.setText(coords)
            print('Coordinates copied to clipboard: ', coords)

    def export_tiff(self):
        file_chooser = QFileDialog.getSaveFileName(self, "Αποθήκευση dxf",
                            QtCore.QDir.homePath(),
                            "Αρχεία dxf (*.dxf)")
        filename = '.'.join(file_chooser[0].split('.')[:-1])
        self.map_canvas.pixmap['pixmap'].save(filename + '.tiff')
        with open(filename + '.tfw','w') as f:
            f.write('%s\n%s\n%s\n%s\n%s\n%s' % (
                str(self.map_canvas.wfac),
                '0',
                '0',
                str(-self.map_canvas.hfac),
                str(self.map_canvas.llx),
                str(self.map_canvas.lly + self.map_canvas.h)
            ))
        idxf = open('sample.dxf', 'r')
        odxf = open(filename + '.dxf', 'w')
        for line in idxf:
            buf = line
            if buf == '**GRMAP_EASTING**\n' or buf == '**EXT_LLX**\n':
                buf = str(self.map_canvas.llx) + '\n'
            elif buf == '**GRMAP_NORTHING**\n' or buf == '**EXT_LLY**\n':
                buf = str(self.map_canvas.lly) + '\n'
            elif buf == '**EXT_URX**\n':
                buf = str(self.map_canvas.llx + self.map_canvas.w) + '\n'
            elif buf == '**EXT_URY**\n':
                buf = str(self.map_canvas.lly + self.map_canvas.h) + '\n'
            elif buf == '**VIEW_CENTERX**\n':
                buf = str(self.map_canvas.llx + self.map_canvas.w / 2) + '\n'
            elif buf == '**VIEW_CENTERY**\n':
                buf = str(self.map_canvas.lly + self.map_canvas.h / 2) + '\n'
            elif buf == '**GRMAP_FAC**\n':
                buf = str(self.map_canvas.wfac) + '\n'
            elif buf == '**GRMAP_IMG_WIDTH**\n':
                buf = str(float(self.view.size().width())) + '\n'
            elif buf == '**GRMAP_IMG_HEIGHT**\n':
                buf = str(float(self.view.size().height())) + '\n'
            elif buf == '**GRMAP_IMG_WIDTH_HALF**\n':
                buf = str(float(self.view.size().width()) - 0.5) + '\n'
            elif buf == '**GRMAP_IMG_HEIGHT_HALF**\n':
                buf = str(float(self.view.size().height()) - 0.5) + '\n'
            elif buf == '**GRMAP_XREF_NAME**\n':
                buf = filename + '\n'
            elif buf == '**GRMAP_IMG_PATH**\n':
                buf = filename + '.tiff' + '\n'
            elif buf == '**GRMAP_IMG_FAC**\n':
                buf = '0.5' + '\n'
            else:
                buf = line
            odxf.write(buf)
        idxf.close()
        odxf.close()
Ejemplo n.º 4
0
                   default='green',
                   help="color for the path")
    args = p.parse_args()

    in_file = sys.stdin

    if args.input != '-':
        in_file = open(args.input, 'r')

    # Raum aus Datei auslesen
    room = Room(in_file)

    if in_file != sys.stdin:
        in_file.close()

    # Zeichenoberfläche vorbereiten
    grid_canvas = GridCanvas("Turn90", room.dimension, args.scale)

    # Raum einzeichnen
    room.paint(grid_canvas, color=args.wall_color)

    # Weg berechnen und einzeichnen
    path = solve(room)
    path.paint(grid_canvas, color=args.path_color)

    # Ausgabe
    if args.output:
        grid_canvas.dump(args.output)
    if not args.no_interactive:
        grid_canvas.mainloop()