class CommitDialog(QDialog): def __init__(self, repo, layername, _message="", parent=None): super(CommitDialog, self).__init__(parent) self.repo = repo self.branch = None self.layername = layername self._message = _message or suggestedMessage self.message = None self.initGui() def initGui(self): self.setObjectName("CommitDialog") self.resize(600, 250) self.setWindowTitle("Syncronize layer to repository branch") self.verticalLayout = QVBoxLayout() self.verticalLayout.setSpacing(2) self.verticalLayout.setMargin(5) self.branchLabel = QLabel("Branch") self.verticalLayout.addWidget(self.branchLabel) self.branchCombo = QComboBox() self.branches = [] branches = self.repo.branches() for branch in branches: trees = self.repo.trees(branch) if self.layername in trees: self.branches.append(branch) self.branchCombo.addItems(self.branches) try: idx = self.branches.index("master") except: idx = 0 self.branchCombo.setCurrentIndex(idx) self.verticalLayout.addWidget(self.branchCombo) self.msgLabel = QLabel("Message to describe this update") self.verticalLayout.addWidget(self.msgLabel) self.text = QPlainTextEdit() self.text.setPlainText(self._message) self.verticalLayout.addWidget(self.text) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok) self.verticalLayout.addWidget(self.buttonBox) self.buttonBox.button(QDialogButtonBox.Ok).setEnabled( bool(self.branches)) self.setLayout(self.verticalLayout) self.buttonBox.accepted.connect(self.okPressed) self.text.setFocus() def okPressed(self): self.branch = self.branchCombo.currentText() self.message = self.text.toPlainText() or datetime.now().strftime( "%Y-%m-%d %H_%M_%S") self.close()
class ImportDialog(QDialog): def __init__(self, parent, repo = None, layer = None): super(ImportDialog, self).__init__(parent) self.repo = repo self.layer = layer self.ok = False self.initGui() 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 updateBranches(self): self.branchCombo.clear() repo = repository.repos[self.repoCombo.currentIndex()] self.branches = repo.branches() self.branchCombo.addItems(self.branches) def messageHasChanged(self): self.importButton.setEnabled(self.messageBox.toPlainText() != "") def importClicked(self): if self.repo is None: self.repo = repository.repos[self.repoCombo.currentIndex()] if self.layer is None: text = self.layerCombo.currentText() self.layer = resolveLayer(text) user, email = config.getUserInfo() if user is None: self.close() return message = self.messageBox.toPlainText() branch = self.branchCombo.currentText() try: self.repo.importgeopkg(self.layer, branch, message, user, email, False) filename, layername = namesFromLayer(self.layer) self.repo.checkoutlayer(filename, layername, ref = branch) self.layer.reload() self.layer.triggerRepaint() except GeoGigException as e: iface.messageBar().pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=5) self.close() return addTrackedLayer(self.layer, self.repo.url) self.ok = True iface.messageBar().pushMessage("Layer was correctly added to repository", level=QgsMessageBar.INFO, duration=5) self.close() def cancelPressed(self): self.close()
class ImportDialog(QDialog): def __init__(self, parent, repo = None, layer = None): super(ImportDialog, self).__init__(parent) self.setObjectName("ImportDialog") self.repo = repo self.layer = layer self.ok = False self.initGui() def initGui(self): self.setWindowTitle('Import to GeoGig') 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 vectorLayers() 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() verticalLayout.addWidget(self.messageBox) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Cancel) self.importButton = QPushButton("Add layer") self.importButton.clicked.connect(self.importClicked) 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 updateBranches(self): self.branchCombo.clear() repo = repository.repos[self.repoCombo.currentIndex()] self.branches = repo.branches() self.branchCombo.addItems(self.branches) def importClicked(self): ret = QMessageBox.warning(config.iface.mainWindow(), 'Import warning', "Importing a layer will modify the original layer and might cause data loss.\n" "Make sure you have a backup copy of your layer before importing.\n" "Do you want to import the selected layer?", QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.No: return if self.repo is None: self.repo = repository.repos[self.repoCombo.currentIndex()] if self.layer is None: text = self.layerCombo.currentText() self.layer = layerFromName(text) user, email = config.getUserInfo() if user is None: self.close() return message = self.messageBox.toPlainText() or datetime.now().strftime("%Y-%m-%d %H_%M_%S") branch = self.branchCombo.currentText() try: self.repo.importgeopkg(self.layer, branch, message, user, email, False) filename, layername = namesFromLayer(self.layer) self.repo.checkoutlayer(filename, layername, ref = branch) self.layer.reload() self.layer.triggerRepaint() except GeoGigException as e: iface.messageBar().pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=5) self.close() return addTrackedLayer(self.layer, self.repo.url) self.ok = True iface.messageBar().pushMessage("Layer was correctly added to repository", level=QgsMessageBar.INFO, duration=5) self.close() def cancelPressed(self): self.close()
class CommitDialog(QDialog): def __init__(self, repo, layername, _message = "", parent = None): super(CommitDialog, self).__init__(parent) self.repo = repo self.branch = None self.layername = layername self._message = _message or suggestedMessage self.message = None self.initGui() def initGui(self): self.setObjectName("CommitDialog") self.resize(600, 250) self.setWindowTitle("Syncronize layer to repository branch") self.verticalLayout = QVBoxLayout() self.verticalLayout.setSpacing(2) self.verticalLayout.setMargin(5) self.branchLabel = QLabel("Branch") self.verticalLayout.addWidget(self.branchLabel) self.branchCombo = QComboBox() self.branches = [] branches = self.repo.branches() for branch in branches: trees = self.repo.trees(branch) if self.layername in trees: self.branches.append(branch) self.branchCombo.addItems(self.branches) try: idx = self.branches.index("master") except: idx = 0 self.branchCombo.setCurrentIndex(idx) self.verticalLayout.addWidget(self.branchCombo) self.msgLabel = QLabel("Message to describe this update") self.verticalLayout.addWidget(self.msgLabel) self.text = QPlainTextEdit() self.text.setPlainText(self._message) self.verticalLayout.addWidget(self.text) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok) self.verticalLayout.addWidget(self.buttonBox) self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(bool(self.branches)) self.setLayout(self.verticalLayout) self.buttonBox.accepted.connect(self.okPressed) self.text.setFocus() def okPressed(self): self.branch = self.branchCombo.currentText() self.message = self.text.toPlainText() or datetime.now().strftime("%Y-%m-%d %H_%M_%S") self.close()
class ImportDialog(QDialog): def __init__(self, parent, repo=None, layer=None): super(ImportDialog, self).__init__(parent) self.setObjectName("ImportDialog") self.repo = repo self.layer = layer self.ok = False self.initGui() def initGui(self): self.setWindowTitle('Import to GeoGig') 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 vectorLayers() 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() verticalLayout.addWidget(self.messageBox) self.buttonBox = QDialogButtonBox(QDialogButtonBox.Cancel) self.importButton = QPushButton("Add layer") self.importButton.clicked.connect(self.importClicked) 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 updateBranches(self): self.branchCombo.clear() repo = repository.repos[self.repoCombo.currentIndex()] self.branches = repo.branches() self.branchCombo.addItems(self.branches) def importClicked(self): ret = QMessageBox.warning( config.iface.mainWindow(), 'Import warning', "Importing a layer will modify the original layer and might cause data loss.\n" "Make sure you have a backup copy of your layer before importing.\n" "Do you want to import the selected layer?", QMessageBox.Yes | QMessageBox.No) if ret == QMessageBox.No: return if self.repo is None: self.repo = repository.repos[self.repoCombo.currentIndex()] if self.layer is None: text = self.layerCombo.currentText() self.layer = layerFromName(text) user, email = config.getUserInfo() if user is None: self.close() return message = self.messageBox.toPlainText() or datetime.now().strftime( "%Y-%m-%d %H_%M_%S") branch = self.branchCombo.currentText() try: self.repo.importgeopkg(self.layer, branch, message, user, email, False) filename, layername = namesFromLayer(self.layer) self.repo.checkoutlayer(filename, layername, ref=branch) self.layer.reload() self.layer.triggerRepaint() except GeoGigException as e: iface.messageBar().pushMessage("Error", str(e), level=QgsMessageBar.CRITICAL, duration=5) self.close() return addTrackedLayer(self.layer, self.repo.url) self.ok = True iface.messageBar().pushMessage( "Layer was correctly added to repository", level=QgsMessageBar.INFO, duration=5) self.close() def cancelPressed(self): self.close()