Skip to content

Commit

Permalink
fill in inputs in the Processing batch dialog starting from the first
Browse files Browse the repository at this point in the history
empty row (fix #43869)
  • Loading branch information
alexbruy authored and nyalldawson committed Jun 18, 2022
1 parent 2ff958f commit cf1f85b
Showing 1 changed file with 18 additions and 9 deletions.
27 changes: 18 additions & 9 deletions python/plugins/processing/gui/BatchPanel.py
Expand Up @@ -177,6 +177,19 @@ def createMenu(self):
select_layer_action.triggered.connect(self.showLayerSelectionDialog)
self.menu.addAction(select_layer_action)

def findStartingRow(self):
first_row = 0
for row in range(self.panel.batchRowCount()):
wrapper = self.panel.wrappers[row][self.column]
if wrapper is None:
break
else:
value = wrapper.parameterValue()
if value is None:
break
first_row += 1
return first_row

def fillDown(self):
"""
Copy the top value down
Expand Down Expand Up @@ -218,8 +231,7 @@ def addFilesByPattern(self):
files = dlg.files()
context = dataobjects.createContext()

first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
self.panel.addRow(len(files))
first_row = self.findStartingRow()
self.panel.tblParameters.setUpdatesEnabled(False)
for row, file in enumerate(files):
self.setRowValue(first_row + row, file, context)
Expand All @@ -243,8 +255,7 @@ def showFileSelectionDialog(self):

context = dataobjects.createContext()

first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
self.panel.addRow(len(files))
first_row = self.findStartingRow()
self.panel.tblParameters.setUpdatesEnabled(False)
for row, file in enumerate(files):
self.setRowValue(first_row + row, file, context)
Expand Down Expand Up @@ -284,8 +295,7 @@ def showDirectorySelectionDialog(self):

context = dataobjects.createContext()

first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
self.panel.addRow(len(files))
first_row = self.findStartingRow()
self.panel.tblParameters.setUpdatesEnabled(False)
for row, file in enumerate(files):
self.setRowValue(first_row + row, file, context)
Expand Down Expand Up @@ -329,7 +339,7 @@ def showLayerSelectionDialog(self):

context = dataobjects.createContext()

first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
first_row = self.findStartingRow()
for row, selected_idx in enumerate(selected):
value = layers[selected_idx].id()
self.setRowValue(first_row + row, value, context)
Expand Down Expand Up @@ -386,8 +396,7 @@ def populateByExpression(self, adding=False):
if type(res) is not list:
res = [res]

first_row = self.panel.batchRowCount() if self.panel.batchRowCount() > 1 else 0
self.panel.addRow(len(res))
first_row = self.findStartingRow()
self.panel.tblParameters.setUpdatesEnabled(False)
for row, value in enumerate(res):
self.setRowValue(row + first_row, value, context)
Expand Down

0 comments on commit cf1f85b

Please sign in to comment.