def testGSNameWidgetNames(self): nw = GSNameWidget( name='name_one', names=['name_one', 'name_two', 'name_three'], unique=True) self.assertFalse(nw.isValid()) nw.setNames(['name_four', 'name_five']) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 3) # 'name_one' prepended to list self.assertEqual(nw.definedName(), 'name_one') nw.setName('name_four') self.assertFalse(nw.isValid()) self.assertIsNone(nw.definedName()) nw.setName('name') nw.setNames(['name_one', 'name_two', 'name_three']) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 4) # 'name' is prepended to list self.assertEqual(nw.definedName(), 'name') nw.setNames([]) self.assertTrue(nw.isValid()) self.assertEqual(nw.nameBox.count(), 1) # 'name' is prepended to list self.assertEqual(nw.definedName(), 'name')
class PublishStyleDialog(QtGui.QDialog): def __init__(self, catalogs, layername, parent=None): super(PublishStyleDialog, self).__init__(parent) self.catalogs = catalogs self.catalognames = catalogs.keys() self.layername = layername self.catalog = 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('Publish style') horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) catalogLabel = QtGui.QLabel('Catalog') catalogLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalognames) self.catalogBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)) horizontalLayout.addWidget(catalogLabel) horizontalLayout.addWidget(self.catalogBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) nameLabel = QtGui.QLabel('Name') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) self.nameBox = GSNameWidget(namemsg='', name=xmlNameFixUp(self.layername), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=[], unique=False) self.nameBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)) 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.catalogBox.currentIndexChanged[str].connect( self.updateCatalogStyles) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.updateCatalogStyles(self.catalogBox.currentText()) self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400, 200) @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) @QtCore.pyqtSlot(str) def updateCatalogStyles(self, catname): catalog = self.catalogs[catname] styles = [style.name for style in catalog.get_styles()] self.nameBox.setNames(styles) def okPressed(self): self.name = unicode(self.nameBox.definedName()) self.catalog = unicode(self.catalogBox.currentText()) self.close() def cancelPressed(self): self.catalog = None self.name = None self.close()
class PublishStyleDialog(QtGui.QDialog): def __init__(self, catalogs, layername, parent = None): super(PublishStyleDialog, self).__init__(parent) self.catalogs = catalogs self.catalognames = catalogs.keys() self.layername = layername self.catalog = 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('Publish style') horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) catalogLabel = QtGui.QLabel('Catalog') catalogLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) self.catalogBox = QtGui.QComboBox() self.catalogBox.addItems(self.catalognames) self.catalogBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)) horizontalLayout.addWidget(catalogLabel) horizontalLayout.addWidget(self.catalogBox) verticalLayout.addLayout(horizontalLayout) horizontalLayout = QtGui.QHBoxLayout() horizontalLayout.setMargin(0) nameLabel = QtGui.QLabel('Name') nameLabel.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Fixed)) self.nameBox = GSNameWidget( namemsg='', name=xmlNameFixUp(self.layername), nameregex=xmlNameRegex(), nameregexmsg=xmlNameRegexMsg(), names=[], unique=False) self.nameBox.setSizePolicy( QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)) 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.catalogBox.currentIndexChanged[str].connect(self.updateCatalogStyles) self.nameBox.nameValidityChanged.connect(self.okButton.setEnabled) self.nameBox.overwritingChanged.connect(self.updateButtons) self.updateCatalogStyles(self.catalogBox.currentText()) self.okButton.setEnabled(self.nameBox.isValid()) self.updateButtons(self.nameBox.overwritingName()) self.resize(400,200) @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) @QtCore.pyqtSlot(str) def updateCatalogStyles(self, catname): catalog = self.catalogs[catname] styles = [style.name for style in catalog.get_styles()] self.nameBox.setNames(styles) def okPressed(self): self.name = unicode(self.nameBox.definedName()) self.catalog = unicode(self.catalogBox.currentText()) self.close() def cancelPressed(self): self.catalog = None self.name = None self.close()