def publishDraggedLayer(explorer, layer, workspace): cat = workspace.catalog ogcat = OGCatalog(cat) gslayers = [lyr.name for lyr in cat.get_layers()] layername = layer.name() if qgislayers.isPostGisLayer(layer): layername += "_table" try: lyrname = getGSLayerName(name=xmlNameFixUp(layername), names=gslayers, unique=False) except UserCanceledOperation: return False return explorer.run(ogcat.publishLayer, "Publish layer from layer '" + lyrname + "'", [], layer, workspace, True, lyrname)
def setTableContent(self): self.table.setRowCount(len(self.layers)) cat = self.catalogs.values()[0] catlayers = [lyr.name for lyr in cat.get_layers()] for idx, layer in enumerate(self.layers): lyritem = QtGui.QTableWidgetItem(layer.name()) lyritem.setToolTip(layer.name()) lyritem.setFlags(QtCore.Qt.ItemIsEnabled) self.table.setItem(idx, self.getColumn("Layer"), lyritem) lyrname = layer.name() if layers.isPostGisLayer(layer): lyrname += "_table" nameBox = GSNameWidget( name=xmlNameFixUp(lyrname), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=catlayers, unique=not self.overwrite) self.table.setCellWidget(idx, self.getColumn(self.name), nameBox) self.nameBoxes.append(nameBox) overwriteBox = QtGui.QCheckBox() overwriteBox.setEnabled(False) overwriteBox.setToolTip("Overwrite existing layer") self.table.setCellWidget(idx, self.getColumn(self.ow), overwriteBox) nameBox.nameValidityChanged.connect(self.validateNames) nameBox.overwritingChanged[bool].connect(overwriteBox.setChecked) overwriteBox.setChecked(nameBox.overwritingName()) # initial update if self.showCatalogCol: catalogBox = QtGui.QComboBox() catalogBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) catalogBox.addItems(self.catalogs.keys()) catalogBox.currentIndexChanged.connect(partial(self.catalogHasChanged, idx)) self.table.setCellWidget(idx, self.getColumn(self.cat), catalogBox) workspaceBox = QtGui.QComboBox() workspaceBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) if self.workspace is not None: workspaces = [self.workspace] defaultName = None else: workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in workspaces] workspaceBox.addItems(workspaceNames) if defaultName is not None: workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) self.table.setCellWidget(idx, self.getColumn(self.wrksp), workspaceBox)
def initGui(self): self.setWindowTitle('Publish layer') layout = QtGui.QVBoxLayout() gridLayout = QtGui.QGridLayout() gridLayout.setSpacing(10) gridLayout.setMargin(10) catalogLabel = QtGui.QLabel('Catalog') catalogLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(catalogLabel, 0, 0) self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) gridLayout.addWidget(self.catalogBox, 0, 1) workspaceLabel = QtGui.QLabel('Workspace') workspaceLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(workspaceLabel, 1, 0) self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) gridLayout.addWidget(self.workspaceBox, 1, 1) nameLabel = QtGui.QLabel('Layer') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(nameLabel, 2, 0) gslayers = [lyr.name for lyr in cat.get_layers()] name = '' # handle PG Table, whose name attribute is not callable if self.layer is not None and hasattr(self.layer, 'name'): if isinstance(self.layer, Table): name = self.layer.name + "_table" else: # QgsMapLayer name = self.layer.name() if layers.isPostGisLayer(self.layer): name += "_table" self.nameBox = GSNameWidget( name=xmlNameFixUp(name), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=gslayers, unique=False) gridLayout.addWidget(self.nameBox, 2, 1) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(gridLayout) layout.addWidget(self.destGroupBox) self.spacer = QtGui.QSpacerItem(20,40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) layout.addItem(self.spacer) self.buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button(QtGui.QDialogButtonBox.Cancel) layout.addWidget(self.buttonBox) self.setLayout(layout) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) # respond to intial validation self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400,160)
def setTableContent(self): self.table.setRowCount(len(self.layers)) cat = self.catalogs.values()[0] catlayers = [lyr.name for lyr in cat.get_layers()] for idx, layer in enumerate(self.layers): lyritem = QtGui.QTableWidgetItem(layer.name()) lyritem.setToolTip(layer.name()) lyritem.setFlags(QtCore.Qt.ItemIsEnabled) self.table.setItem(idx, self.getColumn("Layer"), lyritem) lyrname = layer.name() if layers.isPostGisLayer(layer): lyrname += "_table" nameBox = GSNameWidget(name=xmlNameFixUp(lyrname), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=catlayers, unique=not self.overwrite) self.table.setCellWidget(idx, self.getColumn(self.name), nameBox) self.nameBoxes.append(nameBox) overwriteBox = QtGui.QCheckBox() overwriteBox.setEnabled(False) overwriteBox.setToolTip("Overwrite existing layer") self.table.setCellWidget(idx, self.getColumn(self.ow), overwriteBox) nameBox.nameValidityChanged.connect(self.validateNames) nameBox.overwritingChanged[bool].connect(overwriteBox.setChecked) overwriteBox.setChecked( nameBox.overwritingName()) # initial update if self.showCatalogCol: catalogBox = QtGui.QComboBox() catalogBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) catalogBox.addItems(self.catalogs.keys()) catalogBox.currentIndexChanged.connect( partial(self.catalogHasChanged, idx)) self.table.setCellWidget(idx, self.getColumn(self.cat), catalogBox) workspaceBox = QtGui.QComboBox() workspaceBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) if self.workspace is not None: workspaces = [self.workspace] defaultName = None else: workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in workspaces] workspaceBox.addItems(workspaceNames) if defaultName is not None: workspaceBox.setCurrentIndex(workspaceNames.index(defaultName)) self.table.setCellWidget(idx, self.getColumn(self.wrksp), workspaceBox)
def initGui(self): self.setWindowTitle('Publish layer') layout = QtGui.QVBoxLayout() gridLayout = QtGui.QGridLayout() gridLayout.setSpacing(10) gridLayout.setMargin(10) catalogLabel = QtGui.QLabel('Catalog') catalogLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(catalogLabel, 0, 0) self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalogs.keys()) self.catalogBox.currentIndexChanged.connect(self.catalogHasChanged) gridLayout.addWidget(self.catalogBox, 0, 1) workspaceLabel = QtGui.QLabel('Workspace') workspaceLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(workspaceLabel, 1, 0) self.workspaceBox = QtGui.QComboBox() cat = self.catalogs[self.catalogs.keys()[0]] self.workspaces = cat.get_workspaces() try: defaultWorkspace = cat.get_default_workspace() defaultWorkspace.fetch() defaultName = defaultWorkspace.dom.find('name').text except: defaultName = None workspaceNames = [w.name for w in self.workspaces] self.workspaceBox.addItems(workspaceNames) if defaultName is not None: self.workspaceBox.setCurrentIndex( workspaceNames.index(defaultName)) gridLayout.addWidget(self.workspaceBox, 1, 1) nameLabel = QtGui.QLabel('Layer') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) gridLayout.addWidget(nameLabel, 2, 0) gslayers = [lyr.name for lyr in cat.get_layers()] name = '' # handle PG Table, whose name attribute is not callable if self.layer is not None and hasattr(self.layer, 'name'): if isinstance(self.layer, Table): name = self.layer.name + "_table" else: # QgsMapLayer name = self.layer.name() if layers.isPostGisLayer(self.layer): name += "_table" self.nameBox = GSNameWidget(name=xmlNameFixUp(name), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=gslayers, unique=False) gridLayout.addWidget(self.nameBox, 2, 1) self.destGroupBox = QtGui.QGroupBox() self.destGroupBox.setLayout(gridLayout) layout.addWidget(self.destGroupBox) self.spacer = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) layout.addItem(self.spacer) self.buttonBox = QtGui.QDialogButtonBox( QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Cancel) self.okButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = self.buttonBox.button( QtGui.QDialogButtonBox.Cancel) layout.addWidget(self.buttonBox) self.setLayout(layout) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) # respond to intial validation self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400, 160)