Skip to content

Commit 4bf3dc3

Browse files
author
cpolymeris@gmail.com
committed
Batch processing in separate thread.
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@235 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent 977c794 commit 4bf3dc3

File tree

2 files changed

+32
-9
lines changed

2 files changed

+32
-9
lines changed

src/sextante/gui/BatchProcessingDialog.py

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,19 +95,16 @@ def okPressed(self):
9595
QMessageBox.critical(self, "Unable to execute batch process", "Wrong or missing parameter values")
9696
self.algs = None
9797
return
98-
row+=1
98+
#~ row+=1 ??? - why?
9999
self.algs.append(alg)
100100

101101
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
102102
self.progress.setMaximum(len(self.algs))
103-
for alg in self.algs:
104-
algEx = AlgorithmExecutor(alg);
105-
algEx.start()
106-
107-
QApplication.restoreOverrideCursor()
108-
QMessageBox.information(self, "Batch processing", "Batch processing successfully completed!")
109-
self.close()
110-
103+
self.progress.setValue(0)
104+
self.nextAlg(0)
105+
106+
self.table.setEnabled(False)
107+
111108
def loadHTMLResults(self, alg, i):
112109
for out in alg.outputs:
113110
if out.hidden or not out.open:
@@ -119,6 +116,31 @@ def cancelPressed(self):
119116
self.algs = None
120117
self.close()
121118

119+
@pyqtSlot()
120+
def finish(self, i):
121+
i += 1
122+
self.progress.setValue(i)
123+
if len(self.algs) == i:
124+
self.finishAll()
125+
self.algEx = None
126+
else:
127+
self.nextAlg(i)
128+
129+
def nextAlg(self, i):
130+
self.algEx = AlgorithmExecutor(self.algs[i]);
131+
self.algEx.finished.connect(lambda: self.finish(i))
132+
self.algEx.start()
133+
134+
def finishAll(self):
135+
i = 0
136+
for alg in self.algs:
137+
self.loadHTMLResults(alg, i)
138+
i = i + 1
139+
QApplication.restoreOverrideCursor()
140+
self.table.setEnabled(True)
141+
QMessageBox.information(self, "Batch processing", "Batch processing successfully completed!")
142+
self.close()
143+
122144
def setParameterValueFromWidget(self, param, widget):
123145
if isinstance(param, (ParameterRaster, ParameterVector, ParameterTable, ParameterMultipleInput)):
124146
return param.setValue(widget.getText())

src/sextante/gui/ParametersDialog.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ def finish(self):
219219
def cancel(self):
220220
try:
221221
self.algEx.finished.disconnect()
222+
QApplication.restoreOverrideCursor()
222223
self.buttonBox.button(QtGui.QDialogButtonBox.Cancel).setEnabled(False)
223224
except:
224225
pass

0 commit comments

Comments
 (0)