def populateTableView(self): serverUrl = unicode(self.txtServerUrl.text()) username = unicode(self.txtUsername.text()) password = unicode(self.txtPassword.text()) qgs_cat = QGSCatalog(serverUrl, username=username, password=password) # QtCore.pyqtRemoveInputHook() # import pdb; pdb.set_trace() QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) progress = QtGui.QProgressDialog("Loading the layer list", "Cancel", 0, 0, self.tableView) progress.setWindowModality(QtCore.Qt.WindowModal) progress.resize(400, 110) progress.setWindowTitle("Loading") progress.show() self.all_layers = qgs_cat.get_layers_from_capabilities() QtGui.QApplication.restoreOverrideCursor() progress.hide() self.model = QGSLayerModel(self.all_layers) self.tableView.setModel(self.model) self.tableView.setSortingEnabled(True) self.resizeColumns()
def populateTableView(self): serverUrl = unicode(self.txtServerUrl.text()) username = unicode(self.txtUsername.text()) password = unicode(self.txtPassword.text()) qgs_cat = QGSCatalog(serverUrl, username=username, password=password) # QtCore.pyqtRemoveInputHook() # import pdb; pdb.set_trace() QtGui.QApplication.setOverrideCursor( QtGui.QCursor(QtCore.Qt.WaitCursor)) progress = QtGui.QProgressDialog("Loading the layer list", "Cancel", 0, 0, self.tableView) progress.setWindowModality(QtCore.Qt.WindowModal) progress.resize(400, 110) progress.setWindowTitle("Loading") progress.show() self.all_layers = qgs_cat.get_layers_from_capabilities() QtGui.QApplication.restoreOverrideCursor() progress.hide() self.model = QGSLayerModel(self.all_layers) self.tableView.setModel(self.model) self.tableView.setSortingEnabled(True) self.resizeColumns()
def createWorkspaceCombobox(self): # Retrieve existing workspaces and fill a combox to give option to the users qgs_cat = QGSCatalog("http://localhost:8080/geoserver/rest", username="******", password="******") all_workspaces = qgs_cat.get_workspaces() all_workspaces = [workspace.name for workspace in all_workspaces] # Retrieve default workspace name req = requests.get(qgs_cat.get_default_workspace().href, auth=('admin', 'geoserver')) doc = etree.fromstring(req.content) default_name = doc.find('name') default_name = default_name.text if not None else None # Create and fill ComboBox combobox = QtGui.QComboBox() selected_index = -1 for workspace in all_workspaces: if workspace == default_name and workspace is not None: combobox.addItem(workspace + " [default]") selected_index = combobox.findText(workspace + " [default]") else: combobox.addItem(workspace) if selected_index != -1: combobox.setCurrentIndex(selected_index) return combobox
def uploadSelectedLayer(self): uploaded_layers = [] qgs_cat = QGSCatalog("http://localhost:8080/geoserver/rest", username="******", password="******") selected_indexes = self.tableWidget.selectionModel().selectedRows() for row_index in selected_indexes: # from PyQt4.QtCore import pyqtRemoveInputHook; pyqtRemoveInputHook() # import pdb; pdb.set_trace() selected_layer_name = self.tableWidget.item(row_index.row(), 0).text() #Shouldn't require a loop but I didn't find a way to access directly a layer by id or by name for lyr in self.iface.mapCanvas().layers(): if str(lyr.name()) == selected_layer_name: file_path = QtCore.QFileInfo(lyr.dataProvider().dataSourceUri().section('|', 0, 0)) workspace = self.tableWidget.cellWidget(row_index.row(), 4).currentText() if '[default]' in workspace: workspace = 'default' #TODO: support other sources of data (PostGIS...) upload_layer_to_gs(qgs_cat, str(selected_layer_name), str(file_path.absoluteFilePath()), workspace=str(workspace)) return uploaded_layers