Skip to content

Commit 78d1ee2

Browse files
author
volayaf
committed
added some stuff to iterating execution
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@120 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent b0ed56a commit 78d1ee2

File tree

5 files changed

+126
-238
lines changed

5 files changed

+126
-238
lines changed

src/sextante/core/SextanteConfig.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
class SextanteConfig():
55

6+
TABLE_LIKE_PARAM_PANEL = "TABLE_LIKE_PARAM_PANEL"
67
OUTPUT_FOLDER = "OUTPUT_FOLDER"
78
RASTER_STYLE = "RASTER_STYLE"
89
VECTOR_POINT_STYLE = "VECTOR_POINT_STYLE"
@@ -16,7 +17,8 @@ class SextanteConfig():
1617

1718
@staticmethod
1819
def initialize():
19-
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_SELECTED, "Use only selected features in external application", True))
20+
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_SELECTED, "Use only selected features in external applications", True))
21+
SextanteConfig.addSetting(Setting("General", SextanteConfig.TABLE_LIKE_PARAM_PANEL, "Show table-like parameter panels", False))
2022
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_FILENAME_AS_LAYER_NAME, "Use filename as layer name", True))
2123
SextanteConfig.addSetting(Setting("General", SextanteConfig.SHOW_RECENT_ALGORITHMS, "Show recently executed algorithms", True))
2224
SextanteConfig.addSetting(Setting("General", SextanteConfig.OUTPUT_FOLDER,

src/sextante/grass/GrassAlgorithm.py

+2
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ def calculateRegion(self):
8282
layer = QGisLayers.getObjectFromUri(layername, first)
8383
self.addToRegion(layer, first)
8484
first = False
85+
if self.cellsize == 0:
86+
self.cellsize = 1
8587
else:
8688
self.xmin = SextanteConfig.getSetting(GrassUtils.GRASS_REGION_XMIN)
8789
self.xmax = SextanteConfig.getSetting(GrassUtils.GRASS_REGION_XMAX)

src/sextante/gui/AlgorithmExecutor.py

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ def runalg(alg, progress):
1515
QMessageBox.critical(None, "Error", e.msg)
1616
return False
1717

18+
@staticmethod
19+
def runalgIterating(alg,paramtoIter,progress):
20+
return False
21+
1822
class SilentProgress():
1923

2024
def setText(self, text):

src/sextante/gui/ParametersDialog.py

+25-194
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,18 @@
77
from sextante.parameters.ParameterBoolean import ParameterBoolean
88
from sextante.parameters.ParameterSelection import ParameterSelection
99
from sextante.parameters.ParameterMultipleInput import ParameterMultipleInput
10-
from sextante.gui.MultipleInputPanel import MultipleInputPanel
1110
from sextante.parameters.ParameterFixedTable import ParameterFixedTable
12-
from sextante.gui.FixedTablePanel import FixedTablePanel
1311
from sextante.parameters.ParameterTableField import ParameterTableField
1412
from sextante.parameters.ParameterTable import ParameterTable
15-
from sextante.gui.OutputSelectionPanel import OutputSelectionPanel
1613
from sextante.gui.AlgorithmExecutor import AlgorithmExecutor
1714
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
1815
from sextante.core.SextanteLog import SextanteLog
1916
from sextante.gui.SextantePostprocessing import SextantePostprocessing
20-
from sextante.gui.RangePanel import RangePanel
2117
from sextante.parameters.ParameterRange import ParameterRange
2218
from sextante.gui.HTMLViewerDialog import HTMLViewerDialog
23-
from sextante.gui.NumberInputPanel import NumberInputPanel
2419
from sextante.parameters.ParameterNumber import ParameterNumber
25-
from sextante.gui.InputLayerSelectorPanel import InputLayerSelectorPanel
26-
from sextante.parameters.ParameterExtent import ParameterExtent
27-
from sextante.gui.ExtentSelectionPanel import ExtentSelectionPanel
28-
from sextante.gui.ParametersTable import ParametersTable
20+
21+
from sextante.gui.ParametersPanel import ParametersPanel
2922

3023
try:
3124
_fromUtf8 = QtCore.QString.fromUtf8
@@ -59,19 +52,7 @@ def setupUi(self, dialog, alg):
5952
self.showHelpButton.setText("Show help")
6053
self.buttonBox.addButton(self.showHelpButton, QtGui.QDialogButtonBox.ActionRole)
6154
QtCore.QObject.connect(self.showHelpButton, QtCore.SIGNAL("clicked()"), self.showHelp)
62-
#=======================================================================
63-
# self.tableWidget = QtGui.QTableWidget()
64-
# self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.NoSelection)
65-
# self.tableWidget.setColumnCount(2)
66-
# self.tableWidget.setColumnWidth(0,300)
67-
# self.tableWidget.setColumnWidth(1,300)
68-
# self.tableWidget.setHorizontalHeaderItem(0, QtGui.QTableWidgetItem("Parameter"))
69-
# self.tableWidget.setHorizontalHeaderItem(1, QtGui.QTableWidgetItem("Value"))
70-
# self.tableWidget.verticalHeader().setVisible(False)
71-
# self.tableWidget.horizontalHeader().setResizeMode(QtGui.QHeaderView.Stretch)
72-
# self.setTableContent()
73-
#=======================================================================
74-
self.paramTable = ParametersTable(self.alg, self.dialog)
55+
self.paramTable = ParametersPanel(self.alg, self.dialog)
7556
self.scrollArea = QtGui.QScrollArea()
7657
self.scrollArea.setWidget(self.paramTable)
7758
self.scrollArea.setWidgetResizable(True)
@@ -92,179 +73,13 @@ def setupUi(self, dialog, alg):
9273
QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(_fromUtf8("rejected()")), self.reject)
9374
QtCore.QMetaObject.connectSlotsByName(dialog)
9475

95-
#===============================================================================
96-
# def somethingDependsOnThisParameter(self, parent):
97-
# for param in self.alg.parameters:
98-
# if isinstance(param, ParameterTableField):
99-
# if param.parent == parent.name:
100-
# return True
101-
# return False
102-
#
103-
# def getWidgetFromParameter(self, param):
104-
# if isinstance(param, ParameterRaster):
105-
# layers = QGisLayers.getRasterLayers()
106-
# items = []
107-
# if (param.optional):
108-
# items.append((self.NOT_SELECTED, None))
109-
# for layer in layers:
110-
# items.append((layer.name(), layer))
111-
# item = InputLayerSelectorPanel(items)
112-
# elif isinstance(param, ParameterVector):
113-
# if self.somethingDependsOnThisParameter(param):
114-
# item = QtGui.QComboBox()
115-
# layers = QGisLayers.getVectorLayers(param.shapetype)
116-
# if (param.optional):
117-
# item.addItem(self.NOT_SELECTED, None)
118-
# for layer in layers:
119-
# item.addItem(layer.name(), layer)
120-
# item.currentIndexChanged.connect(self.updateDependentFields)
121-
# item.name = param.name
122-
# else:
123-
# layers = QGisLayers.getVectorLayers(param.shapetype)
124-
# items = []
125-
# if (param.optional):
126-
# items.append((self.NOT_SELECTED, None))
127-
# for layer in layers:
128-
# items.append((layer.name(), layer))
129-
# item = InputLayerSelectorPanel(items)
130-
# elif isinstance(param, ParameterTable):
131-
# if self.somethingDependsOnThisParameter(param):
132-
# item = QtGui.QComboBox()
133-
# layers = QGisLayers.getTables()
134-
# if (param.optional):
135-
# item.addItem(self.NOT_SELECTED, None)
136-
# for layer in layers:
137-
# item.addItem(layer.name(), layer)
138-
# item.currentIndexChanged.connect(self.updateDependentFields)
139-
# item.name = param.name
140-
# else:
141-
# layers = QGisLayers.getTables()
142-
# items = []
143-
# if (param.optional):
144-
# items.append((self.NOT_SELECTED, None))
145-
# for layer in layers:
146-
# items.append((layer.name(), layer))
147-
# item = InputLayerSelectorPanel(items)
148-
# elif isinstance(param, ParameterBoolean):
149-
# item = QtGui.QComboBox()
150-
# item.addItem("Yes")
151-
# item.addItem("No")
152-
# if param.default:
153-
# item.setCurrentIndex(0)
154-
# else:
155-
# item.setCurrentIndex(1)
156-
# elif isinstance(param, ParameterTableField):
157-
# item = QtGui.QComboBox()
158-
# if param.parent in self.dependentItems:
159-
# items = self.dependentItems[param.parent]
160-
# else:
161-
# items = []
162-
# self.dependentItems[param.parent] = items
163-
# items.append(param.name)
164-
# parent = self.alg.getParameterFromName(param.parent)
165-
# if isinstance(parent, ParameterVector):
166-
# layers = QGisLayers.getVectorLayers(parent.shapetype)
167-
# else:
168-
# layers = QGisLayers.getTables()
169-
# if len(layers)>0:
170-
# fields = self.getFields(layers[0])
171-
# for i in fields:
172-
# item.addItem(fields[i].name())
173-
# elif isinstance(param, ParameterSelection):
174-
# item = QtGui.QComboBox()
175-
# item.addItems(param.options)
176-
# item.setCurrentIndex(param.default)
177-
# elif isinstance(param, ParameterFixedTable):
178-
# item = FixedTablePanel(param)
179-
# elif isinstance(param, ParameterRange):
180-
# item = RangePanel(param)
181-
# elif isinstance(param, ParameterMultipleInput):
182-
# if param.datatype == ParameterMultipleInput.TYPE_RASTER:
183-
# options = QGisLayers.getRasterLayers()
184-
# elif param.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
185-
# options = QGisLayers.getVectorLayers()
186-
# else:
187-
# options = QGisLayers.getVectorLayers(param.datatype)
188-
# opts = []
189-
# for opt in options:
190-
# opts.append(opt.name())
191-
# item = MultipleInputPanel(opts)
192-
# elif isinstance(param, ParameterNumber):
193-
# item = NumberInputPanel(param.default, param.isInteger)
194-
# elif isinstance(param, ParameterExtent):
195-
# item = ExtentSelectionPanel(self.dialog, param.default)
196-
# else:
197-
# item = QtGui.QLineEdit()
198-
# item.setText(str(param.default))
199-
#
200-
# return item
201-
#
202-
# def updateDependentFields(self):
203-
# sender = self.dialog.sender()
204-
# if not isinstance(sender, QComboBox):
205-
# return
206-
# if not sender.name in self.dependentItems:
207-
# return
208-
# layer = sender.itemData(sender.currentIndex()).toPyObject()
209-
# children = self.dependentItems[sender.name]
210-
# for child in children:
211-
# widget = self.valueItems[child]
212-
# widget.clear()
213-
# fields = self.getFields(layer)
214-
# for i in fields:
215-
# widget.addItem(fields[i].name())
216-
#
217-
#
218-
# def getFields(self, layer):
219-
# return layer.dataProvider().fields()
220-
#===============================================================================
221-
22276
def showHelp(self):
22377
if self.alg.helpFile():
22478
dlg = HTMLViewerDialog(self.alg.helpFile())
22579
dlg.exec_()
22680
else:
22781
QMessageBox.warning(self.dialog, "No help available", "No help is available for the current algorithm.")
22882

229-
#===============================================================================
230-
# def setTableContent(self):
231-
# params = self.alg.parameters
232-
# outputs = self.alg.outputs
233-
# numParams = len(self.alg.parameters)
234-
# numOutputs = 0
235-
# for output in outputs:
236-
# if not output.hidden:
237-
# numOutputs += 1
238-
# self.tableWidget.setRowCount(numParams + numOutputs)
239-
#
240-
# i=0
241-
# for param in params:
242-
# item = QtGui.QTableWidgetItem(param.description)
243-
# item.setFlags(QtCore.Qt.ItemIsEnabled)
244-
# self.tableWidget.setItem(i,0, item)
245-
# item = self.getWidgetFromParameter(param)
246-
# self.valueItems[param.name] = item
247-
# self.tableWidget.setCellWidget(i,1, item)
248-
# self.tableWidget.setRowHeight(i,22)
249-
# i+=1
250-
#
251-
# for output in outputs:
252-
# if output.hidden:
253-
# continue
254-
# item = QtGui.QTableWidgetItem(output.description + "<" + output.__module__.split(".")[-1] + ">")
255-
# item.setFlags(QtCore.Qt.ItemIsEnabled)
256-
# self.tableWidget.setItem(i,0, item)
257-
# item = OutputSelectionPanel(output,self.alg)
258-
# self.valueItems[output.name] = item
259-
# self.tableWidget.setCellWidget(i,1, item)
260-
# self.tableWidget.setRowHeight(i,22)
261-
# i+=1
262-
#
263-
# self.fillParameterValuesFromHistory()
264-
#
265-
# def fillParameterValuesFromHistory(self):
266-
# pass
267-
#===============================================================================
26883

26984
def setParamValues(self):
27085
params = self.alg.parameters
@@ -317,12 +132,28 @@ def setParamValue(self, param, widget):
317132
def accept(self):
318133
try:
319134
if self.setParamValues():
320-
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
321-
SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, self.alg.getAsCommand())
322-
ret = AlgorithmExecutor.runalg(self.alg, self)
323-
QApplication.restoreOverrideCursor()
324-
if ret:
325-
SextantePostprocessing.handleAlgorithmResults(self.alg)
135+
buttons = self.paramTable.iterateButtons
136+
iterateParam = None
137+
for i in range(len(buttons.values())):
138+
button = buttons.values()[i]
139+
if button.isChecked():
140+
iterateParam = buttons.keys()[i]
141+
break
142+
if iterateParam:
143+
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
144+
#SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, self.alg.getAsCommand())
145+
ret = AlgorithmExecutor.runalgIterating(self.alg, iterateParam, self)
146+
QApplication.restoreOverrideCursor()
147+
#if ret:
148+
#SextantePostprocessing.handleAlgorithmResults(self.alg)
149+
else:
150+
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
151+
SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, self.alg.getAsCommand())
152+
ret = AlgorithmExecutor.runalg(self.alg, self)
153+
QApplication.restoreOverrideCursor()
154+
if ret:
155+
SextantePostprocessing.handleAlgorithmResults(self.alg)
156+
326157
self.dialog.executed = True
327158
self.dialog.close()
328159

0 commit comments

Comments
 (0)