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())
if isinstance(value, str):
value = QgsProcessingUtils.mapLayerFromString(value, context)
if value is None:
if value is None or not isinstance(value, QgsMapLayer):
return None
# 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,
QgsCoordinateReferenceSystem,
QgsProcessingParameterMatrix,
QgsVectorLayer)
QgsVectorLayer,
QgsProject)
from qgis.analysis import QgsNativeAlgorithms
from processing.gui.AlgorithmDialog import AlgorithmDialog
@ -152,11 +153,21 @@ class WrappersTest(unittest.TestCase):
widget.setUnitParameterValue(vl)
self.assertEqual(widget.label.text(), 'meters')
self.assertFalse(widget.warning_label.isVisible())
vl = QgsVectorLayer("Polygon?crs=epsg:4326&field=pk:int", "vl", "memory")
widget.setUnitParameterValue(vl)
vl2 = QgsVectorLayer("Polygon?crs=epsg:4326&field=pk:int", "vl", "memory")
widget.setUnitParameterValue(vl2)
self.assertEqual(widget.label.text(), 'degrees')
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()
def testMatrix(self):