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')
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')
def testGSNameWidgetMaxLenName(self): nw = GSNameWidget( name='my_pg_connection', maxlength=10) self.assertFalse(nw.isValid()) nw.setName('my_pg_conn') self.assertTrue(nw.isValid()) nw.setMaxLength(5) self.assertFalse(nw.isValid()) nw.setMaxLength(10) self.assertTrue(nw.isValid())
def testGSNameWidgetMaxLenName(self): nw = GSNameWidget( name='my_pg_connection', maxlength=10) self.assertFalse(nw.isValid()) nw.setName('my_pg_conn') self.assertTrue(nw.isValid()) nw.setMaxLength(5) self.assertFalse(nw.isValid()) nw.setMaxLength(10) self.assertTrue(nw.isValid())
def testGSNameWidgetInvalidName(self): # base invalid name is empty nw = GSNameWidget(name='') self.assertFalse(nw.isValid()) nw.validateName('') self.assertFalse(nw.isValid()) nw.highlightName() self.assertNotEqual(nw.nameBox.lineEdit().styleSheet(), '') invalidnames = ['xMl_name', 'name with spaces', '9starts_with_number', ':starts_with_punctuation'] # XML invalid name nw.setNameRegex(xmlNameRegex(), xmlNameRegexMsg()) self.assertFalse(nw.isValid()) self.assertIsNone(nw.definedName()) for ivname in invalidnames: nw.setName(ivname) self.assertFalse(nw.isValid()) # empty name regex nw.setName('') nw.setNameRegex(xmlNameEmptyRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) self.assertEqual(nw.definedName(), '') for ivname in invalidnames: nw.setName(ivname) self.assertFalse(nw.isValid()) # custom regex invalid name nw.setNameRegex(r'^(?!XML|\d|\W)[a-z](\S(?!::))*', 'regex message') nw.setName('my::name') self.assertFalse(nw.isValid())
def testGSNameWidgetInvalidName(self): # base invalid name is empty nw = GSNameWidget(name='') self.assertFalse(nw.isValid()) nw.validateName('') self.assertFalse(nw.isValid()) nw.highlightName() self.assertNotEqual(nw.nameBox.lineEdit().styleSheet(), '') invalidnames = ['xMl_name', 'name with spaces', '9starts_with_number', ':starts_with_punctuation'] # XML invalid name nw.setNameRegex(xmlNameRegex(), xmlNameRegexMsg()) self.assertFalse(nw.isValid()) self.assertIsNone(nw.definedName()) for ivname in invalidnames: nw.setName(ivname) self.assertFalse(nw.isValid()) # empty name regex nw.setName('') nw.setNameRegex(xmlNameEmptyRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) self.assertEqual(nw.definedName(), '') for ivname in invalidnames: nw.setName(ivname) self.assertFalse(nw.isValid()) # custom regex invalid name nw.setNameRegex(r'^(?!XML|\d|\W)[a-z](\S(?!::))*', 'regex message') nw.setName('my::name') self.assertFalse(nw.isValid())
def testGSNameWidgetUniqueName(self): nw = GSNameWidget( name='my_pg_connection', names=['name_one', 'name_two', 'name_three'], unique=False) self.assertTrue(nw.isValid()) nw.setName('name_one') self.assertTrue(nw.isValid()) self.assertTrue(nw.overwritingName()) nw.setUnique(True) self.assertFalse(nw.isValid()) self.assertFalse(nw.overwritingName()) nw.setUnique(False) self.assertTrue(nw.isValid()) self.assertTrue(nw.overwritingName())
def testGSNameWidgetUniqueName(self): nw = GSNameWidget( name='my_pg_connection', names=['name_one', 'name_two', 'name_three'], unique=False) self.assertTrue(nw.isValid()) nw.setName('name_one') self.assertTrue(nw.isValid()) self.assertTrue(nw.overwritingName()) nw.setUnique(True) self.assertFalse(nw.isValid()) self.assertFalse(nw.overwritingName()) nw.setUnique(False) self.assertTrue(nw.isValid()) self.assertTrue(nw.overwritingName())
def testGSNameWidgetValidName(self): nw = GSNameWidget(name='my_pg_connection') self.assertTrue(nw.isValid()) self.assertIsNotNone(nw.definedName()) self.assertEqual(nw.definedName(), 'my_pg_connection') nw.validateName('my_pg_connection') self.assertTrue(nw.isValid()) nw.highlightName() self.assertEqual(nw.nameBox.lineEdit().styleSheet(), '') validnames = ['name_8291', 'name.with.dots', 'name:with::colons', '_name_with_underscore'] # XML valid name nw.setNameRegex(xmlNameRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) for vname in validnames: nw.setName(vname) self.assertTrue(nw.isValid()) # empty name regex nw.setName('') nw.setNameRegex(xmlNameEmptyRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) nw.setAllowEmpty(True) self.assertTrue(nw.isValid()) self.assertEqual(nw.definedName(), '') for vname in validnames: nw.setName(vname) self.assertTrue(nw.isValid())
def testGSNameWidgetValidName(self): nw = GSNameWidget(name='my_pg_connection') self.assertTrue(nw.isValid()) self.assertIsNotNone(nw.definedName()) self.assertEqual(nw.definedName(), 'my_pg_connection') nw.validateName('my_pg_connection') self.assertTrue(nw.isValid()) nw.highlightName() self.assertEqual(nw.nameBox.lineEdit().styleSheet(), '') validnames = ['name_8291', 'name.with.dots', 'name:with::colons', '_name_with_underscore'] # XML valid name nw.setNameRegex(xmlNameRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) for vname in validnames: nw.setName(vname) self.assertTrue(nw.isValid()) # empty name regex nw.setName('') nw.setNameRegex(xmlNameEmptyRegex(), xmlNameRegexMsg()) self.assertTrue(nw.isValid()) nw.setAllowEmpty(True) self.assertTrue(nw.isValid()) self.assertEqual(nw.definedName(), '') for vname in validnames: nw.setName(vname) self.assertTrue(nw.isValid())
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()