def test_on_radPostprocessing_toggled(self): """Test hazard radio button toggle behaviour works""" myLayer = makePolygonLayer() myDefaults = getDefaults() myDialog = KeywordsDialog(PARENT, IFACE, theLayer=myLayer) myButton = myDialog.radPostprocessing myButton.setChecked(False) QTest.mouseClick(myButton, QtCore.Qt.LeftButton) myMessage = ('Toggling the postprocessing radio did not add a ' 'category to the keywords list.') assert myDialog.getValueForKey( 'category') == 'postprocessing', myMessage myMessage = ('Toggling the postprocessing radio did not add an ' 'aggregation attribute to the keywords list.') assert myDialog.getValueForKey( myDefaults['AGGR_ATTR_KEY']) == 'KAB_NAME', myMessage myMessage = ('Toggling the postprocessing radio did not add a ' 'female ratio attribute to the keywords list.') assert myDialog.getValueForKey( myDefaults['FEM_RATIO_ATTR_KEY']) == \ myDialog.tr('Use default'), myMessage myMessage = ('Toggling the postprocessing radio did not add a ' 'female ratio default value to the keywords list.') assert float(myDialog.getValueForKey( myDefaults['FEM_RATIO_KEY'])) == \ myDefaults['FEM_RATIO'], myMessage
def test_on_dsbFemaleRatioDefault_valueChanged(self): """Test hazard radio button toggle behaviour works""" myLayer = makePolygonLayer() myDefaults = getDefaults() myDialog = KeywordsDialog(PARENT, IFACE, theLayer=myLayer) myButton = myDialog.radPostprocessing myButton.setChecked(False) QTest.mouseClick(myButton, QtCore.Qt.LeftButton) myFemaleRatioAttrBox = myDialog.cboFemaleRatioAttribute #set to Don't use myIndex = myFemaleRatioAttrBox.findText( myDialog.tr('Don\'t use')) myMessage = (myDialog.tr('Don\'t use') + ' not found') assert (myIndex != -1), myMessage myFemaleRatioAttrBox.setCurrentIndex(myIndex) myMessage = ('Toggling the female ratio attribute combo to' ' "Don\'t use" did not add it to the keywords list.') assert myDialog.getValueForKey( myDefaults['FEM_RATIO_ATTR_KEY']) ==\ myDialog.tr('Don\'t use'), myMessage myMessage = ('Toggling the female ratio attribute combo to' ' "Don\'t use" did not disable dsbFemaleRatioDefault.') myIsEnabled = myDialog.dsbFemaleRatioDefault.isEnabled() assert not myIsEnabled, myMessage myMessage = ('Toggling the female ratio attribute combo to' ' "Don\'t use" did not remove the keyword.') assert (myDialog.getValueForKey(myDefaults['FEM_RATIO']) is None), myMessage #set to TEST_REAL myIndex = myFemaleRatioAttrBox.findText('TEST_REAL') myMessage = ('TEST_REAL not found') assert (myIndex != -1), myMessage myFemaleRatioAttrBox.setCurrentIndex(myIndex) myMessage = ('Toggling the female ratio attribute combo to "TEST_REAL"' ' did not add it to the keywords list.') assert myDialog.getValueForKey( myDefaults['FEM_RATIO_ATTR_KEY']) == 'TEST_REAL', myMessage myMessage = ('Toggling the female ratio attribute combo to "TEST_REAL"' ' did not disable dsbFemaleRatioDefault.') myIsEnabled = myDialog.dsbFemaleRatioDefault.isEnabled() assert not myIsEnabled, myMessage myMessage = ('Toggling the female ratio attribute combo to "TEST_REAL"' ' did not remove the keyword.') assert (myDialog.getValueForKey(myDefaults['FEM_RATIO']) is None), myMessage
def test_on_dsbFemaleRatioDefault_valueChanged(self): """Test hazard radio button toggle behaviour works""" myLayer = makePolygonLayer() myDefaults = getDefaults() myDialog = KeywordsDialog(PARENT, IFACE, theLayer=myLayer) myButton = myDialog.radPostprocessing myButton.setChecked(False) QTest.mouseClick(myButton, QtCore.Qt.LeftButton) myFemaleRatioAttrBox = myDialog.cboFemaleRatioAttribute #set to Don't use myIndex = myFemaleRatioAttrBox.findText(myDialog.tr('Don\'t use')) myMessage = (myDialog.tr('Don\'t use') + ' not found') assert (myIndex != -1), myMessage myFemaleRatioAttrBox.setCurrentIndex(myIndex) myMessage = ('Toggling the female ratio attribute combo to' ' "Don\'t use" did not add it to the keywords list.') assert myDialog.getValueForKey( myDefaults['FEM_RATIO_ATTR_KEY']) ==\ myDialog.tr('Don\'t use'), myMessage myMessage = ('Toggling the female ratio attribute combo to' ' "Don\'t use" did not disable dsbFemaleRatioDefault.') myIsEnabled = myDialog.dsbFemaleRatioDefault.isEnabled() assert not myIsEnabled, myMessage myMessage = ('Toggling the female ratio attribute combo to' ' "Don\'t use" did not remove the keyword.') assert (myDialog.getValueForKey(myDefaults['FEM_RATIO']) is None), myMessage #set to TEST_REAL myIndex = myFemaleRatioAttrBox.findText('TEST_REAL') myMessage = ('TEST_REAL not found') assert (myIndex != -1), myMessage myFemaleRatioAttrBox.setCurrentIndex(myIndex) myMessage = ('Toggling the female ratio attribute combo to "TEST_REAL"' ' did not add it to the keywords list.') assert myDialog.getValueForKey( myDefaults['FEM_RATIO_ATTR_KEY']) == 'TEST_REAL', myMessage myMessage = ('Toggling the female ratio attribute combo to "TEST_REAL"' ' did not disable dsbFemaleRatioDefault.') myIsEnabled = myDialog.dsbFemaleRatioDefault.isEnabled() assert not myIsEnabled, myMessage myMessage = ('Toggling the female ratio attribute combo to "TEST_REAL"' ' did not remove the keyword.') assert (myDialog.getValueForKey(myDefaults['FEM_RATIO']) is None), myMessage
def test_getDefaults(self): myExpectedDefaults = { 'FEM_RATIO_KEY': 'female ratio default', 'YOUTH_RATIO': 0.263, 'ELDER_RATIO': 0.078, 'NO_DATA': 'No data', 'FEM_RATIO': 0.5, 'AGGR_ATTR_KEY': 'aggregation attribute', 'FEM_RATIO_ATTR_KEY': 'female ratio attribute', 'ADULT_RATIO': 0.659} myDefaults = getDefaults() myMessage = 'Defaults: got %s, expected %s' % ( myDefaults, myExpectedDefaults) assert (myDefaults == myExpectedDefaults), myMessage
def __init__(self, parent, iface, theDock=None, theLayer=None): """Constructor for the dialog. .. note:: In QtDesigner the advanced editor's predefined keywords list should be shown in english always, so when adding entries to cboKeyword, be sure to choose :safe_qgis:`Properties<<` and untick the :safe_qgis:`translatable` property. Args: * parent - parent widget of this dialog * iface - a Quantum GIS QGisAppInterface instance. * theDock - Optional dock widget instance that we can notify of changes to the keywords. Returns: not applicable Raises: no exceptions explicitly raised """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) self.setWindowTitle(self.tr( 'InaSAFE %1 Keywords Editor').arg(get_version())) self.keywordIO = KeywordIO() # note the keys should remain untranslated as we need to write # english to the keywords file. The keys will be written as user data # in the combo entries. # .. seealso:: http://www.voidspace.org.uk/python/odict.html self.standardExposureList = OrderedDict([('population', self.tr('population')), ('structure', self.tr('structure')), ('road', self.tr('road')), ('Not Set', self.tr('Not Set'))]) self.standardHazardList = OrderedDict([('earthquake [MMI]', self.tr('earthquake [MMI]')), ('tsunami [m]', self.tr('tsunami [m]')), ('tsunami [wet/dry]', self.tr('tsunami [wet/dry]')), ('tsunami [feet]', self.tr('tsunami [feet]')), ('flood [m]', self.tr('flood [m]')), ('flood [wet/dry]', self.tr('flood [wet/dry]')), ('flood [feet]', self.tr('flood [feet]')), ('tephra [kg2/m2]', self.tr('tephra [kg2/m2]')), ('volcano', self.tr('volcano')), ('Not Set', self.tr('Not Set'))]) # Save reference to the QGIS interface and parent self.iface = iface self.parent = parent self.dock = theDock QtCore.QObject.connect(self.lstKeywords, QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), self.makeKeyValueEditable) # Set up help dialog showing logic. self.helpDialog = None myButton = self.buttonBox.button(QtGui.QDialogButtonBox.Help) QtCore.QObject.connect(myButton, QtCore.SIGNAL('clicked()'), self.showHelp) # set some inital ui state: self.defaults = getDefaults() self.pbnAdvanced.setChecked(True) self.pbnAdvanced.toggle() self.radPredefined.setChecked(True) self.dsbFemaleRatioDefault.blockSignals(True) self.dsbFemaleRatioDefault.setValue(self.defaults[ 'FEM_RATIO']) self.dsbFemaleRatioDefault.blockSignals(False) #myButton = self.buttonBox.button(QtGui.QDialogButtonBox.Ok) #myButton.setEnabled(False) if theLayer is None: self.layer = self.iface.activeLayer() else: self.layer = theLayer if self.layer: self.loadStateFromKeywords() #add a reload from keywords button myButton = self.buttonBox.addButton(self.tr('Reload'), QtGui.QDialogButtonBox.ActionRole) QtCore.QObject.connect(myButton, QtCore.SIGNAL('clicked()'), self.loadStateFromKeywords)