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