Example #1
0
    def initGui(self):
        self.setWindowTitle('Add layer to GeoGig repository')
        verticalLayout = QVBoxLayout()

        if self.repo is None:
            repos = repository.repos
            layerLabel = QLabel('Repository')
            verticalLayout.addWidget(layerLabel)
            self.repoCombo = QComboBox()
            self.repoCombo.addItems(["%s - %s" % (r.group, r.title) for r in repos])
            self.repoCombo.currentIndexChanged.connect(self.updateBranches)
            verticalLayout.addWidget(self.repoCombo)
        if self.layer is None:
            layerLabel = QLabel('Layer')
            verticalLayout.addWidget(layerLabel)
            self.layerCombo = QComboBox()
            layerNames = [layer.name() for layer in getVectorLayers()
                          if layer.source().lower().split("|")[0].split(".")[-1] in["gpkg", "geopkg"]
                          and not isRepoLayer(layer)]
            self.layerCombo.addItems(layerNames)
            verticalLayout.addWidget(self.layerCombo)

        self.branchLabel = QLabel("Branch")
        verticalLayout.addWidget(self.branchLabel)

        self.branchCombo = QComboBox()
        self.branches = self.repo.branches() if self.repo is not None else repos[0].branches()
        self.branchCombo.addItems(self.branches)
        verticalLayout.addWidget(self.branchCombo)

        messageLabel = QLabel('Message to describe this update')
        verticalLayout.addWidget(messageLabel)

        self.messageBox = QPlainTextEdit()
        self.messageBox.textChanged.connect(self.messageHasChanged)
        verticalLayout.addWidget(self.messageBox)

        self.buttonBox = QDialogButtonBox(QDialogButtonBox.Cancel)
        self.importButton = QPushButton("Add layer")
        self.importButton.clicked.connect(self.importClicked)
        self.importButton.setEnabled(False)
        self.buttonBox.addButton(self.importButton, QDialogButtonBox.ApplyRole)
        self.buttonBox.rejected.connect(self.cancelPressed)
        verticalLayout.addWidget(self.buttonBox)

        self.setLayout(verticalLayout)

        self.resize(600, 300)

        self.messageBox.setFocus()
 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)
Example #4
0
    def deleteCurrentElement(self):
        if len(self.repoTree.selectedItems()) == 0:
            return

        item = self.repoTree.selectedItems()[0]
        if isinstance(item, RepoItem):
            ret = QMessageBox.warning(
                config.iface.mainWindow(), "Remove repository",
                "Are you sure you want to remove this repository and all the data in it?",
                QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
            if ret == QMessageBox.No:
                return
            tracked = getTrackedPathsForRepo(item.repo)
            item.repo.delete()
            removeRepo(item.repo)
            removeTrackedForRepo(item.repo)
            layers = getVectorLayers()
            for layer in layers:
                if formatSource(layer) in tracked:
                    setAsNonRepoLayer(layer)
            parent = item.parent()
            parent.removeChild(item)
            self.updateCurrentRepo(None)
        elif isinstance(item, GroupItem):
            self._removeRepoEndpoint(item)
        elif isinstance(item, BranchItem):
            ret = QMessageBox.question(
                self, 'Delete branch',
                'Are you sure you want to delete this branch?',
                QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
            if ret == QMessageBox.No:
                return
            item.repo.deletebranch(item.branch)
            repoWatcher.repoChanged.emit(item.repo)

        elif isinstance(item, LayerItem):
            ret = QMessageBox.question(
                self, 'Delete layer',
                'Are you sure you want to delete this layer from the selected branch?',
                QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
            if ret == QMessageBox.No:
                return
            execute(lambda: self._removeLayer(item))
Example #5
0
 def addLayer(self):
     layers = [
         layer for layer in getVectorLayers()
         if layer.source().lower().split("|")[0].split(".")[-1] in
         ["gpkg", "geopkg"] and not isRepoLayer(layer)
     ]
     if layers:
         dlg = ImportDialog(self, repo=self.currentRepo)
         dlg.exec_()
         if dlg.ok:
             #self.versionsTree.updateCurrentBranchItem()
             setAsRepoLayer(dlg.layer)
             repoWatcher.repoChanged.emit(self.currentRepo)
     else:
         QMessageBox.warning(
             self, 'Cannot add layer',
             "No suitable layers can be found in your current QGIS project.\n"
             "Only Geopackage layers that do not already belong to a repository can be added.",
             QMessageBox.Ok)
 def deleteRepo(self, item):
     ret = QtGui.QMessageBox.warning(config.iface.mainWindow(), "Delete repository",
                     "Are you sure you want to delete this repository?",
                     QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
                     QtGui.QMessageBox.Yes);
     if ret == QtGui.QMessageBox.No:
         return
     self.lastSelectedRepoItem.parent().removeChild(self.lastSelectedRepoItem)
     self.updateCurrentRepo(None, None)
     tracked = getTrackedPathsForRepo(item.repo.repo())
     layers = getVectorLayers()
     for layer in layers:
         if layer.source() in tracked:
             setAsUntracked(layer)
     removeTrackedForRepo(item.repo.path)
     killGateway()
     try:
         shutil.rmtree(item.repo.repo().url)
     except:
         ret = QtGui.QMessageBox.warning(config.iface.mainWindow(), "Delete repository",
                 "Local copy of repository could not be removed.\n"
                 "It will have to be removed manually at the following path:\n"
                 + item.repo.repo().url, QtGui.QMessageBox.Ok);