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()
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()
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)