diff options
author | Florian Bruhin <me@the-compiler.org> | 2023-06-13 19:32:50 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2023-06-13 19:32:50 +0200 |
commit | 1313704802f0bdb84d32ab84ec9e8d4543040108 (patch) | |
tree | dca285d72695f0d990536a92e88d60cb2e2c617f | |
parent | 0175c00d0f7c00dc7447b116b4479344a1c8c205 (diff) | |
download | qutebrowser-1313704802f0bdb84d32ab84ec9e8d4543040108.tar.gz qutebrowser-1313704802f0bdb84d32ab84ec9e8d4543040108.zip |
qt: Add wrapper info to backendproblem messages
-rw-r--r-- | qutebrowser/misc/backendproblem.py | 14 | ||||
-rw-r--r-- | qutebrowser/qt/machinery.py | 4 | ||||
-rw-r--r-- | tests/unit/test_qt_machinery.py | 1 |
3 files changed, 15 insertions, 4 deletions
diff --git a/qutebrowser/misc/backendproblem.py b/qutebrowser/misc/backendproblem.py index 4c0e184ac..7e3f987c4 100644 --- a/qutebrowser/misc/backendproblem.py +++ b/qutebrowser/misc/backendproblem.py @@ -29,6 +29,7 @@ import argparse import dataclasses from typing import Any, Optional, Sequence, Tuple +from qutebrowser.qt import machinery from qutebrowser.qt.core import Qt from qutebrowser.qt.widgets import (QDialog, QPushButton, QHBoxLayout, QVBoxLayout, QLabel, QMessageBox, QWidget) @@ -97,6 +98,8 @@ def _error_text( f"setting the <i>backend = '{other_setting}'</i> option " f"(if you have a <i>config.py</i> file, you'll need to set " f"this manually). {warning}</p>") + + text += f"<p>{machinery.INFO.to_html()}</p>" return text @@ -260,9 +263,11 @@ class _BackendProblemChecker: "<p>The errors encountered were:<ul>" "<li><b>QtWebKit:</b> {webkit_error}" "<li><b>QtWebEngine:</b> {webengine_error}" - "</ul></p>".format( + "</ul></p><p>{info}</p>".format( webkit_error=html.escape(imports.webkit_error), - webengine_error=html.escape(imports.webengine_error))) + webengine_error=html.escape(imports.webengine_error), + info=machinery.INFO.to_html(), + )) errbox = msgbox.msgbox(parent=None, title="No backend library found!", text=text, @@ -328,6 +333,7 @@ class _BackendProblemChecker: """Ask if there are Chromium downgrades or a Qt 5 -> 6 upgrade.""" versions = version.qtwebengine_versions(avoid_init=True) change = configfiles.state.chromium_version_changed + info = f"<br><br>{machinery.INFO.to_html()}" if change == configfiles.VersionChange.major: # FIXME:qt6 Remove this before the release, as it typically should # not concern users? @@ -340,7 +346,7 @@ class _BackendProblemChecker: "Chromium data will be invalid and discarded.<br><br>" "This affects page data such as cookies, but not data managed by " "qutebrowser, such as your configuration or <tt>:open</tt> history." - ) + ) + info elif change == configfiles.VersionChange.downgrade: text = ( "Chromium/QtWebEngine downgrade detected:<br>" @@ -349,7 +355,7 @@ class _BackendProblemChecker: "Data managed by Chromium will be discarded if you continue.<br><br>" "This affects page data such as cookies, but not data managed by " "qutebrowser, such as your configuration or <tt>:open</tt> history." - ) + ) + info else: return diff --git a/qutebrowser/qt/machinery.py b/qutebrowser/qt/machinery.py index 99b23ec8e..4ef9017be 100644 --- a/qutebrowser/qt/machinery.py +++ b/qutebrowser/qt/machinery.py @@ -12,6 +12,7 @@ Contains selection logic and globals for Qt wrapper selection. import os import sys import enum +import html import argparse import importlib import dataclasses @@ -108,6 +109,9 @@ class SelectionInfo: lines.append(f"selected: {self.wrapper} (via {self.reason.value})") return "\n".join(lines) + def to_html(self) -> str: + return html.escape(str(self)).replace("\n", "<br>") + def _autoselect_wrapper() -> SelectionInfo: """Autoselect a Qt wrapper. diff --git a/tests/unit/test_qt_machinery.py b/tests/unit/test_qt_machinery.py index 79f21308e..eb2f6fa1e 100644 --- a/tests/unit/test_qt_machinery.py +++ b/tests/unit/test_qt_machinery.py @@ -114,6 +114,7 @@ def test_selectioninfo_set_module(): ) def test_selectioninfo_str(info: machinery.SelectionInfo, expected: str): assert str(info) == expected + assert info.to_html() == expected.replace("\n", "<br>") @pytest.fixture |