def canvasPressEvent(self, e): layer = config.iface.activeLayer() if layer is None or not isinstance(layer, QgsVectorLayer): config.iface.messageBar().pushMessage("No layer selected or the current active layer is not a valid vector layer", level = QgsMessageBar.WARNING, duration = 4) return if not layertracking.isTracked(layer): config.iface.messageBar().pushMessage("The current active layer is not being tracked as part of a GeoGig repo", level = QgsMessageBar.WARNING, duration = 4) return trackedlayer = layertracking.getTrackingInfo(layer) point = self.toMapCoordinates(e.pos()) searchRadius = self.canvas().extent().width() * .01; r = QgsRectangle() r.setXMinimum(point.x() - searchRadius); r.setXMaximum(point.x() + searchRadius); r.setYMinimum(point.y() - searchRadius); r.setYMaximum(point.y() + searchRadius); r = self.toLayerCoordinates(layer, r); fit = layer.getFeatures(QgsFeatureRequest().setFilterRect(r).setFlags(QgsFeatureRequest.ExactIntersect)); fid = None try: feature = fit.next() try: fid = unicode(feature["geogigid"]) except: pass except StopIteration, e: return
def addLayer(self): layers = [layer for layer in getVectorLayers() if layer.source().lower().endswith("shp") and not isTracked(layer)] if layers: dlg = ImportDialog(self, repo = self.currentRepo.repo()) dlg.exec_() if dlg.ok: self.versionsTree.updateCurrentBranchItem() self.statusWidget.updateLabelText() else: QtGui.QMessageBox.warning(self, 'Cannot add layer', "No suitable layers can be found in your current QGIS project.\n" "Open the layers in QGIS before trying to add them.", QtGui.QMessageBox.Ok)
def addLayer(self): layers = [layer for layer in getVectorLayers() if layer.source().lower().endswith("shp") and not isTracked(layer)] if layers: dlg = ImportDialog(self, repo = self.currentRepo.repo()) dlg.exec_() if dlg.ok: self.versionsTree.updateCurrentBranchItem() self.statusWidget.updateLabelText() self.updateCurrentRepoDescription() setAsTracked(dlg.layer) else: QtGui.QMessageBox.warning(self, 'Cannot add layer', "No suitable layers can be found in your current QGIS project.\n" "Open the layers in QGIS before trying to add them.", QtGui.QMessageBox.Ok)
def initGui(self): self.setWindowTitle('Add layer to GeoGig repository') verticalLayout = QtGui.QVBoxLayout() if self.repo is None: repos = localRepos() self.repos = {} for user, userrepos in repos.iteritems(): self.repos.update({ title:path for title, path in userrepos.iteritems()}) layerLabel = QtGui.QLabel('Repository') verticalLayout.addWidget(layerLabel) self.repoCombo = QtGui.QComboBox() self.repoCombo.addItems(self.repos.keys()) verticalLayout.addWidget(self.repoCombo) if self.layer is None: layerLabel = QtGui.QLabel('Layer') verticalLayout.addWidget(layerLabel) self.layerCombo = QtGui.QComboBox() layerNames = [layer.name() for layer in getVectorLayers() if layer.source().lower().endswith("shp") and not isTracked(layer)] self.layerCombo.addItems(layerNames) verticalLayout.addWidget(self.layerCombo) messageLabel = QtGui.QLabel('Message to describe this update') verticalLayout.addWidget(messageLabel) self.messageBox = QtGui.QPlainTextEdit() self.messageBox.textChanged.connect(self.messageHasChanged) verticalLayout.addWidget(self.messageBox) self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Cancel) self.importButton = QtGui.QPushButton("Add layer") self.importButton.clicked.connect(self.importClicked) self.importButton.setEnabled(False) self.buttonBox.addButton(self.importButton, QtGui.QDialogButtonBox.ApplyRole) self.buttonBox.rejected.connect(self.cancelPressed) verticalLayout.addWidget(self.buttonBox) self.setLayout(verticalLayout) self.resize(400, 200)
def initGui(self): self.setWindowTitle('Add layer to GeoGig repository') verticalLayout = QtGui.QVBoxLayout() if self.repo is None: repos = localRepos() self.repos = {r.title: r.path for r in repos} layerLabel = QtGui.QLabel('Repository') verticalLayout.addWidget(layerLabel) self.repoCombo = QtGui.QComboBox() self.repoCombo.addItems(self.repos.keys()) verticalLayout.addWidget(self.repoCombo) if self.layer is None: layerLabel = QtGui.QLabel('Layer') verticalLayout.addWidget(layerLabel) self.layerCombo = QtGui.QComboBox() layerNames = [ layer.name() for layer in getVectorLayers() if layer.source().lower().endswith("shp") and not isTracked(layer) ] self.layerCombo.addItems(layerNames) verticalLayout.addWidget(self.layerCombo) messageLabel = QtGui.QLabel('Message to describe this update') verticalLayout.addWidget(messageLabel) self.messageBox = QtGui.QPlainTextEdit() self.messageBox.textChanged.connect(self.messageHasChanged) verticalLayout.addWidget(self.messageBox) self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Cancel) self.importButton = QtGui.QPushButton("Add layer") self.importButton.clicked.connect(self.importClicked) self.importButton.setEnabled(False) self.buttonBox.addButton(self.importButton, QtGui.QDialogButtonBox.ApplyRole) self.buttonBox.rejected.connect(self.cancelPressed) verticalLayout.addWidget(self.buttonBox) self.setLayout(verticalLayout) self.resize(400, 200)
def canvasPressEvent(self, e): layer = config.iface.activeLayer() if layer is None or not isinstance(layer, QgsVectorLayer): config.iface.messageBar().pushMessage( "No layer selected or the current active layer is not a valid vector layer", level=QgsMessageBar.WARNING, duration=4) return if not layertracking.isTracked(layer): config.iface.messageBar().pushMessage( "The current active layer is not being tracked as part of a GeoGig repo", level=QgsMessageBar.WARNING, duration=4) return trackedlayer = layertracking.getTrackingInfo(layer) point = self.toMapCoordinates(e.pos()) searchRadius = self.canvas().extent().width() * .01 r = QgsRectangle() r.setXMinimum(point.x() - searchRadius) r.setXMaximum(point.x() + searchRadius) r.setYMinimum(point.y() - searchRadius) r.setYMaximum(point.y() + searchRadius) r = self.toLayerCoordinates(layer, r) fit = layer.getFeatures(QgsFeatureRequest().setFilterRect(r).setFlags( QgsFeatureRequest.ExactIntersect)) fid = None try: feature = fit.next() try: fid = unicode(feature["geogigid"]) except: pass except StopIteration, e: return