def accept(self): self.algs = [] self.load = [] for row in range(self.table.rowCount()): alg = self.alg.getCopy() #copy.deepcopy(self.alg) col = 0 for param in alg.parameters: if param.hidden: continue widget = self.table.cellWidget(row, col) if not self.setParameterValueFromWidget(param, widget, alg): self.progressLabel.setText("<b>Missing parameter value: " + param.description + " (row " + str(row + 1) + ")</b>") self.algs = None return col += 1 for out in alg.outputs: if out.hidden: continue widget = self.table.cellWidget(row, col) text = widget.getValue() if text.strip() != "": out.value = text col += 1 else: self.progressLabel.setText( "<b>Wrong or missing parameter value: " + out.description + " (row " + str(row + 1) + ")</b>") self.algs = None return self.algs.append(alg) widget = self.table.cellWidget(row, col) self.load.append(widget.currentIndex() == 0) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.table.setEnabled(False) if SextanteConfig.getSetting(SextanteConfig.USE_THREADS): self.tabWidget.setCurrentIndex(1) self.nextAlg(0) else: i = 0 self.progress.setMaximum(len(self.algs)) for alg in self.algs: self.setBaseText("Processing algorithm " + str(i + 1) + "/" + str(len(self.algs)) + "...") if UnthreadedAlgorithmExecutor.runalg(alg, self): if self.load[i]: SextantePostprocessing.handleAlgorithmResults( alg, self, False) i += 1 else: QApplication.restoreOverrideCursor() return self.finishAll()
def accept(self): self.algs = [] self.load = [] for row in range(self.table.rowCount()): alg = self.alg.getCopy()#copy.deepcopy(self.alg) col = 0 for param in alg.parameters: if param.hidden: continue widget = self.table.cellWidget(row, col) if not self.setParameterValueFromWidget(param, widget, alg): self.progressLabel.setText("<b>Missing parameter value: " + param.description + " (row " + str(row + 1) + ")</b>") #QMessageBox.critical(self, "Unable to execute batch process", "Wrong or missing parameter values") self.algs = None return col+=1 for out in alg.outputs: if out.hidden: continue widget = self.table.cellWidget(row, col) text = widget.getValue() if text.strip() != "": out.value = text col+=1 else: self.progressLabel.setText("<b>Wrong or missing parameter value: " + out.description + " (row " + str(row + 1) + ")</b>") #QMessageBox.critical(self, "Unable to execute batch process", "Wrong or missing parameter values") self.algs = None return self.algs.append(alg) widget = self.table.cellWidget(row, col) self.load.append(widget.currentIndex() == 0) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.table.setEnabled(False) if SextanteConfig.getSetting(SextanteConfig.USE_THREADS): self.nextAlg(0) else: i=0 self.progress.setMaximum(len(self.algs)) for alg in self.algs: self.setBaseText("Processing algorithm " + str(i+1) + "/" + str(len(self.algs)) + "...") if UnthreadedAlgorithmExecutor.runalg(alg, self): #self.progress.setValue(i) #self.loadHTMLResults(alg, i) if self.load[i]: SextantePostprocessing.handleAlgorithmResults(alg, self, False) i+=1 else: QApplication.restoreOverrideCursor() return self.finishAll()
def accept(self): self.algs = [] for row in range(self.table.rowCount()): alg = self.alg.getCopy() #copy.deepcopy(self.alg) col = 0 for param in alg.parameters: if param.hidden: continue widget = self.table.cellWidget(row, col) if not self.setParameterValueFromWidget(param, widget, alg): QMessageBox.critical(self.dialog, "Unable to execute batch process", "Wrong or missing parameter values") self.algs = None return col += 1 for out in alg.outputs: if out.hidden: continue widget = self.table.cellWidget(row, col) text = widget.getValue() if text.strip() != "": out.value = text col += 1 else: QMessageBox.critical(self, "Unable to execute batch process", "Wrong or missing parameter values") self.algs = None return self.algs.append(alg) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.table.setEnabled(False) if SextanteConfig.getSetting(SextanteConfig.USE_THREADS): self.nextAlg(0) else: i = 1 self.progress.setMaximum(len(self.algs)) for alg in self.algs: self.setBaseText("Processing algorithm " + str(i) + "/" + str(len(self.algs)) + "...") if UnthreadedAlgorithmExecutor.runalg( alg, self): #SilentProgress()): #self.progress.setValue(i) #self.loadHTMLResults(alg, i) i += 1 else: QApplication.restoreOverrideCursor() return self.finishAll()
def accept(self): self.algs = [] for row in range(self.table.rowCount()): alg = self.alg.getCopy()#copy.deepcopy(self.alg) col = 0 for param in alg.parameters: widget = self.table.cellWidget(row, col) if not self.setParameterValueFromWidget(param, widget): QMessageBox.critical(self.dialog, "Unable to execute batch process", "Wrong or missing parameter values") self.algs = None return col+=1 for out in alg.outputs: widget = self.table.cellWidget(row, col) text = widget.getValue() if text.strip() != "": out.value = text col+=1 else: QMessageBox.critical(self, "Unable to execute batch process", "Wrong or missing parameter values") self.algs = None return self.algs.append(alg) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.progress.setMaximum(len(self.algs)) self.table.setEnabled(False) if SextanteConfig.getSetting(SextanteConfig.USE_THREADS): self.progress.setValue(0) self.nextAlg(0) else: i=1 self.progress.setMaximum(len(self.algs)) for alg in self.algs: if UnthreadedAlgorithmExecutor.runalg(alg, SilentProgress()): self.progress.setValue(i) self.loadHTMLResults(alg, i) i+=1 else: QApplication.restoreOverrideCursor() return self.finishAll()
def runAlgorithm(algOrName, onFinish, *args): if isinstance(algOrName, GeoAlgorithm): alg = algOrName else: alg = Sextante.getAlgorithm(algOrName) if alg == None: print("Error: Algorithm not found\n") return if len(args) != alg.getVisibleParametersCount() + alg.getVisibleOutputsCount(): print ("Error: Wrong number of parameters") sextante.alghelp(algOrName) return alg = alg.getCopy() if isinstance(args, dict): # set params by name for name, value in args.items(): if alg.getParameterFromName(name).setValue(value): continue; if alg.getOutputFromName(name).setValue(value): continue; print ("Error: Wrong parameter value %s for parameter %s." % (value, name)) return else: i = 0 for param in alg.parameters: if not param.hidden: if not param.setValue(args[i]): print ("Error: Wrong parameter value: " + unicode(args[i])) return i = i +1 for output in alg.outputs: if not output.hidden: if not output.setValue(args[i]): print ("Error: Wrong output value: " + unicode(args[i])) return i = i +1 msg = alg.checkParameterValuesBeforeExecuting() if msg: print ("Unable to execute algorithm\n" + msg) return if not alg.checkInputCRS(): print ("Warning: Not all input layers use the same CRS.\n" + "This can cause unexpected results.") SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, alg.getAsCommand()) # don't set the wait cursor twice, because then when you restore it # it will still be a wait cursor cursor = QApplication.overrideCursor() if cursor == None or cursor == 0: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) elif cursor.shape() != Qt.WaitCursor: QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) useThreads = SextanteConfig.getSetting(SextanteConfig.USE_THREADS) #this is doing strange things, so temporarily the thread execution is disabled from the console useThreads = False if useThreads: algEx = AlgorithmExecutor(alg) progress = QProgressDialog() progress.setWindowTitle(alg.name) progress.setLabelText("Executing %s..." % alg.name) def finish(): QApplication.restoreOverrideCursor() if onFinish is not None: onFinish(alg, SilentProgress()) progress.close() def error(msg): QApplication.restoreOverrideCursor() print msg SextanteLog.addToLog(SextanteLog.LOG_ERROR, msg) def cancel(): try: algEx.finished.disconnect() algEx.terminate() QApplication.restoreOverrideCursor() progress.close() except: pass algEx.error.connect(error) algEx.finished.connect(finish) algEx.start() algEx.wait() else: progress = SilentProgress() ret = UnthreadedAlgorithmExecutor.runalg(alg, progress) if onFinish is not None and ret: onFinish(alg, progress) QApplication.restoreOverrideCursor() return alg
def runAlgorithm(algOrName, onFinish, *args): if isinstance(algOrName, GeoAlgorithm): alg = algOrName else: alg = Sextante.getAlgorithm(algOrName) if alg == None: print("Error: Algorithm not found\n") return if len(args) != alg.getVisibleParametersCount() + alg.getVisibleOutputsCount(): print ("Error: Wrong number of parameters") Sextante.alghelp(algOrName) return alg = alg.getCopy()#copy.deepcopy(alg) if isinstance(args, dict): # set params by name for name, value in args.items(): if alg.getParameterFromName(name).setValue(value): continue; if alg.getOutputFromName(name).setValue(value): continue; print ("Error: Wrong parameter value %s for parameter %s." % (value, name)) return else: i = 0 for param in alg.parameters: if not param.hidden: if not param.setValue(args[i]): print ("Error: Wrong parameter value: " + args[i]) return i = i +1 for output in alg.outputs: if not output.hidden: if not output.setValue(args[i]): print ("Error: Wrong output value: " + args[i]) return i = i +1 msg = alg.checkParameterValuesBeforeExecuting() if msg: print ("Unable to execute algorithm\n" + msg) return SextanteLog.addToLog(SextanteLog.LOG_ALGORITHM, alg.getAsCommand()) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) if SextanteConfig.getSetting(SextanteConfig.USE_THREADS): algEx = AlgorithmExecutor(alg) progress = QProgressDialog() progress.setWindowTitle(alg.name) progress.setLabelText("Executing %s..." % alg.name) def finish(): QApplication.restoreOverrideCursor() if onFinish is not None: onFinish(alg) progress.close() def error(msg): QApplication.restoreOverrideCursor() print msg SextanteLog.addToLog(SextanteLog.LOG_ERROR, msg) def cancel(): try: algEx.finished.disconnect() algEx.terminate() QApplication.restoreOverrideCursor() progress.close() except: pass algEx.error.connect(error) algEx.finished.connect(finish) algEx.start() algEx.wait() else: ret = UnthreadedAlgorithmExecutor.runalg(alg, SilentProgress()) if onFinish is not None and ret: onFinish(alg) QApplication.restoreOverrideCursor() return alg