def __init__(self, alg): AlgorithmDialogBase.__init__(self, alg) self.alg = alg self.setWindowTitle(self.tr('Batch Processing - %s') % self.alg.name) self.mainWidget = BatchPanel(self, self.alg) self.setMainWidget()
def __init__(self, alg): super().__init__() self.setAlgorithm(alg) self.setWindowTitle(self.tr('Batch Processing - {0}').format(self.algorithm().displayName())) self.setMainWidget(BatchPanel(self, self.algorithm())) self.hideShortHelp()
def __init__(self, alg): AlgorithmDialogBase.__init__(self, alg) self.alg = alg self.setWindowTitle(self.tr("Batch Processing - %s") % self.alg.name) self.mainWidget = BatchPanel(self, self.alg) self.setMainWidget() self.textShortHelp.setVisible(False)
def __init__(self, alg, parent=None): super().__init__(parent) self.setAlgorithm(alg) self.setWindowTitle(self.tr('Batch Processing - {0}').format(self.algorithm().displayName())) self.setMainWidget(BatchPanel(self, self.algorithm())) self.hideShortHelp() self.btnRunSingle = QPushButton(QCoreApplication.translate('BatchAlgorithmDialog', "Run as Single Process…")) self.btnRunSingle.clicked.connect(self.runAsSingle) self.buttonBox().addButton(self.btnRunSingle, QDialogButtonBox.ResetRole) # reset role to ensure left alignment
def __init__(self, alg): AlgorithmDialogBase.__init__(self, alg) self.alg = alg self.setWindowTitle(self.tr('Batch Processing - {0}').format(self.alg.displayName())) self.setMainWidget(BatchPanel(self, self.alg)) self.textShortHelp.setVisible(False) self.bar = QgsMessageBar() self.bar.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) self.layout().insertWidget(0, self.bar)
class BatchAlgorithmDialog(AlgorithmDialogBase): def __init__(self, alg): AlgorithmDialogBase.__init__(self, alg) self.alg = alg self.setWindowTitle(self.tr('Batch Processing - %s') % self.alg.name) self.mainWidget = BatchPanel(self, self.alg) self.setMainWidget() self.textShortHelp.setVisible(False) def accept(self): self.algs = [] self.load = [] self.canceled = False for row in range(self.mainWidget.tblParameters.rowCount()): alg = self.alg.getCopy() col = 0 for param in alg.parameters: if param.hidden: continue widget = self.mainWidget.tblParameters.cellWidget(row, col) if not self.mainWidget.setParamValue(param, widget, alg): self.lblProgress.setText( self.tr('<b>Missing parameter value: %s (row %d)</b>') % (param.description, row + 1)) self.algs = None return col += 1 for out in alg.outputs: if out.hidden: continue widget = self.mainWidget.tblParameters.cellWidget(row, col) text = widget.getValue() if text.strip() != '': out.value = text col += 1 else: self.lblProgress.setText( self. tr('<b>Wrong or missing parameter value: %s (row %d)</b>' ) % (out.description, row + 1)) self.algs = None return self.algs.append(alg) if self.alg.getVisibleOutputsCount(): widget = self.mainWidget.tblParameters.cellWidget(row, col) self.load.append(widget.currentIndex() == 0) else: self.load.append(False) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.mainWidget.setEnabled(False) self.progressBar.setMaximum(len(self.algs)) # Make sure the Log tab is visible before executing the algorithm try: self.tabWidget.setCurrentIndex(1) self.repaint() except: pass for count, alg in enumerate(self.algs): self.setText( self.tr('\nProcessing algorithm %d/%d...') % (count + 1, len(self.algs))) self.setInfo(self.tr('<b>Algorithm %s starting...</b>' % alg.name)) if runalg(alg, self) and not self.canceled: if self.load[count]: handleAlgorithmResults(alg, self, False) self.setInfo( self.tr('Algorithm %s correctly executed...') % alg.name) else: QApplication.restoreOverrideCursor() return self.finish() def finish(self): for count, alg in enumerate(self.algs): self.loadHTMLResults(alg, count) self.createSummaryTable() QApplication.restoreOverrideCursor() self.mainWidget.setEnabled(True) QMessageBox.information(self, self.tr('Batch processing'), self.tr('Batch processing completed')) def loadHTMLResults(self, alg, num): for out in alg.outputs: if out.hidden or not out.open: continue if isinstance(out, OutputHTML): ProcessingResults.addResult( '{} [{}]'.format(out.description, num), out.value) def createSummaryTable(self): createTable = False for out in self.algs[0].outputs: if isinstance(out, (OutputNumber, OutputString)): createTable = True break if not createTable: return outputFile = getTempFilename('html') with codecs.open(outputFile, 'w', encoding='utf-8') as f: for alg in self.algs: f.write('<hr>\n') for out in alg.outputs: if isinstance(out, (OutputNumber, OutputString)): f.write('<p>{}: {}</p>\n'.format( out.description, out.value)) f.write('<hr>\n') ProcessingResults.addResult('{} [summary]'.format(self.algs[0].name), outputFile)
class BatchAlgorithmDialog(AlgorithmDialogBase): def __init__(self, alg): AlgorithmDialogBase.__init__(self, alg) self.alg = alg self.setWindowTitle(self.tr('Batch Processing - %s') % self.alg.name) self.mainWidget = BatchPanel(self, self.alg) self.setMainWidget() self.textShortHelp.setVisible(False) def accept(self): self.algs = [] self.load = [] self.canceled = False for row in range(self.mainWidget.tblParameters.rowCount()): alg = self.alg.getCopy() col = 0 for param in alg.parameters: if param.hidden: continue widget = self.mainWidget.tblParameters.cellWidget(row, col) if not self.mainWidget.setParamValue(param, widget, alg): self.lblProgress.setText( self.tr('<b>Missing parameter value: %s (row %d)</b>') % (param.description, row + 1)) self.algs = None return col += 1 for out in alg.outputs: if out.hidden: continue widget = self.mainWidget.tblParameters.cellWidget(row, col) text = widget.getValue() if text.strip() != '': out.value = text col += 1 else: self.lblProgress.setText( self.tr('<b>Wrong or missing parameter value: %s (row %d)</b>') % (out.description, row + 1)) self.algs = None return self.algs.append(alg) if self.alg.getVisibleOutputsCount(): widget = self.mainWidget.tblParameters.cellWidget(row, col) self.load.append(widget.currentIndex() == 0) else: self.load.append(False) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.mainWidget.setEnabled(False) self.progressBar.setMaximum(len(self.algs)) # Make sure the Log tab is visible before executing the algorithm try: self.tabWidget.setCurrentIndex(1) self.repaint() except: pass for count, alg in enumerate(self.algs): self.setText(self.tr('\nProcessing algorithm %d/%d...') % (count + 1, len(self.algs))) self.setInfo(self.tr('<b>Algorithm %s starting...</b>' % alg.name)) if runalg(alg, self) and not self.canceled: if self.load[count]: handleAlgorithmResults(alg, self, False) self.setInfo(self.tr('Algorithm %s correctly executed...') % alg.name) else: QApplication.restoreOverrideCursor() return self.finish() def finish(self): for count, alg in enumerate(self.algs): self.loadHTMLResults(alg, count) self.createSummaryTable() QApplication.restoreOverrideCursor() self.mainWidget.setEnabled(True) QMessageBox.information(self, self.tr('Batch processing'), self.tr('Batch processing completed')) def loadHTMLResults(self, alg, num): for out in alg.outputs: if out.hidden or not out.open: continue if isinstance(out, OutputHTML): ProcessingResults.addResult( '{} [{}]'.format(out.description, num), out.value) def createSummaryTable(self): createTable = False for out in self.algs[0].outputs: if isinstance(out, (OutputNumber, OutputString)): createTable = True break if not createTable: return outputFile = getTempFilename('html') with codecs.open(outputFile, 'w', encoding='utf-8') as f: for alg in self.algs: f.write('<hr>\n') for out in alg.outputs: if isinstance(out, (OutputNumber, OutputString)): f.write('<p>{}: {}</p>\n'.format(out.description, out.value)) f.write('<hr>\n') ProcessingResults.addResult( '{} [summary]'.format(self.algs[0].name), outputFile)