Skip to content

Commit 0a7bb48

Browse files
committed
Allow selecting multiple items in processing multi layer input dialog
And selecting/deselecting only these items. Otherwise it can be quite cumbersome to manually select complex sets of items (e.g. try needing to select ~50% of the layers in a large project - there's currently no quick way to do this.) With this change you can at least ctrl/shift click to create selections quicker.
1 parent 1f2ea02 commit 0a7bb48

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

python/plugins/processing/gui/MultipleInputDialog.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ def __init__(self, options, selectedoptions=None, datatype=None):
8787
self.settings = QgsSettings()
8888
self.restoreGeometry(self.settings.value("/Processing/multipleInputDialogGeometry", QByteArray()))
8989

90+
self.lstLayers.setSelectionMode(QAbstractItemView.ExtendedSelection)
9091
self.populateList()
9192
self.finished.connect(self.saveWindowGeometry)
9293

@@ -125,16 +126,22 @@ def reject(self):
125126
self.selectedoptions = None
126127
QDialog.reject(self)
127128

129+
def getItemsToModify(self):
130+
items = []
131+
if len(self.lstLayers.selectedIndexes()) > 1:
132+
for i in self.lstLayers.selectedIndexes():
133+
items.append(self.model.itemFromIndex(i))
134+
else:
135+
for i in range(self.model.rowCount()):
136+
items.append(self.model.item(i))
137+
return items
138+
128139
def selectAll(self, value):
129-
model = self.lstLayers.model()
130-
for i in range(model.rowCount()):
131-
item = model.item(i)
140+
for item in self.getItemsToModify():
132141
item.setCheckState(Qt.Checked if value else Qt.Unchecked)
133142

134143
def toggleSelection(self):
135-
model = self.lstLayers.model()
136-
for i in range(model.rowCount()):
137-
item = model.item(i)
144+
for item in self.getItemsToModify():
138145
checked = item.checkState() == Qt.Checked
139146
item.setCheckState(Qt.Unchecked if checked else Qt.Checked)
140147

0 commit comments

Comments
 (0)