class DefineWorkspaceDialog(QtGui.QDialog): def __init__(self, workspaces=None, parent=None): super(DefineWorkspaceDialog, self).__init__(parent) self.workspaces = workspaces if workspaces is not None else [] self.uri = None self.name = None self.initGui() def initGui(self): self.setWindowTitle('New workspace') verticalLayout = QtGui.QVBoxLayout() horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) nameLabel = QtGui.QLabel('Workspace name') nameLabel.setMinimumWidth(150) self.nameBox = GSNameWidget( namemsg='', name='workspace', nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=self.workspaces, unique=True, maxlength=10) self.nameBox.setMinimumWidth(250) horizontalLayout.addWidget(nameLabel) horizontalLayout.addWidget(self.nameBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setSpacing(30) horizontalLayout.setMargin(0) uriLabel = QtGui.QLabel('URI') uriLabel.setMinimumWidth(150) self.uriBox = QtGui.QLineEdit() self.uriBox.setText('') self.uriBox.setPlaceholderText('Required') self.uriBox.setMinimumWidth(250) horizontalLayout.addWidget(uriLabel) horizontalLayout.addWidget(self.uriBox) verticalLayout.addLayout(horizontalLayout) self.groupBox = QtGui.QGroupBox() self.groupBox.setLayout(verticalLayout) layout = QtGui.QVBoxLayout() layout.addWidget(self.groupBox) self.spacer = QtGui.QSpacerItem(20,20, 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) layout.addWidget(self.buttonBox) self.setLayout(layout) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) self.nameBox.nameValidityChanged.connect(self.updateOkButton) self.uriBox.textChanged.connect(self.updateOkButton) self.updateOkButton() def getWorkspace(self): return self.workspace def updateOkButton(self): ok = self.nameBox.isValid() and self.uriBox.text() != '' self.okButton.setEnabled(ok) def okPressed(self): self.uri = unicode(self.uriBox.text()) self.name = unicode(self.nameBox.definedName()) self.close() def cancelPressed(self): self.uri = None self.name = None self.close()
class StyleFromLayerDialog(QtGui.QDialog): def __init__(self, styles=None, parent = None): super(StyleFromLayerDialog, self).__init__(parent) self.styles = styles if styles is not None else [] self.layer = None self.name = None self.initGui() def initGui(self): verticalLayout = QtGui.QVBoxLayout() buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Close) self.okButton = buttonBox.button(QtGui.QDialogButtonBox.Ok) self.cancelButton = buttonBox.button(QtGui.QDialogButtonBox.Close) self.setWindowTitle('Create style from layer') horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) layerLabel = QtGui.QLabel('Layer') layerLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) self.layerBox = QtGui.QComboBox() self.alllayers = [layer.name() for layer in layers.getAllLayers()] self.layerBox.addItems(self.alllayers) self.layerBox.setMinimumWidth(250) horizontalLayout.addWidget(layerLabel) horizontalLayout.addWidget(self.layerBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) nameLabel = QtGui.QLabel('Name') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) defaultname = '' if len(self.alllayers) > 0: defaultname = xmlNameFixUp(self.alllayers[0]) self.nameBox = GSNameWidget( namemsg='', name=defaultname, nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=self.styles, unique=False) self.nameBox.setMinimumWidth(250) horizontalLayout.addWidget(nameLabel) horizontalLayout.addWidget(self.nameBox) verticalLayout.addLayout(horizontalLayout) self.groupBox = QtGui.QGroupBox() self.groupBox.setTitle("") self.groupBox.setLayout(verticalLayout) layout = QtGui.QVBoxLayout() layout.addWidget(self.groupBox) layout.addWidget(buttonBox) self.setLayout(layout) buttonBox.accepted.connect(self.okPressed) buttonBox.rejected.connect(self.cancelPressed) self.layerBox.currentIndexChanged[str].connect(self.updateNameBox) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400,150) @QtCore.pyqtSlot(str) def updateNameBox(self, name): self.nameBox.setName(xmlNameFixUp(name)) @QtCore.pyqtSlot(bool) def updateButtons(self, overwriting): txt = "Overwrite" if overwriting else "OK" self.okButton.setText(txt) self.okButton.setDefault(not overwriting) self.cancelButton.setDefault(overwriting) def okPressed(self): self.layer = self.layerBox.currentText() self.name = unicode(self.nameBox.definedName()) self.close() def cancelPressed(self): self.layer = None self.name = None self.close()