Exemplo n.º 1
0
    def newRootPath(self):

        try:
            self.ui.treeWidget.clear()
            self.ui.listAvailablePic.clear()
            scene = QtWidgets.QGraphicsScene()
            self.ui.graphicsView.setScene(scene)
            self.ui.lineEditXCoordQGIS.setText("")
            self.ui.lineEditYCoordQGIS.setText("")
            self.ui.lineEditXCoordStand.setText("")
            self.ui.lineEditYCoordStand.setText("")
            self.ui.labelCurrentPic.setText("")
            self.ui.lineEditAltitude.setText("")
            self.ui.lineEditHeading.setText("")
            self.ui.progressBar.setValue(0)
            self.listObjDirectory = []
            self.listObjPicture = []
            self.ui.treeWidget.model().dataChanged.disconnect(
                self.checkBoxChange)
        except:
            pass

        genWalk = walk(self.ui.lineEditRootPath.text())
        rootDone = False
        for item in genWalk:
            dirPath = item[0].replace("\\", "/")
            dirName = dirPath.split("/")[-1]

            if rootDone == False:
                treeItem = QtWidgets.QTreeWidgetItem(self.ui.treeWidget,
                                                     [dirName])
                treeItem.setCheckState(0, QtCore.Qt.Checked)
                self.rootName = dirName
                rootDone = True
            else:
                dirParentName = dirPath.split("/")[-2]
                treeParentItem = self.ui.treeWidget.findItems(
                    dirParentName,
                    QtCore.Qt.MatchExactly | QtCore.Qt.MatchRecursive)
                if treeParentItem:
                    if len(treeParentItem) == 1:
                        treeItem = QtWidgets.QTreeWidgetItem(
                            treeParentItem[0], [dirName])
                        treeItem.setCheckState(0, QtCore.Qt.Checked)
                    else:
                        for parent in treeParentItem:
                            for obj in self.listObjDirectory:
                                if obj.idInTree == id(parent):
                                    removePart = "/" + dirName
                                    nb2Remove = -len(removePart)
                                    parentPath = dirPath[:nb2Remove]
                                    if obj.path == parentPath:
                                        treeItem = QtWidgets.QTreeWidgetItem(
                                            parent, [dirName])
                                        treeItem.setCheckState(
                                            0, QtCore.Qt.Checked)
                                        break
                            else:
                                continue
                            break

            objDir = objDirectory(path=dirPath,
                                  nameInTree=dirName,
                                  idInTree=id(treeItem),
                                  isCheck=2)
            self.listObjDirectory.append(objDir)

        self.importNewRoot()
        self.ui.treeWidget.expandAll()
        self.ui.pushButtonGPX.setEnabled(True)
        for i in range(self.ui.treeWidget.columnCount()):
            self.ui.treeWidget.resizeColumnToContents(i)
        self.ui.treeWidget.model().dataChanged.connect(self.checkBoxChange)
        self.addCanvasMarker()
Exemplo n.º 2
0
    def newPictureSelection(self, item):

        if self.currentObjPicture.nameInList in self.currentMarkers.keys():
            marker = self.currentMarkers[self.currentObjPicture.nameInList]
            marker.setColor(QtGui.QColor(255, 0, 0))
            marker.setIconSize(10)
            marker.setIconType(QgsVertexMarker.ICON_CROSS)
            marker.setPenWidth(10)

        if self.crsQGIS != QgsProject.instance().crs().authid():

            self.crsQGIS = QgsProject.instance().crs().authid()

            crsU = QgsCoordinateReferenceSystem(self.crsUniversal)
            crsQ = QgsCoordinateReferenceSystem(self.crsQGIS)

            self.coordQ2U = QgsCoordinateTransform(crsQ, crsU,
                                                   QgsProject.instance())
            self.coordU2Q = QgsCoordinateTransform(crsU, crsQ,
                                                   QgsProject.instance())

            self.ui.labelEPSG.setText(self.crsQGIS)

        for obj in self.listObjPicture:
            if obj.idInList == id(item):
                objPic = obj
                break
        else:
            return
        self.currentObjPicture = objPic
        self.ui.labelCurrentPic.setText(objPic.path)
        picture = Image.open(objPic.path)

        if self.currentObjPicture.nameInList in self.currentMarkers.keys():
            marker = self.currentMarkers[self.currentObjPicture.nameInList]
            marker.setColor(QtGui.QColor(0, 0, 255))
            marker.setIconSize(14)
            marker.setIconType(QgsVertexMarker.ICON_CROSS)
            marker.setPenWidth(14)

        self.canvas.refresh()

        #Orientation entre 1 et 8, 1 normal, 2,4,5,7 ont un effet mirroir, pas concidérer sauf si j'ai la demande
        if objPic.orientation == 8:
            newpicture = picture.rotate(90, expand=1)
            picture.close()
            picture = newpicture

        elif objPic.orientation == 3:
            newpicture = picture.rotate(180, expand=0)
            picture.close()
            picture = newpicture

        elif objPic.orientation == 6:
            newpicture = picture.rotate(270, expand=1)
            picture.close()
            picture = newpicture

        if objPic.isCoordonate:
            localCoord = self.coordU2Q.transform(
                QgsPointXY(objPic.xStandCoord, objPic.yStandCoord))
            xlocalstr = str(round(localCoord[0], 1))
            ylocalstr = str(round(localCoord[1], 1))
            rect = QgsRectangle(
                QgsPointXY(localCoord[0] + 75, localCoord[1] + 75),
                QgsPointXY(localCoord[0] - 75, localCoord[1] - 75))
            self.canvas.setExtent(rect)
            self.ui.lineEditXCoordQGIS.setText(xlocalstr)
            self.ui.lineEditYCoordQGIS.setText(ylocalstr)

            self.changeDegreeType(objPic)

        else:
            self.ui.lineEditXCoordStand.setText("")
            self.ui.lineEditYCoordStand.setText("")
            self.ui.lineEditXCoordQGIS.setText("")
            self.ui.lineEditYCoordQGIS.setText("")

        if objPic.isAltitude:
            self.ui.lineEditAltitude.setText(str(round(objPic.altitude, 1)))
        else:
            self.ui.lineEditAltitude.setText("")

        if objPic.isHeading:
            strH = str(round(objPic.heading, 1)) + "°"
            self.ui.lineEditHeading.setText(strH)
        else:
            self.ui.lineEditHeading.setText("")

        pictureArray = np.array(picture)
        qPicture = array2qimage(pictureArray)
        scene = QtWidgets.QGraphicsScene()
        scene.addPixmap(QtGui.QPixmap.fromImage(qPicture))
        self.ui.graphicsView.setScene(scene)
        rect = QtCore.QRectF(0, 0, picture.size[0], picture.size[1])
        self.ui.graphicsView.fitInView(rect, QtCore.Qt.KeepAspectRatio)

        picture.close()
Exemplo n.º 3
0
 def _setupScene(self):
     """Set up a new scene"""
     self.scene = QtWidgets.QGraphicsScene()
     self.view = self.findChild(QtWidgets.QGraphicsView, "graphicsView")
     self.view.setScene(self.scene)
     self.view.viewport().installEventFilter(self)