Skip to content

Commit 4c31bc4

Browse files
committed
[processing] config dialog: only save menu configuration if needed
Conflicts: python/plugins/processing/gui/ConfigDialog.py
1 parent f852603 commit 4c31bc4

File tree

1 file changed

+31
-22
lines changed

1 file changed

+31
-22
lines changed

python/plugins/processing/gui/ConfigDialog.py

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@
3131

3232
from qgis.PyQt import uic
3333
from qgis.PyQt.QtCore import (Qt,
34-
QEvent
35-
)
34+
QEvent)
3635
from qgis.PyQt.QtWidgets import (QFileDialog,
3736
QDialog,
3837
QStyle,
@@ -46,7 +45,9 @@
4645
QPushButton)
4746
from qgis.PyQt.QtGui import (QIcon,
4847
QStandardItemModel,
49-
QStandardItem)
48+
QStandardItem,
49+
QApplication,
50+
QCursor)
5051

5152
from qgis.gui import (QgsDoubleSpinBox,
5253
QgsSpinBox
@@ -58,8 +59,7 @@
5859
Setting)
5960
from processing.core.Processing import Processing
6061
from processing.gui.DirectorySelectorDialog import DirectorySelectorDialog
61-
from processing.gui.menus import defaultMenuEntries, updateMenus
62-
from processing.gui.menus import menusSettingsGroup
62+
from processing.gui.menus import defaultMenuEntries, updateMenus, menusSettingsGroup
6363

6464

6565
pluginPath = os.path.split(os.path.dirname(__file__))[0]
@@ -93,7 +93,8 @@ def __init__(self, toolbox):
9393

9494
self.fillTree()
9595

96-
self.tree.expanded.connect(self.adjustColumns)
96+
self.saveMenus = False
97+
self.tree.expanded.connect(self.itemExpanded)
9798

9899
def textChanged(self):
99100
text = str(self.searchBox.text().lower())
@@ -192,14 +193,14 @@ def fillTreeUsingProviders(self):
192193
"""
193194
Filter 'Menus' items
194195
"""
195-
menusItem = QStandardItem(self.tr('Menus'))
196+
self.menusItem = QStandardItem(self.tr('Menus'))
196197
icon = QIcon(os.path.join(pluginPath, 'images', 'menu.png'))
197-
menusItem.setIcon(icon)
198-
menusItem.setEditable(False)
198+
self.menusItem.setIcon(icon)
199+
self.menusItem.setEditable(False)
199200
emptyItem = QStandardItem()
200201
emptyItem.setEditable(False)
201202

202-
rootItem.insertRow(0, [menusItem, emptyItem])
203+
rootItem.insertRow(0, [self.menusItem, emptyItem])
203204

204205
button = QPushButton(self.tr('Reset to defaults'))
205206
button.clicked.connect(self.resetMenusToDefaults)
@@ -248,7 +249,7 @@ def fillTreeUsingProviders(self):
248249
emptyItem = QStandardItem()
249250
emptyItem.setEditable(False)
250251

251-
menusItem.appendRow([groupItem, emptyItem])
252+
self.menusItem.appendRow([groupItem, emptyItem])
252253

253254
self.tree.sortByColumn(0, Qt.AscendingOrder)
254255
self.adjustColumns()
@@ -261,24 +262,32 @@ def resetMenusToDefaults(self):
261262
setting = ProcessingConfig.settings["MENU_" + alg.commandLineName()]
262263
item = self.items[setting]
263264
item.setData(d, Qt.EditRole)
265+
self.saveMenus = True
264266

265267
def accept(self):
268+
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
266269
for setting in list(self.items.keys()):
267-
if isinstance(setting.value, bool):
268-
setting.setValue(self.items[setting].checkState() == Qt.Checked)
269-
else:
270-
try:
271-
setting.setValue(str(self.items[setting].text()))
272-
except ValueError as e:
273-
QMessageBox.warning(self, self.tr('Wrong value'),
274-
self.tr('Wrong value for parameter "%s":\n\n%s' % (setting.description, str(e))))
275-
return
276-
setting.save()
270+
if setting.group != menusSettingsGroup or self.saveMenus:
271+
if isinstance(setting.value, bool):
272+
setting.setValue(self.items[setting].checkState() == Qt.Checked)
273+
else:
274+
try:
275+
setting.setValue(str(self.items[setting].text()))
276+
except ValueError as e:
277+
QMessageBox.warning(self, self.tr('Wrong value'),
278+
self.tr('Wrong value for parameter "%s":\n\n%s' % (setting.description, str(e))))
279+
return
280+
setting.save()
277281
Processing.updateAlgsList()
278282
settingsWatcher.settingsChanged.emit()
279-
283+
QApplication.restoreOverrideCursor()
280284
QDialog.accept(self)
281285

286+
def itemExpanded(self, idx):
287+
if idx == self.menusItem.index():
288+
self.saveMenus = True
289+
self.adjustColumns()
290+
282291
def adjustColumns(self):
283292
self.tree.resizeColumnToContents(0)
284293
self.tree.resizeColumnToContents(1)

0 commit comments

Comments
 (0)