Stop using objreg for state-config

This commit is contained in:
Florian Bruhin 2017-09-17 21:04:34 +02:00
parent 70b8585e95
commit 3e0ca5d94d
10 changed files with 38 additions and 46 deletions

View File

@ -43,7 +43,7 @@ import qutebrowser
import qutebrowser.resources
from qutebrowser.completion.models import miscmodels
from qutebrowser.commands import cmdutils, runners, cmdexc
from qutebrowser.config import config, websettings, configexc
from qutebrowser.config import config, websettings, configexc, configfiles
from qutebrowser.browser import (urlmarks, adblock, history, browsertab,
downloads)
from qutebrowser.browser.network import proxy
@ -213,13 +213,12 @@ def _load_session(name):
Args:
name: The name of the session to load, or None to read state file.
"""
state_config = objreg.get('state-config')
session_manager = objreg.get('session-manager')
if name is None and session_manager.exists('_autosave'):
name = '_autosave'
elif name is None:
try:
name = state_config['general']['session']
name = configfiles.state['general']['session']
except KeyError:
# No session given as argument and none in the session file ->
# start without loading a session
@ -232,7 +231,7 @@ def _load_session(name):
except sessions.SessionError as e:
message.error("Failed to load session {}: {}".format(name, e))
try:
del state_config['general']['session']
del configfiles.state['general']['session']
except KeyError:
pass
# If this was a _restart session, delete it.
@ -326,8 +325,7 @@ def _open_special_pages(args):
# With --basedir given, don't open anything.
return
state_config = objreg.get('state-config')
general_sect = state_config['general']
general_sect = configfiles.state['general']
tabbed_browser = objreg.get('tabbed-browser', scope='window',
window='last-focused')
@ -363,13 +361,6 @@ def _open_special_pages(args):
general_sect['config-migration-shown'] = '1'
def _save_version():
"""Save the current version to the state config."""
state_config = objreg.get('state-config', None)
if state_config is not None:
state_config['general']['version'] = qutebrowser.__version__
def on_focus_changed(_old, new):
"""Register currently focused main window in the object registry."""
if new is None:
@ -410,7 +401,6 @@ def _init_modules(args, crash_handler):
log.init.debug("Initializing save manager...")
save_manager = savemanager.SaveManager(qApp)
objreg.register('save-manager', save_manager)
save_manager.add_saveable('version', _save_version)
config.late_init(save_manager)
log.init.debug("Initializing network...")

View File

@ -24,7 +24,8 @@ import binascii
from PyQt5.QtWidgets import QWidget
from qutebrowser.utils import log, objreg, usertypes
from qutebrowser.config import configfiles
from qutebrowser.utils import log, usertypes
from qutebrowser.misc import miscwidgets, objects
@ -67,9 +68,8 @@ class AbstractWebInspector(QWidget):
def _load_state_geometry(self):
"""Load the geometry from the state file."""
state_config = objreg.get('state-config')
try:
data = state_config['geometry']['inspector']
data = configfiles.state['geometry']['inspector']
geom = base64.b64decode(data, validate=True)
except KeyError:
# First start
@ -84,10 +84,9 @@ class AbstractWebInspector(QWidget):
def closeEvent(self, e):
"""Save the geometry when closed."""
state_config = objreg.get('state-config')
data = bytes(self.saveGeometry())
geom = base64.b64encode(data).decode('ASCII')
state_config['geometry']['inspector'] = geom
configfiles.state['geometry']['inspector'] = geom
super().closeEvent(e)
def inspect(self, page):

View File

@ -703,4 +703,4 @@ def late_init(save_manager):
_init_errors = []
instance.init_save_manager(save_manager)
objreg.get('state-config').init_save_manager(save_manager)
configfiles.state.init_save_manager(save_manager)

View File

@ -29,10 +29,15 @@ import contextlib
import yaml
from PyQt5.QtCore import QSettings
import qutebrowser
from qutebrowser.config import configexc
from qutebrowser.utils import objreg, standarddir, utils, qtutils
# The StateConfig instance
state = None
class StateConfig(configparser.ConfigParser):
"""The "state" file saving various application state."""
@ -232,8 +237,9 @@ def read_config_py(filename=None):
def init():
"""Initialize config storage not related to the main config."""
global state
state = StateConfig()
objreg.register('state-config', state)
state['general']['version'] = qutebrowser.__version__
# Set the QSettings path to something like
# ~/.config/qutebrowser/qsettings/qutebrowser/qutebrowser.conf so it

View File

@ -28,7 +28,7 @@ from PyQt5.QtCore import pyqtSlot, QRect, QPoint, QTimer, Qt
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication, QSizePolicy
from qutebrowser.commands import runners, cmdutils
from qutebrowser.config import config
from qutebrowser.config import config, configfiles
from qutebrowser.utils import (message, log, usertypes, qtutils, objreg, utils,
jinja, debug)
from qutebrowser.mainwindow import tabbedbrowser, messageview, prompt
@ -365,9 +365,8 @@ class MainWindow(QWidget):
def _load_state_geometry(self):
"""Load the geometry from the state file."""
state_config = objreg.get('state-config')
try:
data = state_config['geometry']['mainwindow']
data = configfiles.state['geometry']['mainwindow']
geom = base64.b64decode(data, validate=True)
except KeyError:
# First start
@ -380,10 +379,9 @@ class MainWindow(QWidget):
def _save_geometry(self):
"""Save the window geometry to the state config."""
state_config = objreg.get('state-config')
data = bytes(self.saveGeometry())
geom = base64.b64encode(data).decode('ASCII')
state_config['geometry']['mainwindow'] = geom
configfiles.state['geometry']['mainwindow'] = geom
def _load_geometry(self, geom):
"""Load geometry from a bytes object.

View File

@ -38,7 +38,7 @@ import qutebrowser
from qutebrowser.utils import version, log, utils, objreg, usertypes
from qutebrowser.misc import (miscwidgets, autoupdate, msgbox, httpclient,
pastebin, objects)
from qutebrowser.config import config
from qutebrowser.config import config, configfiles
def parse_fatal_stacktrace(text):
@ -159,11 +159,12 @@ class _CrashDialog(QDialog):
self._vbox.addWidget(contact)
self._contact = QTextEdit(tabChangesFocus=True, acceptRichText=False)
try:
state = objreg.get('state-config')
try:
self._contact.setPlainText(state['general']['contact-info'])
info = configfiles.state['general']['contact-info']
except KeyError:
self._contact.setPlaceholderText("Mail or IRC nickname")
else:
self._contact.setPlainText(info)
except Exception:
log.misc.exception("Failed to get contact information!")
self._contact.setPlaceholderText("Mail or IRC nickname")
@ -296,8 +297,8 @@ class _CrashDialog(QDialog):
def _save_contact_info(self):
"""Save the contact info to disk."""
try:
state = objreg.get('state-config')
state['general']['contact-info'] = self._contact.toPlainText()
info = self._contact.toPlainText()
configfiles.state['general']['contact-info'] = info
except Exception:
log.misc.exception("Failed to save contact information!")

View File

@ -30,7 +30,7 @@ import yaml
from qutebrowser.utils import (standarddir, objreg, qtutils, log, message,
utils)
from qutebrowser.commands import cmdexc, cmdutils
from qutebrowser.config import config
from qutebrowser.config import config, configfiles
from qutebrowser.completion.models import miscmodels
@ -294,8 +294,7 @@ class SessionManager(QObject):
raise SessionError(e)
if load_next_time:
state_config = objreg.get('state-config')
state_config['general']['session'] = name
configfiles.state['general']['session'] = name
return name
def save_autosave(self):

View File

@ -28,7 +28,7 @@ from PyQt5.QtCore import QObject, QUrl
from PyQt5.QtGui import QColor
from qutebrowser.commands import cmdexc
from qutebrowser.config import config, configdata, configexc
from qutebrowser.config import config, configdata, configexc, configfiles
from qutebrowser.utils import objreg, usertypes
from qutebrowser.misc import objects
@ -870,16 +870,16 @@ def test_set_register_stylesheet(delete, stylesheet_param, update, qtbot,
def init_patch(qapp, fake_save_manager, monkeypatch, config_tmpdir,
data_tmpdir):
monkeypatch.setattr(configdata, 'DATA', None)
monkeypatch.setattr(configfiles, 'state', None)
monkeypatch.setattr(config, 'instance', None)
monkeypatch.setattr(config, 'key_instance', None)
monkeypatch.setattr(config, '_change_filters', [])
monkeypatch.setattr(config, '_init_errors', [])
yield
for obj in ['config-commands', 'state-config']:
try:
objreg.delete(obj)
except KeyError:
pass
try:
objreg.delete('config-commands')
except KeyError:
pass
@pytest.mark.parametrize('load_autoconfig', [True, False]) # noqa

View File

@ -320,9 +320,9 @@ class TestConfigPy:
@pytest.fixture
def init_patch(qapp, fake_save_manager, config_tmpdir, data_tmpdir,
config_stub):
config_stub, monkeypatch):
monkeypatch.setattr(configfiles, 'state', None)
yield
objreg.delete('state-config')
def test_init(init_patch, config_tmpdir):

View File

@ -186,11 +186,10 @@ def test_get_session_name(config_stub, sess_man, arg, config, current,
class TestSave:
@pytest.fixture
def state_config(self):
def state_config(self, monkeypatch):
state = {'general': {}}
objreg.register('state-config', state)
yield state
objreg.delete('state-config')
monkeypatch.setattr(sessions.configfiles, 'state', state)
return state
@pytest.fixture
def fake_history(self, win_registry, stubs, monkeypatch, webview):