diff options
author | Florian Bruhin <me@the-compiler.org> | 2020-06-19 17:50:58 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2020-06-22 19:46:47 +0200 |
commit | 356c0bc1bb05b6890ab4eb3f2485327361f002b9 (patch) | |
tree | b061437ef272fb141b20062c702f030eaa715c29 | |
parent | 31451dd9b1de6b6d54a05dfb7fd935baa20f343e (diff) | |
download | qutebrowser-356c0bc1bb05b6890ab4eb3f2485327361f002b9.tar.gz qutebrowser-356c0bc1bb05b6890ab4eb3f2485327361f002b9.zip |
Use separate inspector section in state config
-rw-r--r-- | qutebrowser/browser/inspector.py | 16 | ||||
-rw-r--r-- | qutebrowser/config/configfiles.py | 12 | ||||
-rw-r--r-- | qutebrowser/misc/miscwidgets.py | 9 | ||||
-rw-r--r-- | tests/unit/config/test_configfiles.py | 8 | ||||
-rw-r--r-- | tests/unit/misc/test_miscwidgets.py | 75 |
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, ' |