Skip to content

Commit e5127c9

Browse files
committed
[processing] config dialog: only save menu configuration if needed
1 parent 93feb8b commit e5127c9

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
@@ -29,8 +29,7 @@
2929

3030
from qgis.PyQt import uic
3131
from qgis.PyQt.QtCore import (Qt,
32-
QEvent
33-
)
32+
QEvent)
3433
from qgis.PyQt.QtWidgets import (QFileDialog,
3534
QDialog,
3635
QStyle,
@@ -44,7 +43,9 @@
4443
from qgis.PyQt.QtGui import (QIcon,
4544
QPushButton,
4645
QStandardItemModel,
47-
QStandardItem)
46+
QStandardItem,
47+
QApplication,
48+
QCursor)
4849

4950
from qgis.gui import (QgsDoubleSpinBox,
5051
QgsSpinBox
@@ -56,8 +57,7 @@
5657
Setting)
5758
from processing.core.Processing import Processing
5859
from processing.gui.DirectorySelectorDialog import DirectorySelectorDialog
59-
from processing.gui.menus import defaultMenuEntries, updateMenus
60-
from processing.gui.menus import menusSettingsGroup
60+
from processing.gui.menus import defaultMenuEntries, updateMenus, menusSettingsGroup
6161

6262

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

9292
self.fillTree()
9393

94-
self.tree.expanded.connect(self.adjustColumns)
94+
self.saveMenus = False
95+
self.tree.expanded.connect(self.itemExpanded)
9596

9697
def textChanged(self):
9798
text = unicode(self.searchBox.text().lower())
@@ -190,14 +191,14 @@ def fillTreeUsingProviders(self):
190191
"""
191192
Filter 'Menus' items
192193
"""
193-
menusItem = QStandardItem(self.tr('Menus (requires restart)'))
194+
self.menusItem = QStandardItem(self.tr('Menus (requires restart)'))
194195
icon = QIcon(os.path.join(pluginPath, 'images', 'menu.png'))
195-
menusItem.setIcon(icon)
196-
menusItem.setEditable(False)
196+
self.menusItem.setIcon(icon)
197+
self.menusItem.setEditable(False)
197198
emptyItem = QStandardItem()
198199
emptyItem.setEditable(False)
199200

200-
rootItem.insertRow(0, [menusItem, emptyItem])
201+
rootItem.insertRow(0, [self.menusItem, emptyItem])
201202

202203
button = QPushButton(self.tr('Reset to defaults'))
203204
button.clicked.connect(self.resetMenusToDefaults)
@@ -246,7 +247,7 @@ def fillTreeUsingProviders(self):
246247
emptyItem = QStandardItem()
247248
emptyItem.setEditable(False)
248249

249-
menusItem.appendRow([groupItem, emptyItem])
250+
self.menusItem.appendRow([groupItem, emptyItem])
250251

251252
self.tree.sortByColumn(0, Qt.AscendingOrder)
252253
self.adjustColumns()
@@ -259,25 +260,33 @@ def resetMenusToDefaults(self):
259260
setting = ProcessingConfig.settings["MENU_" + alg.commandLineName()]
260261
item = self.items[setting]
261262
item.setData(d, Qt.EditRole)
263+
self.saveMenus = True
262264

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

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

0 commit comments

Comments
 (0)