コード例 #1
0
    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
コード例 #2
0
 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)
コード例 #3
0
 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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    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