This commit is contained in:
Nyall Dawson 2018-07-03 09:03:12 +10:00
parent 2cc9bc8f73
commit f43adf7a8b
2 changed files with 15 additions and 4 deletions

View File

@ -224,7 +224,7 @@ class NumberInputPanel(NUMBER_BASE, NUMBER_WIDGET):
value, ok = value.source.valueAsString(context.expressionContext()) value, ok = value.source.valueAsString(context.expressionContext())
if isinstance(value, str): if isinstance(value, str):
value = QgsProcessingUtils.mapLayerFromString(value, context) value = QgsProcessingUtils.mapLayerFromString(value, context)
if value is None: if value is None or not isinstance(value, QgsMapLayer):
return None return None
# need to return layer with ownership - otherwise layer may be deleted when context # need to return layer with ownership - otherwise layer may be deleted when context

View File

@ -29,7 +29,8 @@ from qgis.testing import start_app, unittest
from qgis.core import (QgsApplication, from qgis.core import (QgsApplication,
QgsCoordinateReferenceSystem, QgsCoordinateReferenceSystem,
QgsProcessingParameterMatrix, QgsProcessingParameterMatrix,
QgsVectorLayer) QgsVectorLayer,
QgsProject)
from qgis.analysis import QgsNativeAlgorithms from qgis.analysis import QgsNativeAlgorithms
from processing.gui.AlgorithmDialog import AlgorithmDialog from processing.gui.AlgorithmDialog import AlgorithmDialog
@ -152,11 +153,21 @@ class WrappersTest(unittest.TestCase):
widget.setUnitParameterValue(vl) widget.setUnitParameterValue(vl)
self.assertEqual(widget.label.text(), 'meters') self.assertEqual(widget.label.text(), 'meters')
self.assertFalse(widget.warning_label.isVisible()) self.assertFalse(widget.warning_label.isVisible())
vl = QgsVectorLayer("Polygon?crs=epsg:4326&field=pk:int", "vl", "memory") vl2 = QgsVectorLayer("Polygon?crs=epsg:4326&field=pk:int", "vl", "memory")
widget.setUnitParameterValue(vl) widget.setUnitParameterValue(vl2)
self.assertEqual(widget.label.text(), 'degrees') self.assertEqual(widget.label.text(), 'degrees')
self.assertTrue(widget.warning_label.isVisible()) self.assertTrue(widget.warning_label.isVisible())
# unresolvable values
widget.setUnitParameterValue(vl.id())
self.assertEqual(widget.label.text(), '<unknown>')
self.assertFalse(widget.warning_label.isVisible())
# resolvable text value
QgsProject.instance().addMapLayer(vl)
widget.setUnitParameterValue(vl.id())
self.assertEqual(widget.label.text(), 'meters')
self.assertFalse(widget.warning_label.isVisible())
widget.deleteLater() widget.deleteLater()
def testMatrix(self): def testMatrix(self):