Use object registry for keyconfig.

This commit is contained in:
Florian Bruhin 2014-09-23 22:37:41 +02:00
parent fe5d9939b9
commit 04be586bca
2 changed files with 14 additions and 10 deletions

View File

@ -91,7 +91,6 @@ class Application(QApplication):
self._keyparsers = None self._keyparsers = None
self._crashdlg = None self._crashdlg = None
self._crashlogfile = None self._crashlogfile = None
self.keyconfig = None
sys.excepthook = self._exception_hook sys.excepthook = self._exception_hook
@ -190,8 +189,7 @@ class Application(QApplication):
else: else:
self.registry['config'] = config_obj self.registry['config'] = config_obj
try: try:
self.keyconfig = keyconfparser.KeyConfigParser( keyconfig = keyconfparser.KeyConfigParser(confdir, 'keys.conf')
confdir, 'keys.conf')
except keyconfparser.KeyConfigError as e: except keyconfparser.KeyConfigError as e:
log.init.exception(e) log.init.exception(e)
errstr = "Error while reading key config:\n" errstr = "Error while reading key config:\n"
@ -203,6 +201,8 @@ class Application(QApplication):
msgbox.exec_() msgbox.exec_()
# We didn't really initialize much so far, so we just quit hard. # We didn't really initialize much so far, so we just quit hard.
sys.exit(1) sys.exit(1)
else:
self.registry['keyconfig'] = keyconfig
stateconfig = iniparsers.ReadWriteConfigParser(confdir, 'state') stateconfig = iniparsers.ReadWriteConfigParser(confdir, 'state')
self.registry['stateconfig'] = stateconfig self.registry['stateconfig'] = stateconfig
cmd_history = lineparser.LineConfigParser( cmd_history = lineparser.LineConfigParser(
@ -385,6 +385,7 @@ class Application(QApplication):
cmd_history = self.registry['cmd_history'] cmd_history = self.registry['cmd_history']
downloadmanager = self.registry['downloadmanager'] downloadmanager = self.registry['downloadmanager']
config_obj = self.registry['config'] config_obj = self.registry['config']
keyconfig = self.registry['keyconfig']
# misc # misc
self.lastWindowClosed.connect(self.shutdown) self.lastWindowClosed.connect(self.shutdown)
@ -428,7 +429,7 @@ class Application(QApplication):
websettings, modeman, status, status.txt): websettings, modeman, status, status.txt):
config_obj.changed.connect(obj.on_config_changed) config_obj.changed.connect(obj.on_config_changed)
for obj in kp.values(): for obj in kp.values():
self.keyconfig.changed.connect(obj.on_keyconfig_changed) keyconfig.changed.connect(obj.on_keyconfig_changed)
# statusbar # statusbar
# FIXME some of these probably only should be triggered on mainframe # FIXME some of these probably only should be triggered on mainframe
@ -770,10 +771,13 @@ class Application(QApplication):
else: else:
to_save = [] to_save = []
if config.get('general', 'auto-save-config'): if config.get('general', 'auto-save-config'):
if hasattr(self, 'config'):
to_save.append(("config", config_obj.save)) to_save.append(("config", config_obj.save))
if hasattr(self, 'keyconfig'): try:
to_save.append(("keyconfig", self.keyconfig.save)) keyconfig = self.registry['keyconfig']
except KeyError:
pass
else:
to_save.append(("keyconfig", keyconfig.save))
to_save += [("window geometry", self._save_geometry), to_save += [("window geometry", self._save_geometry),
("quickmarks", quickmarks.save)] ("quickmarks", quickmarks.save)]
try: try:

View File

@ -23,7 +23,7 @@ import re
import string import string
import functools import functools
from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QObject, QCoreApplication from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QObject
from qutebrowser.config import config from qutebrowser.config import config
from qutebrowser.utils import usertypes, log, utils from qutebrowser.utils import usertypes, log, utils
@ -321,7 +321,7 @@ class BaseKeyParser(QObject):
self._modename = modename self._modename = modename
self.bindings = {} self.bindings = {}
self.special_bindings = {} self.special_bindings = {}
keyconfparser = QCoreApplication.instance().keyconfig keyconfparser = utils.get_object('keyconfig')
for (key, cmd) in keyconfparser.get_bindings_for(modename).items(): for (key, cmd) in keyconfparser.get_bindings_for(modename).items():
if not cmd: if not cmd:
continue continue