Skip to content

Commit e5ebcd1

Browse files
authored
Merge pull request #4206 from volaya/fix_processing_provider_update
[processing] fixed update of toolbox after editing script providers
2 parents fb409b5 + 51da47d commit e5ebcd1

File tree

6 files changed

+15
-17
lines changed

6 files changed

+15
-17
lines changed

python/plugins/processing/core/Processing.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -172,11 +172,12 @@ def removeScripts(folder):
172172
def updateAlgsList():
173173
"""Call this method when there has been any change that
174174
requires the list of algorithms to be created again from
175-
algorithm providers.
175+
algorithm providers. Use reloadProvider() for a more fine-grained
176+
update.
176177
"""
177178
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
178179
for p in Processing.providers:
179-
Processing.reloadProvider(p)
180+
Processing.reloadProvider(p.id())
180181
QApplication.restoreOverrideCursor()
181182

182183
@staticmethod

python/plugins/processing/core/alglist.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,14 @@ class AlgorithmList(QObject):
3838
# and values are list with all algorithms from that provider
3939
algs = {}
4040

41-
providers = []
42-
4341
def removeProvider(self, provider_id):
4442
if provider_id in self.algs:
4543
del self.algs[provider_id]
4644

4745
QgsApplication.processingRegistry().removeProvider(provider_id)
4846

4947
def reloadProvider(self, provider_id):
50-
for p in self.providers:
48+
for p in QgsApplication.processingRegistry().providers():
5149
if p.id() == provider_id:
5250
p.loadAlgorithms()
5351
self.algs[p.id()] = {a.commandLineName(): a for a in p.algs}

python/plugins/processing/gui/CreateNewScriptAction.py

-5
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,3 @@ def execute(self):
6262
if self.scriptType == self.SCRIPT_R:
6363
dlg = ScriptEditorDialog(ScriptEditorDialog.SCRIPT_R, None)
6464
dlg.show()
65-
if dlg.update:
66-
if self.scriptType == self.SCRIPT_PYTHON:
67-
algList.reloadProvider('script')
68-
elif self.scriptType == self.SCRIPT_R:
69-
algList.reloadProvider('r')

python/plugins/processing/gui/EditScriptAction.py

-6
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,3 @@ def isEnabled(self):
5050
def execute(self):
5151
dlg = ScriptEditorDialog(self.scriptType, self.itemData)
5252
dlg.show()
53-
dlg.exec_()
54-
if dlg.update:
55-
if self.scriptType == ScriptEditorDialog.SCRIPT_PYTHON:
56-
algList.reloadProvider('script')
57-
elif self.scriptType == ScriptEditorDialog.SCRIPT_R:
58-
algList.reloadProvider('r')

python/plugins/processing/gui/ProcessingToolbox.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ def __init__(self, provider_id, tree, toolbox):
385385

386386
def refresh(self):
387387
self.takeChildren()
388-
Processing.updateAlgsList()
388+
#Processing.updateAlgsList()
389389
self.populate()
390390

391391
def populate(self):

python/plugins/processing/gui/ScriptEditorDialog.py

+10
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
from processing.algs.r.RUtils import RUtils
5050
from processing.script.ScriptAlgorithm import ScriptAlgorithm
5151
from processing.script.ScriptUtils import ScriptUtils
52+
from processing.core.alglist import algList
5253

5354
pluginPath = os.path.split(os.path.dirname(__file__))[0]
5455
WIDGET, BASE = uic.loadUiType(
@@ -169,12 +170,21 @@ def closeEvent(self, evt):
169170
QMessageBox.Yes | QMessageBox.No, QMessageBox.No
170171
)
171172
if ret == QMessageBox.Yes:
173+
self.updateProviders()
172174
evt.accept()
173175
else:
174176
evt.ignore()
175177
else:
178+
self.updateProviders()
176179
evt.accept()
177180

181+
def updateProviders(self):
182+
if self.update:
183+
if self.algType == self.SCRIPT_PYTHON:
184+
algList.reloadProvider('script')
185+
elif self.algType == self.SCRIPT_R:
186+
algList.reloadProvider('r')
187+
178188
def editHelp(self):
179189
if self.alg is None:
180190
if self.algType == self.SCRIPT_PYTHON:

0 commit comments

Comments
 (0)