Skip to content

Commit

Permalink
added table field support
Browse files Browse the repository at this point in the history
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@17 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
  • Loading branch information
volayaf@gmail.com committed Jan 18, 2012
1 parent 7a356f5 commit 9c5fcdf
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 61 deletions.
51 changes: 0 additions & 51 deletions src/sextante/SextanteToolboxPlugin.py

This file was deleted.

39 changes: 35 additions & 4 deletions src/sextante/gui/ParametersDialog.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
from sextante.parameters.ParameterNumber import ParameterNumber from sextante.parameters.ParameterNumber import ParameterNumber
from sextante.parameters.ParameterRange import ParameterRange from sextante.parameters.ParameterRange import ParameterRange
from sextante.parameters.ParameterTableField import ParameterTableField from sextante.parameters.ParameterTableField import ParameterTableField
from sextante.parameters.ParameterTable import ParameterTable


try: try:
_fromUtf8 = QtCore.QString.fromUtf8 _fromUtf8 = QtCore.QString.fromUtf8
Expand All @@ -36,7 +37,7 @@ def setupUi(self, dialog, alg):
self.alg = alg self.alg = alg
self.dialog = dialog self.dialog = dialog
self.valueItems = {} self.valueItems = {}
self.depentItems = {} self.dependentItems = {}
dialog.setObjectName(_fromUtf8("Parameters")) dialog.setObjectName(_fromUtf8("Parameters"))
dialog.resize(650, 450) dialog.resize(650, 450)
self.buttonBox = QtGui.QDialogButtonBox(dialog) self.buttonBox = QtGui.QDialogButtonBox(dialog)
Expand Down Expand Up @@ -77,13 +78,25 @@ def getWidgetFromParameter(self, param):
item.addItem(self.NOT_SELECTED, None) item.addItem(self.NOT_SELECTED, None)
for layer in layers: for layer in layers:
item.addItem(layer.name(), layer) item.addItem(layer.name(), layer)
item.currentIndexChanged.connect(self.updateDependentFields)
item.name = param.name
elif isinstance(param, ParameterBoolean): elif isinstance(param, ParameterBoolean):
item = QtGui.QComboBox() item = QtGui.QComboBox()
item.addItem("Yes") item.addItem("Yes")
item.addItem("No") item.addItem("No")
elif isinstance(param, ParameterTableField): elif isinstance(param, ParameterTableField):
item = QtGui.QComboBox() item = QtGui.QComboBox()
item = self.getFields(QGisLayers.getVectorLayers()[0]) if param.parent in self.dependentItems:
list = self.dependentItems[param.parent]
else:
list = []
self.dependentItems[param.parent] = list
list.append(param.name)
layers = QGisLayers.getVectorLayers()
if len(layers)>0:
fields = self.getFields(layers[0])
for i in fields:
item.addItem(fields[i].name())
elif isinstance(param, ParameterSelection): elif isinstance(param, ParameterSelection):
item = QtGui.QComboBox() item = QtGui.QComboBox()
item.addItems(param.options) item.addItems(param.options)
Expand All @@ -108,7 +121,23 @@ def getWidgetFromParameter(self, param):


return item return item


def updateDependentFields(self):
sender = self.dialog.sender()
if not isinstance(sender, QComboBox):
return
layer = sender.itemData(sender.currentIndex()).toPyObject()
children = self.dependentItems[sender.name]
for child in children:
widget = self.valueItems[child]
widget.clear()
fields = self.getFields(layer)
for i in fields:
widget.addItem(fields[i].name())


def getFields(self, layer): def getFields(self, layer):
return layer.dataProvider().fields()





def setTableContent(self): def setTableContent(self):
Expand Down Expand Up @@ -160,9 +189,11 @@ def setParamValues(self):
def setParamValue(self, param, widget): def setParamValue(self, param, widget):


if isinstance(param, ParameterRaster): if isinstance(param, ParameterRaster):
param.value = widget.itemData(widget.currentIndex()) param.value = widget.itemData(widget.currentIndex()).toPyObject()
elif isinstance(param, ParameterVector): elif isinstance(param, ParameterVector):
param.value = widget.itemData(widget.currentIndex()) param.value = widget.itemData(widget.currentIndex()).toPyObject()
elif isinstance(param, ParameterTable):
param.value = widget.itemData(widget.currentIndex()).toPyObject()
elif isinstance(param, ParameterBoolean): elif isinstance(param, ParameterBoolean):
param.value = widget.currentIndex() == 0 param.value = widget.currentIndex() == 0
elif isinstance(param, ParameterSelection): elif isinstance(param, ParameterSelection):
Expand Down
3 changes: 2 additions & 1 deletion src/sextante/gui/SextanteToolbox.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -128,13 +128,14 @@ def fillTree(self):
providerItem.setText(0,providerName) providerItem.setText(0,providerName)


for groupItem in groups.values(): for groupItem in groups.values():
groupItem.sortChildren(0, Qt.AscendingOrder) #groupItem.sortChildren(0, Qt.AscendingOrder)
providerItem.addChild(groupItem) providerItem.addChild(groupItem)
self.algorithmTree.addTopLevelItem(providerItem) self.algorithmTree.addTopLevelItem(providerItem)
providerItem.setExpanded(True) providerItem.setExpanded(True)
for groupItem in groups.values(): for groupItem in groups.values():
if text != "": if text != "":
groupItem.setExpanded(True) groupItem.setExpanded(True)
self.algorithmTree.sortItems(0, Qt.AscendingOrder)




class TreeAlgorithmItem(QtGui.QTreeWidgetItem): class TreeAlgorithmItem(QtGui.QTreeWidgetItem):
Expand Down
10 changes: 5 additions & 5 deletions src/sextante/saga/SagaAlgorithm.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def defineCharacteristicsFromFile(self):
param = ParameterTable() param = ParameterTable()
param.name = paramName param.name = paramName
param.description = paramDescription param.description = paramDescription
param.optional = not ("optional" in line) param.optional = ("optional" in line)
lastParentParameterName = paramName; lastParentParameterName = paramName;
self.putParameter(param) self.putParameter(param)
elif "static" in line: elif "static" in line:
Expand Down Expand Up @@ -113,14 +113,14 @@ def defineCharacteristicsFromFile(self):
param = ParameterMultipleInput() param = ParameterMultipleInput()
param.name = paramName param.name = paramName
param.description = paramDescription param.description = paramDescription
param.optional = not ("optional" in line) param.optional = ("optional" in line)
param.datatype=ParameterMultipleInput.TYPE_RASTER param.datatype=ParameterMultipleInput.TYPE_RASTER
self.putParameter(param) self.putParameter(param)
else: else:
param = ParameterRaster() param = ParameterRaster()
param.name = paramName param.name = paramName
param.description = paramDescription param.description = paramDescription
param.optional = not ("optional" in line) param.optional = ("optional" in line)
self.putParameter(param) self.putParameter(param)
else: else:
output = OutputRaster() output = OutputRaster()
Expand All @@ -133,14 +133,14 @@ def defineCharacteristicsFromFile(self):
param = ParameterMultipleInput() param = ParameterMultipleInput()
param.name = paramName param.name = paramName
param.description = paramDescription param.description = paramDescription
param.optional = not ("optional" in line) param.optional = ("optional" in line)
param.datatype=ParameterMultipleInput.TYPE_VECTOR_ANY param.datatype=ParameterMultipleInput.TYPE_VECTOR_ANY
self.putParameter(param) self.putParameter(param)
else: else:
param = ParameterVector() param = ParameterVector()
param.name = paramName param.name = paramName
param.description = paramDescription param.description = paramDescription
param.optional = not ("optional" in line) param.optional = ("optional" in line)
param.shapetype = ParameterVector.VECTOR_TYPE_ANY param.shapetype = ParameterVector.VECTOR_TYPE_ANY
lastParentParameterName = paramName; lastParentParameterName = paramName;
self.putParameter(param) self.putParameter(param)
Expand Down

0 comments on commit 9c5fcdf

Please sign in to comment.