mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-15 00:02:52 -04:00
[processing] Make batch process faster (#38989)
This commit is contained in:
parent
c1702db1be
commit
931136879c
@ -224,8 +224,11 @@ class BatchPanelFillWidget(QToolButton):
|
||||
context = dataobjects.createContext()
|
||||
|
||||
first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
|
||||
self.panel.addRow(len(files))
|
||||
self.panel.tblParameters.setUpdatesEnabled(False)
|
||||
for row, file in enumerate(files):
|
||||
self.setRowValue(first_row + row, file, context)
|
||||
self.panel.tblParameters.setUpdatesEnabled(True)
|
||||
|
||||
def showFileSelectionDialog(self):
|
||||
settings = QgsSettings()
|
||||
@ -246,8 +249,11 @@ class BatchPanelFillWidget(QToolButton):
|
||||
context = dataobjects.createContext()
|
||||
|
||||
first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
|
||||
self.panel.addRow(len(files))
|
||||
self.panel.tblParameters.setUpdatesEnabled(False)
|
||||
for row, file in enumerate(files):
|
||||
self.setRowValue(first_row + row, file, context)
|
||||
self.panel.tblParameters.setUpdatesEnabled(True)
|
||||
|
||||
def showDirectorySelectionDialog(self):
|
||||
settings = QgsSettings()
|
||||
@ -283,8 +289,11 @@ class BatchPanelFillWidget(QToolButton):
|
||||
context = dataobjects.createContext()
|
||||
|
||||
first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
|
||||
self.panel.addRow(len(files))
|
||||
self.panel.tblParameters.setUpdatesEnabled(False)
|
||||
for row, file in enumerate(files):
|
||||
self.setRowValue(first_row + row, file, context)
|
||||
self.panel.tblParameters.setUpdatesEnabled(True)
|
||||
|
||||
def showLayerSelectionDialog(self):
|
||||
layers = []
|
||||
@ -382,9 +391,13 @@ class BatchPanelFillWidget(QToolButton):
|
||||
res = [res]
|
||||
|
||||
first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
|
||||
self.panel.addRow(len(res))
|
||||
self.panel.tblParameters.setUpdatesEnabled(False)
|
||||
for row, value in enumerate(res):
|
||||
self.setRowValue(row + first_row, value, context)
|
||||
self.panel.tblParameters.setUpdatesEnabled(True)
|
||||
else:
|
||||
self.panel.tblParameters.setUpdatesEnabled(False)
|
||||
for row in range(self.panel.batchRowCount()):
|
||||
params, ok = self.panel.parametersForRow(row, warnOnInvalid=False)
|
||||
|
||||
@ -406,6 +419,7 @@ class BatchPanelFillWidget(QToolButton):
|
||||
exp = QgsExpression(dlg.expressionText())
|
||||
value = exp.evaluate(expression_context)
|
||||
self.setRowValue(row, value, context)
|
||||
self.panel.tblParameters.setUpdatesEnabled(True)
|
||||
|
||||
|
||||
class BatchPanel(QgsPanelWidget, WIDGET):
|
||||
@ -655,34 +669,39 @@ class BatchPanel(QgsPanelWidget, WIDGET):
|
||||
param_definition = self.alg.parameterDefinition(self.column_to_parameter_definition[col])
|
||||
self.tblParameters.setCellWidget(0, col, BatchPanelFillWidget(param_definition, col, self))
|
||||
|
||||
def addRow(self):
|
||||
self.wrappers.append([None] * self.tblParameters.columnCount())
|
||||
self.tblParameters.setRowCount(self.tblParameters.rowCount() + 1)
|
||||
def addRow(self, nb=1):
|
||||
self.tblParameters.setUpdatesEnabled(False)
|
||||
self.tblParameters.setRowCount(self.tblParameters.rowCount() + nb)
|
||||
|
||||
context = dataobjects.createContext()
|
||||
|
||||
wrappers = {}
|
||||
row = self.tblParameters.rowCount() - 1
|
||||
for param in self.alg.parameterDefinitions():
|
||||
if param.isDestination():
|
||||
continue
|
||||
row = self.tblParameters.rowCount() - nb
|
||||
while row < self.tblParameters.rowCount():
|
||||
self.wrappers.append([None] * self.tblParameters.columnCount())
|
||||
for param in self.alg.parameterDefinitions():
|
||||
if param.isDestination():
|
||||
continue
|
||||
|
||||
column = self.parameter_to_column[param.name()]
|
||||
wrapper = WidgetWrapperFactory.create_wrapper(param, self.parent, row, column)
|
||||
wrappers[param.name()] = wrapper
|
||||
self.setCellWrapper(row, column, wrapper, context)
|
||||
column = self.parameter_to_column[param.name()]
|
||||
wrapper = WidgetWrapperFactory.create_wrapper(param, self.parent, row, column)
|
||||
wrappers[param.name()] = wrapper
|
||||
self.setCellWrapper(row, column, wrapper, context)
|
||||
|
||||
for out in self.alg.destinationParameterDefinitions():
|
||||
if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
for out in self.alg.destinationParameterDefinitions():
|
||||
if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
|
||||
column = self.parameter_to_column[out.name()]
|
||||
self.tblParameters.setCellWidget(
|
||||
row, column, BatchOutputSelectionPanel(
|
||||
out, self.alg, row, column, self))
|
||||
column = self.parameter_to_column[out.name()]
|
||||
self.tblParameters.setCellWidget(
|
||||
row, column, BatchOutputSelectionPanel(
|
||||
out, self.alg, row, column, self))
|
||||
|
||||
for wrapper in list(wrappers.values()):
|
||||
wrapper.postInitialize(list(wrappers.values()))
|
||||
for wrapper in list(wrappers.values()):
|
||||
wrapper.postInitialize(list(wrappers.values()))
|
||||
row += 1
|
||||
|
||||
self.tblParameters.setUpdatesEnabled(True)
|
||||
|
||||
def removeRows(self):
|
||||
rows = set()
|
||||
|
Loading…
x
Reference in New Issue
Block a user