[processing] fix app freeze when closing options dialog (fixes #15550)

This commit is contained in:
nirvn 2017-01-03 14:03:19 +07:00
parent b3fddc79f6
commit 3dcf487485
2 changed files with 6 additions and 7 deletions

View File

@ -289,16 +289,15 @@ class Setting(object):
self.validator(value) self.validator(value)
self.value = value self.value = value
def read(self): def read(self, qsettings=QSettings()):
qsettings = QSettings()
value = qsettings.value(self.qname, None) value = qsettings.value(self.qname, None)
if value is not None: if value is not None:
if isinstance(self.value, bool): if isinstance(self.value, bool):
value = str(value).lower() == str(True).lower() value = str(value).lower() == str(True).lower()
self.value = value self.value = value
def save(self): def save(self, qsettings=QSettings()):
QSettings().setValue(self.qname, self.value) qsettings.setValue(self.qname, self.value)
def __str__(self): def __str__(self):
return self.name + '=' + str(self.value) return self.name + '=' + str(self.value)

View File

@ -30,8 +30,7 @@ __revision__ = '$Format:%H$'
import os import os
from qgis.PyQt import uic from qgis.PyQt import uic
from qgis.PyQt.QtCore import (Qt, from qgis.PyQt.QtCore import Qt, QEvent, QSettings
QEvent)
from qgis.PyQt.QtWidgets import (QFileDialog, from qgis.PyQt.QtWidgets import (QFileDialog,
QDialog, QDialog,
QStyle, QStyle,
@ -266,6 +265,7 @@ class ConfigDialog(BASE, WIDGET):
def accept(self): def accept(self):
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
qsettings = QSettings()
for setting in list(self.items.keys()): for setting in list(self.items.keys()):
if setting.group != menusSettingsGroup or self.saveMenus: if setting.group != menusSettingsGroup or self.saveMenus:
if isinstance(setting.value, bool): if isinstance(setting.value, bool):
@ -277,7 +277,7 @@ class ConfigDialog(BASE, WIDGET):
QMessageBox.warning(self, self.tr('Wrong value'), QMessageBox.warning(self, self.tr('Wrong value'),
self.tr('Wrong value for parameter "%s":\n\n%s' % (setting.description, str(e)))) self.tr('Wrong value for parameter "%s":\n\n%s' % (setting.description, str(e))))
return return
setting.save() setting.save(qsettings)
Processing.updateAlgsList() Processing.updateAlgsList()
settingsWatcher.settingsChanged.emit() settingsWatcher.settingsChanged.emit()
QApplication.restoreOverrideCursor() QApplication.restoreOverrideCursor()