Add sequential task queue for processing algorithms#64262
Add sequential task queue for processing algorithms#64262lanckmann wants to merge 12 commits intoqgis:masterfrom
Conversation
🪟 Windows Qt6 buildsDownload Windows Qt6 builds of this PR for testing. 🍎 MacOS Qt6 buildsDownload MacOS Qt6 builds of this PR for testing. |
|
@lanckmann the goal for processing is to minimise the python code. Can you move all this logic to the C++ classes? |
|
@nyalldawson Thanks, that was actually my initial idea as well. I hesitated because I wasn’t sure how much we’re allowed to change in the QGIS core and create new C++ classes. But if that’s fine, then yes, I’ll move the logic into the C++ classes and minimise the Python part. |
|
@lanckmann yes please -- the python based code proved to be a maintenance nightmare. Note that you'll also need to add appropriate unit tests covering this work too |
d576741 to
1c497ad
Compare
1c497ad to
5386265
Compare
…thmdialogbase.cpp
|
The QGIS project highly values your contribution and would love to see this work merged! Unfortunately this PR has not had any activity in the last 14 days and is being automatically marked as "stale". If you think this pull request should be merged, please check
|
|
!! |
|
The QGIS project highly values your contribution and would love to see this work merged! Unfortunately this PR has not had any activity in the last 14 days and is being automatically marked as "stale". If you think this pull request should be merged, please check
|
|
No stale! |
There was a problem hiding this comment.
Hi @lanckmann
Only commenting design wise, I didn't had a look at the code
I think it is an interesting feature to explore, maybe you should go through a QEP process. This way you can gather feedbacks, and avoid common pitfalls. You would have a higher likelyhood to get this merged
| QCoreApplication.translate("ProcessingToolbox", "Add to Queue…"), | ||
| popupmenu, | ||
| ) | ||
| addToQueueAction.triggered.connect(self.addAlgorithmToQueue) |
There was a problem hiding this comment.
This buttons act the same as the regular "Execute..."
|
|
||
| # connect to existing providers | ||
| self.queueButton = QToolButton() | ||
| self.queueButton.setIcon(QgsApplication.getThemeIcon("/mTaskRunning.svg")) |
There was a problem hiding this comment.
The running icon is not the most suitable, maybe something inspired by the queue data structure would be better ?
| mButtonBox->addButton( mAdvancedButton, QDialogButtonBox::ResetRole ); | ||
|
|
||
| mButtonAddToQueue = new QPushButton( tr( "Add to Queue…" ) ); | ||
| mButtonBox->addButton( mButtonAddToQueue, QDialogButtonBox::ResetRole ); |

Add sequential task queue for processing algorithms queue multiple
different algorithms for sequential execution to avoid system overload.
Implements #55564