Save GUI options in QSettings.

This commit is contained in:
Bastian Kleineidam 2010-11-17 21:25:13 +01:00
parent 2a1658a1d3
commit cf7be13776
4 changed files with 72 additions and 18 deletions

View file

@ -34,7 +34,7 @@ Features:
be edited.
Closes: SF bug #3102201
- gui: Added dialog to show detailed URL properties on double click.
- gui: Store GUI options in registry settings.
5.4 "How to train your dragon" (released 26.10.2010)

View file

@ -72,11 +72,12 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
self.init_app()
def init_app (self):
size, pos = self.settings.read_geometry()
if size is not None:
self.resize(size)
if pos is not None:
self.move(pos)
data = self.settings.read_geometry()
if data["size"] is not None:
self.resize(data["size"])
if data["pos"] is not None:
self.move(data["pos"])
self.options.set_options(self.settings.read_options())
self.status = Status.idle
self.set_statusbar(_("Ready."))
@ -156,7 +157,8 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
def closeEvent (self, e=None):
"""Save settings and remove registered logging handler"""
self.settings.save_geometry(self.size(), self.pos())
self.settings.save_geometry(dict(size=self.size(), pos=self.pos()))
self.settings.save_options(self.options.get_options())
self.settings.sync()
self.config.remove_loghandler(self.handler)
if e is not None:
@ -232,9 +234,10 @@ Version 2 or later.</p>
def set_config (self):
"""Set configuration."""
self.config["recursionlevel"] = self.options.recursionlevel.value()
self.config["verbose"] = self.options.verbose.isChecked()
if self.options.debug.isChecked():
data = self.options.get_options()
self.config["recursionlevel"] = data["recursionlevel"]
self.config["verbose"] = data["verbose"]
if data["debug"]:
self.config.set_debug(["all"])
# make sure at least one thread is used
self.config["threads"] = 1

View file

@ -68,6 +68,22 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
return start_editor(self.user_config, self.user_config_writable,
self.editor)
def get_options (self):
"""Return option data as dictionary."""
return dict(
debug=self.debug.isChecked(),
verbose=self.verbose.isChecked(),
recursionlevel=self.recursionlevel.value(),
)
def set_options (self, data):
if data["debug"] is not None:
self.debug.setChecked(data["debug"])
if data["verbose"] is not None:
self.verbose.setChecked(data["verbose"])
if data["recursionlevel"] is not None:
self.recursionlevel.setValue(data["recursionlevel"])
def start_editor (filename, writable, editor):
if not os.path.isfile(filename):

View file

@ -39,20 +39,55 @@ class Settings (object):
self.settings = QtCore.QSettings(base, appname)
def read_geometry (self):
data = dict(size=None, pos=None)
self.settings.beginGroup('mainwindow')
size = pos = None
if self.settings.contains('size'):
size = save_size(self.settings.value('size').toSize())
data["size"] = save_size(self.settings.value('size').toSize())
if self.settings.contains('pos'):
pos = save_point(self.settings.value('pos').toPoint())
data["pos"] = save_point(self.settings.value('pos').toPoint())
self.settings.endGroup()
return size, pos
return data
def save_geometry (self, size, pos):
def save_geometry (self, data):
size = save_size(data["size"])
pos = save_point(data["pos"])
self.settings.beginGroup('mainwindow')
self.settings.setValue("size", QtCore.QVariant(save_size(size)))
self.settings.setValue("pos", QtCore.QVariant(save_point(pos)))
self.settings.setValue("size", QtCore.QVariant(size))
self.settings.setValue("pos", QtCore.QVariant(pos))
self.settings.endGroup()
def read_options (self):
data = dict(debug=None, verbose=None, recursionlevel=None)
self.settings.beginGroup('output')
debug = verbose = None
for key in ("debug", "verbose"):
if self.settings.contains(key):
data[key] = self.settings.value(key).toBool()
self.settings.endGroup()
self.settings.beginGroup('checking')
recursionlevel = None
if self.settings.contains('recursionlevel'):
value, ok = self.settings.value('recursionlevel').toInt()
if ok:
if value < -1:
value = -1
elif value > 100:
# 100 is the maximum GUI option value
value = 100
else:
value = -1
data['recursionlevel'] = value
self.settings.endGroup()
return data
def save_options (self, data):
self.settings.beginGroup('output')
for key in ("debug", "verbose"):
self.settings.setValue(key, QtCore.QVariant(data[key]))
self.settings.endGroup()
self.settings.beginGroup('checking')
key = "recursionlevel"
self.settings.setValue(key, QtCore.QVariant(data[key]))
self.settings.endGroup()
def sync (self):