Display error message when config validation failed

This commit is contained in:
Florian Bruhin 2014-04-21 22:29:57 +02:00
parent f70fad650d
commit 73dfa30a49
3 changed files with 29 additions and 4 deletions

View File

@ -44,7 +44,7 @@ else:
import qutebrowser.utils.harfbuzz as harfbuzz import qutebrowser.utils.harfbuzz as harfbuzz
harfbuzz.fix() harfbuzz.fix()
from PyQt5.QtWidgets import QApplication, QDialog from PyQt5.QtWidgets import QApplication, QDialog, QMessageBox
from PyQt5.QtCore import pyqtSlot, QTimer, QEventLoop from PyQt5.QtCore import pyqtSlot, QTimer, QEventLoop
import qutebrowser import qutebrowser
@ -61,6 +61,7 @@ from qutebrowser.browser.hints import HintKeyParser
from qutebrowser.utils.appdirs import AppDirs from qutebrowser.utils.appdirs import AppDirs
from qutebrowser.utils.misc import dotted_getattr from qutebrowser.utils.misc import dotted_getattr
from qutebrowser.utils.debug import set_trace # pylint: disable=unused-import from qutebrowser.utils.debug import set_trace # pylint: disable=unused-import
from qutebrowser.config.conftypes import ValidationError
class QuteBrowser(QApplication): class QuteBrowser(QApplication):
@ -105,7 +106,17 @@ class QuteBrowser(QApplication):
confdir = None confdir = None
else: else:
confdir = self._args.confdir confdir = self._args.confdir
config.init(confdir) try:
config.init(confdir)
except ValidationError as e:
msgbox = QMessageBox(
QMessageBox.Critical,
"Error while reading config!",
"Error while reading config:\n\n{} -> {}:\n{}".format(
e.section, e.option, e))
msgbox.exec_()
# We didn't really initialize much so far, so we just quit hard.
sys.exit(1)
self.config = config.instance self.config = config.instance
websettings.init() websettings.init()

View File

@ -205,7 +205,12 @@ class Config(QObject):
if secname not in cp: if secname not in cp:
continue continue
for k, v in cp[secname].items(): for k, v in cp[secname].items():
self.set('conf', secname, k, v) try:
self.set('conf', secname, k, v)
except ValidationError as e:
e.section = secname
e.option = k
raise
def has_option(self, section, option): def has_option(self, section, option):
"""Check if option exists in section. """Check if option exists in section.

View File

@ -22,7 +22,16 @@ from PyQt5.QtGui import QColor
class ValidationError(ValueError): class ValidationError(ValueError):
"""Exception raised when a value for a config type was invalid.""" """Exception raised when a value for a config type was invalid.
Class attributes:
section: Section in which the error occured (added when catching and
re-raising the exception).
option: Option in which the error occured.
"""
section = None
option = None
def __init__(self, value, msg): def __init__(self, value, msg):
super().__init__('Invalid value "{}" - {}'.format(value, msg)) super().__init__('Invalid value "{}" - {}'.format(value, msg))