mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-17 00:04:02 -04:00
Refactor fields configuration in the modeler does not insist on layer
Inside the modeler, there is not enough knowledge about the layer on which the refactor fields algorithm will run. Let's be graceful with error messages here therefore.
This commit is contained in:
parent
3abff0e938
commit
b619dcb00a
@ -137,8 +137,8 @@ class FieldsMapper(QgisFeatureBasedAlgorithm):
|
|||||||
if expression.hasParserError():
|
if expression.hasParserError():
|
||||||
raise QgsProcessingException(
|
raise QgsProcessingException(
|
||||||
self.tr(u'Parser error in expression "{}": {}')
|
self.tr(u'Parser error in expression "{}": {}')
|
||||||
.format(str(expression.expression()),
|
.format(expression.expression(),
|
||||||
str(expression.parserErrorString())))
|
expression.parserErrorString()))
|
||||||
self.expressions.append(expression)
|
self.expressions.append(expression)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@ -160,8 +160,8 @@ class FieldsMapper(QgisFeatureBasedAlgorithm):
|
|||||||
if expression.hasEvalError():
|
if expression.hasEvalError():
|
||||||
raise QgsProcessingException(
|
raise QgsProcessingException(
|
||||||
self.tr(u'Evaluation error in expression "{}": {}')
|
self.tr(u'Evaluation error in expression "{}": {}')
|
||||||
.format(str(expression.expression()),
|
.format(expression.expression(),
|
||||||
str(expression.parserErrorString())))
|
expression.parserErrorString()))
|
||||||
attributes.append(value)
|
attributes.append(value)
|
||||||
feature.setAttributes(attributes)
|
feature.setAttributes(attributes)
|
||||||
self._row_number += 1
|
self._row_number += 1
|
||||||
|
@ -225,8 +225,7 @@ class FieldsMappingModel(QAbstractTableModel):
|
|||||||
|
|
||||||
self._mapping = []
|
self._mapping = []
|
||||||
if layer is not None:
|
if layer is not None:
|
||||||
dp = layer.dataProvider()
|
for field in layer.fields():
|
||||||
for field in dp.fields():
|
|
||||||
self._mapping.append(self.newField(field))
|
self._mapping.append(self.newField(field))
|
||||||
|
|
||||||
self.endResetModel()
|
self.endResetModel()
|
||||||
@ -263,6 +262,7 @@ class ExpressionDelegate(QStyledItemDelegate):
|
|||||||
editor.registerExpressionContextGenerator(index.model().contextGenerator())
|
editor.registerExpressionContextGenerator(index.model().contextGenerator())
|
||||||
editor.fieldChanged.connect(self.on_expression_fieldChange)
|
editor.fieldChanged.connect(self.on_expression_fieldChange)
|
||||||
editor.setAutoFillBackground(True)
|
editor.setAutoFillBackground(True)
|
||||||
|
editor.setAllowEvalErrors(self.parent().dialogType == DIALOG_MODELER)
|
||||||
return editor
|
return editor
|
||||||
|
|
||||||
def setEditorData(self, editor, index):
|
def setEditorData(self, editor, index):
|
||||||
@ -303,6 +303,7 @@ class FieldsMappingPanel(BASE, WIDGET):
|
|||||||
|
|
||||||
self.layerCombo.setAllowEmptyLayer(True)
|
self.layerCombo.setAllowEmptyLayer(True)
|
||||||
self.layerCombo.setFilters(QgsMapLayerProxyModel.VectorLayer)
|
self.layerCombo.setFilters(QgsMapLayerProxyModel.VectorLayer)
|
||||||
|
self.dialogType = None
|
||||||
|
|
||||||
def configure(self):
|
def configure(self):
|
||||||
self.model = FieldsMappingModel()
|
self.model = FieldsMappingModel()
|
||||||
@ -472,7 +473,9 @@ class FieldsMappingWidgetWrapper(WidgetWrapper):
|
|||||||
self._layer = None
|
self._layer = None
|
||||||
|
|
||||||
def createWidget(self):
|
def createWidget(self):
|
||||||
return FieldsMappingPanel()
|
panel = FieldsMappingPanel()
|
||||||
|
panel.dialogType = self.dialogType
|
||||||
|
return panel
|
||||||
|
|
||||||
def postInitialize(self, wrappers):
|
def postInitialize(self, wrappers):
|
||||||
for wrapper in wrappers:
|
for wrapper in wrappers:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user