summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-06-19 17:50:58 +0200
committerFlorian Bruhin <me@the-compiler.org>2020-06-22 19:46:47 +0200
commit356c0bc1bb05b6890ab4eb3f2485327361f002b9 (patch)
treeb061437ef272fb141b20062c702f030eaa715c29
parent31451dd9b1de6b6d54a05dfb7fd935baa20f343e (diff)
downloadqutebrowser-356c0bc1bb05b6890ab4eb3f2485327361f002b9.tar.gz
qutebrowser-356c0bc1bb05b6890ab4eb3f2485327361f002b9.zip
Use separate inspector section in state config
-rw-r--r--qutebrowser/browser/inspector.py16
-rw-r--r--qutebrowser/config/configfiles.py12
-rw-r--r--qutebrowser/misc/miscwidgets.py9
-rw-r--r--tests/unit/config/test_configfiles.py8
-rw-r--r--tests/unit/misc/test_miscwidgets.py75
5 files changed, 46 insertions, 74 deletions
diff --git a/qutebrowser/browser/inspector.py b/qutebrowser/browser/inspector.py
index f6a62eba8..f037dff9d 100644
--- a/qutebrowser/browser/inspector.py
+++ b/qutebrowser/browser/inspector.py
@@ -126,18 +126,18 @@ class AbstractWebInspector(QWidget):
self._layout.wrap(self, widget)
self._widget.installEventFilter(self._child_event_filter)
- def _last_position(self) -> Position:
+ def _load_position(self) -> Position:
"""Get the last position the inspector was in."""
try:
- pos = configfiles.state['general']['inspector_last_position']
+ pos = configfiles.state['inspector']['position']
except KeyError:
return Position.right
else:
return Position[pos]
- def _save_last_position(self, position: Position) -> None:
+ def _save_position(self, position: Position) -> None:
"""Save the last position the inspector was in."""
- configfiles.state['general']['inspector_last_position'] = position.name
+ configfiles.state['inspector']['position'] = position.name
def set_position(self, position: typing.Optional[Position]) -> None:
"""Set the position of the inspector.
@@ -145,9 +145,9 @@ class AbstractWebInspector(QWidget):
If the position is None, the last known position is used.
"""
if position is None:
- position = self._last_position()
+ position = self._load_position()
else:
- self._save_last_position(position)
+ self._save_position(position)
if position == self._position:
self.setVisible(not self.isVisible())
@@ -166,7 +166,7 @@ class AbstractWebInspector(QWidget):
def _load_state_geometry(self) -> None:
"""Load the geometry from the state file."""
try:
- data = configfiles.state['geometry']['inspector']
+ data = configfiles.state['inspector']['window']
geom = base64.b64decode(data, validate=True)
except KeyError:
# First start
@@ -183,7 +183,7 @@ class AbstractWebInspector(QWidget):
"""Save the geometry when closed."""
data = self.saveGeometry().data()
geom = base64.b64encode(data).decode('ASCII')
- configfiles.state['geometry']['inspector'] = geom
+ configfiles.state['inspector']['window'] = geom
def inspect(self, page: QWidget) -> None:
"""Inspect the given QWeb(Engine)Page."""
diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py
index a2c4db3f2..f251ca3bd 100644
--- a/qutebrowser/config/configfiles.py
+++ b/qutebrowser/config/configfiles.py
@@ -68,15 +68,19 @@ class StateConfig(configparser.ConfigParser):
else:
self.qt_version_changed = False
- for sect in ['general', 'geometry']:
+ for sect in ['general', 'geometry', 'inspector']:
try:
self.add_section(sect)
except configparser.DuplicateSectionError:
pass
- deleted_keys = ['fooled', 'backend-warning-shown']
- for key in deleted_keys:
- self['general'].pop(key, None)
+ deleted_keys = [
+ ('general', 'fooled'),
+ ('general', 'backend-warning-shown'),
+ ('geometry', 'inspector'),
+ ]
+ for sect, key in deleted_keys:
+ self[sect].pop(key, None)
self['general']['qt_version'] = qt_version
self['general']['version'] = qutebrowser.__version__
diff --git a/qutebrowser/misc/miscwidgets.py b/qutebrowser/misc/miscwidgets.py
index c0a2fb243..641132ab4 100644
--- a/qutebrowser/misc/miscwidgets.py
+++ b/qutebrowser/misc/miscwidgets.py
@@ -400,8 +400,8 @@ class InspectorSplitter(QSplitter):
def _save_preferred_size(self) -> None:
"""Save the preferred size of the inspector widget."""
assert self._position is not None
- key = 'inspector_' + self._position.name
- configfiles.state['geometry'][key] = str(self._preferred_size)
+ size = str(self._preferred_size)
+ configfiles.state['inspector'][self._position.name] = size
def _load_preferred_size(self) -> None:
"""Load the preferred size of the inspector widget."""
@@ -416,13 +416,14 @@ class InspectorSplitter(QSplitter):
self._preferred_size = max(self._SMALL_SIZE_THRESHOLD, full // 2)
try:
- key = 'inspector_' + self._position.name
- self._preferred_size = int(configfiles.state['geometry'][key])
+ size = int(configfiles.state['inspector'][self._position.name])
except KeyError:
# First start
pass
except ValueError as e:
log.misc.error("Could not read inspector size: {}".format(e))
+ else:
+ self._preferred_size = int(size)
def _adjust_size(self) -> None:
"""Adjust the size of the inspector similarly to Chromium.
diff --git a/tests/unit/config/test_configfiles.py b/tests/unit/config/test_configfiles.py
index 0a3668d39..3436d2cf4 100644
--- a/tests/unit/config/test_configfiles.py
+++ b/tests/unit/config/test_configfiles.py
@@ -83,6 +83,8 @@ def autoconfig(config_tmpdir):
'version = 1.2.3\n'
'\n'
'[geometry]\n'
+ '\n'
+ '[inspector]\n'
'\n'),
('[general]\n'
'fooled = true',
@@ -92,6 +94,8 @@ def autoconfig(config_tmpdir):
'version = 1.2.3\n'
'\n'
'[geometry]\n'
+ '\n'
+ '[inspector]\n'
'\n'),
('[general]\n'
'foobar = 42',
@@ -102,6 +106,8 @@ def autoconfig(config_tmpdir):
'version = 1.2.3\n'
'\n'
'[geometry]\n'
+ '\n'
+ '[inspector]\n'
'\n'),
(None,
True,
@@ -111,6 +117,8 @@ def autoconfig(config_tmpdir):
'newval = 23\n'
'\n'
'[geometry]\n'
+ '\n'
+ '[inspector]\n'
'\n'),
])
def test_state_config(fake_save_manager, data_tmpdir, monkeypatch,
diff --git a/tests/unit/misc/test_miscwidgets.py b/tests/unit/misc/test_miscwidgets.py
index b0b424335..216f841cf 100644
--- a/tests/unit/misc/test_miscwidgets.py
+++ b/tests/unit/misc/test_miscwidgets.py
@@ -170,7 +170,7 @@ class TestInspectorSplitter:
@pytest.fixture(autouse=True)
def state_config(self, monkeypatch):
- state = {'geometry': {}}
+ state = {'inspector': {}}
monkeypatch.setattr(miscwidgets.configfiles, 'state', state)
return state
@@ -207,61 +207,21 @@ class TestInspectorSplitter:
@pytest.mark.parametrize(
'config, width, height, position, expected_size', [
# No config but enough big window
- (
- {},
- 1024, 768,
- inspector.Position.left,
- 512,
- ),
- (
- {},
- 1024, 768,
- inspector.Position.top,
- 384,
- ),
-
+ (None, 1024, 768, inspector.Position.left, 512),
+ (None, 1024, 768, inspector.Position.top, 384),
# No config and small window
- (
- {},
- 320, 240,
- inspector.Position.left,
- 300,
- ),
- (
- {},
- 320, 240,
- inspector.Position.top,
- 300,
- ),
-
+ (None, 320, 240, inspector.Position.left, 300),
+ (None, 320, 240, inspector.Position.top, 300),
# Invalid config
- (
- {'inspector_left': 'verybig'},
- 1024, 768,
- inspector.Position.left,
- 512,
- ),
-
- # Different config
- (
- {'inspector_right': '666'},
- 1024, 768,
- inspector.Position.left,
- 512,
- ),
-
+ ('verybig', 1024, 768, inspector.Position.left, 512),
# Value from config
- (
- {'inspector_left': '666'},
- 1024, 768,
- inspector.Position.left,
- 666,
- ),
+ ('666', 1024, 768, inspector.Position.left, 666),
]
)
def test_read_size(self, config, width, height, position, expected_size,
state_config, splitter, fake_inspector, caplog):
- state_config['geometry'] = config
+ if config is not None:
+ state_config['inspector'] = {position.name: config}
splitter.resize(width, height)
assert splitter.size() == QSize(width, height)
@@ -271,23 +231,22 @@ class TestInspectorSplitter:
assert splitter._preferred_size == expected_size
- if config == {'inspector_left': 'verybig'}:
+ if config == {'left': 'verybig'}:
assert caplog.messages == ["Could not read inspector size: "
"invalid literal for int() with "
"base 10: 'verybig'"]
- @pytest.mark.parametrize('position, key', [
- (inspector.Position.left, 'inspector_left'),
- (inspector.Position.right, 'inspector_right'),
- (inspector.Position.top, 'inspector_top'),
- (inspector.Position.bottom, 'inspector_bottom'),
+ @pytest.mark.parametrize('position', [
+ inspector.Position.left,
+ inspector.Position.right,
+ inspector.Position.top,
+ inspector.Position.bottom,
])
- def test_save_size(self, position, key,
- state_config, splitter, fake_inspector):
+ def test_save_size(self, position, state_config, splitter, fake_inspector):
splitter.set_inspector(fake_inspector, position)
splitter._preferred_size = 1337
splitter._save_preferred_size()
- assert state_config['geometry'][key] == '1337'
+ assert state_config['inspector'][position.name] == '1337'
@pytest.mark.parametrize(
'old_window_size, preferred_size, new_window_size, '