Skip to content

Commit 7847f97

Browse files
committedMay 17, 2016
Processing - Adapt RefactorFields to work on tables as well as vector layers
1 parent afbe914 commit 7847f97

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed
 

‎python/plugins/processing/algs/qgis/FieldsMapper.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from qgis.utils import iface
3131
from processing.core.GeoAlgorithm import GeoAlgorithm
3232
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
33-
from processing.core.parameters import ParameterVector
33+
from processing.core.parameters import ParameterTable
3434
from processing.core.outputs import OutputVector
3535
from processing.tools import dataobjects, vector
3636

@@ -52,13 +52,15 @@ def __init__(self):
5252
def defineCharacteristics(self):
5353
self.name, self.i18n_name = self.trAlgorithm('Refactor fields')
5454
self.group, self.i18n_group = self.trAlgorithm('Vector table tools')
55-
self.addParameter(ParameterVector(self.INPUT_LAYER,
56-
self.tr('Input layer'),
57-
[ParameterVector.VECTOR_TYPE_ANY], False))
55+
self.addParameter(ParameterTable(self.INPUT_LAYER,
56+
self.tr('Input layer'),
57+
False))
5858
self.addParameter(ParameterFieldsMapping(self.FIELDS_MAPPING,
59-
self.tr('Fields mapping'), self.INPUT_LAYER))
59+
self.tr('Fields mapping'),
60+
self.INPUT_LAYER))
6061
self.addOutput(OutputVector(self.OUTPUT_LAYER,
61-
self.tr('Refactored')))
62+
self.tr('Refactored'),
63+
base_input=self.INPUT_LAYER))
6264

6365
def processAlgorithm(self, progress):
6466
layer = self.getParameterValue(self.INPUT_LAYER)
@@ -120,7 +122,9 @@ def processAlgorithm(self, progress):
120122
for current, inFeat in enumerate(features):
121123
rownum = current + 1
122124

123-
outFeat.setGeometry(inFeat.geometry())
125+
geometry = inFeat.geometry()
126+
if geometry is not None:
127+
outFeat.setGeometry(geometry)
124128

125129
attrs = []
126130
for i in xrange(0, len(mapping)):

‎python/plugins/processing/algs/qgis/ui/FieldsMapperDialogs.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ def getWidgetFromParameter(self, param):
5656
else:
5757
items = []
5858
self.dependentItems[param.parent] = items
59-
items.append(param.name)
59+
items.append(param)
60+
6061
parent = self.alg.getParameterFromName(param.parent)
6162
if isinstance(parent, ParameterVector):
6263
layers = dataobjects.getVectorLayers(parent.shapetype)
@@ -76,16 +77,17 @@ def updateDependentFields(self):
7677
layer = sender.itemData(sender.currentIndex())
7778
children = self.dependentItems[sender.name]
7879
for child in children:
79-
widget = self.valueItems[child]
80+
widget = self.valueItems[child.name]
8081
if isinstance(widget, FieldsMappingPanel):
8182
widget.setLayer(layer)
83+
ParametersPanel.updateDependentFields(self)
8284

8385
def somethingDependsOnThisParameter(self, parent):
8486
for param in self.alg.parameters:
8587
if isinstance(param, ParameterFieldsMapping):
8688
if param.parent == parent.name:
8789
return True
88-
return False
90+
return ParametersPanel.somethingDependsOnThisParameter(self, parent)
8991

9092

9193
class FieldsMapperParametersDialog(AlgorithmDialog):

‎python/plugins/processing/algs/qgis/ui/FieldsMappingPanel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ def on_model_rowsInserted(self, parent, start, end):
463463
self.model.index(end, self.model.columnCount() - 1))
464464

465465
def updateLayerCombo(self):
466-
layers = dataobjects.getVectorLayers()
466+
layers = dataobjects.getTables()
467467
layers.sort(key=lambda lay: lay.name())
468468
for layer in layers:
469469
self.layerCombo.addItem(layer.name(), layer)

0 commit comments

Comments
 (0)
Please sign in to comment.