diff options
author | Jimmy <jimmy@spalge.com> | 2022-04-04 17:35:04 +1200 |
---|---|---|
committer | Jimmy <jimmy@spalge.com> | 2022-04-04 18:03:54 +1200 |
commit | e9ed6456fd38abe6d9269bb4f3842c95dc11dfba (patch) | |
tree | 660eb986a3dc2a7edd30329143de56c92eafcbad | |
parent | d0c1d1ff94d24376efc3c08c0bb85e0da48cbcbf (diff) | |
download | qutebrowser-e9ed6456fd38abe6d9269bb4f3842c95dc11dfba.tar.gz qutebrowser-e9ed6456fd38abe6d9269bb4f3842c95dc11dfba.zip |
Load icons via importlib.resources
The PyQt resources system is gone in 6.2 and deprecated before that. This
should be the last usage of it.
Switches icons to be read with `utils.resources.read_file_binary()` in
`notification.py` (fallback desktop notification icon) and `app.py` (icon for
the desktop window).
importlib only loads resources under a package, so the icons are moved under
the `qutebrowser/` directory.
Closes: #6062
-rw-r--r-- | MANIFEST.in | 2 | ||||
-rw-r--r-- | README.asciidoc | 2 | ||||
-rw-r--r-- | misc/Makefile | 2 | ||||
-rw-r--r-- | misc/qutebrowser.rcc | 13 | ||||
-rw-r--r-- | misc/qutebrowser.spec | 4 | ||||
-rw-r--r-- | qutebrowser/app.py | 5 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/notification.py | 8 | ||||
-rw-r--r-- | qutebrowser/icons/qutebrowser-128x128.png (renamed from icons/qutebrowser-128x128.png) | bin | 6426 -> 6426 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-16x16.png (renamed from icons/qutebrowser-16x16.png) | bin | 856 -> 856 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-24x24.png (renamed from icons/qutebrowser-24x24.png) | bin | 1339 -> 1339 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-256x256.png (renamed from icons/qutebrowser-256x256.png) | bin | 13690 -> 13690 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-32x32.png (renamed from icons/qutebrowser-32x32.png) | bin | 1624 -> 1624 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-48x48.png (renamed from icons/qutebrowser-48x48.png) | bin | 2399 -> 2399 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-512x512.png (renamed from icons/qutebrowser-512x512.png) | bin | 30109 -> 30109 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-64x64.png (renamed from icons/qutebrowser-64x64.png) | bin | 3179 -> 3179 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-96x96.png (renamed from icons/qutebrowser-96x96.png) | bin | 4776 -> 4776 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser-all.svg (renamed from icons/qutebrowser-all.svg) | 0 | ||||
-rw-r--r-- | qutebrowser/icons/qutebrowser-favicon.svg (renamed from icons/qutebrowser-favicon.svg) | 0 | ||||
-rw-r--r-- | qutebrowser/icons/qutebrowser.icns (renamed from icons/qutebrowser.icns) | bin | 196205 -> 196205 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser.ico (renamed from icons/qutebrowser.ico) | bin | 115490 -> 115490 bytes | |||
-rw-r--r-- | qutebrowser/icons/qutebrowser.svg (renamed from icons/qutebrowser.svg) | 0 | ||||
-rw-r--r-- | qutebrowser/icons/qutebrowser.xpm (renamed from icons/qutebrowser.xpm) | 0 | ||||
-rwxr-xr-x | scripts/asciidoc2html.py | 6 | ||||
-rw-r--r-- | scripts/dev/gen_resources.py | 30 | ||||
-rw-r--r-- | tests/end2end/fixtures/webserver_sub.py | 2 |
25 files changed, 19 insertions, 55 deletions
diff --git a/MANIFEST.in b/MANIFEST.in index ed4b5e5b1..81bf824b7 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -4,7 +4,7 @@ recursive-include qutebrowser/javascript *.js graft tests graft qutebrowser/html graft qutebrowser/3rdparty -graft icons +graft qutebrowser/icons graft doc/img graft misc/apparmor graft misc/userscripts diff --git a/README.asciidoc b/README.asciidoc index bb1f2562c..d1bb9ee98 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -7,7 +7,7 @@ qutebrowser =========== // QUTE_WEB_HIDE -image:icons/qutebrowser-64x64.png[qutebrowser logo] *A keyboard-driven, vim-like browser based on PyQt5 and Qt.* +image:qutebrowser/icons/qutebrowser-64x64.png[qutebrowser logo] *A keyboard-driven, vim-like browser based on PyQt5 and Qt.* image:https://github.com/qutebrowser/qutebrowser/workflows/CI/badge.svg["Build Status", link="https://github.com/qutebrowser/qutebrowser/actions?query=workflow%3ACI"] image:https://codecov.io/github/qutebrowser/qutebrowser/coverage.svg?branch=master["coverage badge",link="https://codecov.io/github/qutebrowser/qutebrowser?branch=master"] diff --git a/misc/Makefile b/misc/Makefile index b916a20d5..0b021f305 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -24,7 +24,7 @@ install: man "$(DESTDIR)$(MANDIR)/man1/qutebrowser.1" install -Dm644 misc/org.qutebrowser.qutebrowser.desktop \ "$(DESTDIR)$(DATADIR)/applications/org.qutebrowser.qutebrowser.desktop" - $(foreach i,$(ICONSIZES),install -Dm644 "icons/qutebrowser-$(i)x$(i).png" \ + $(foreach i,$(ICONSIZES),install -Dm644 "qutebrowser/icons/qutebrowser-$(i)x$(i).png" \ "$(DESTDIR)$(DATADIR)/icons/hicolor/$(i)x$(i)/apps/qutebrowser.png";) install -Dm644 icons/qutebrowser.svg \ "$(DESTDIR)$(DATADIR)/icons/hicolor/scalable/apps/qutebrowser.svg" diff --git a/misc/qutebrowser.rcc b/misc/qutebrowser.rcc deleted file mode 100644 index ffe9e47f6..000000000 --- a/misc/qutebrowser.rcc +++ /dev/null @@ -1,13 +0,0 @@ -<!DOCTYPE RCC><RCC version="1.0"> -<qresource> - <file>../icons/qutebrowser-16x16.png</file> - <file>../icons/qutebrowser-24x24.png</file> - <file>../icons/qutebrowser-32x32.png</file> - <file>../icons/qutebrowser-48x48.png</file> - <file>../icons/qutebrowser-64x64.png</file> - <file>../icons/qutebrowser-96x96.png</file> - <file>../icons/qutebrowser-128x128.png</file> - <file>../icons/qutebrowser-256x256.png</file> - <file>../icons/qutebrowser-512x512.png</file> -</qresource> -</RCC> diff --git a/misc/qutebrowser.spec b/misc/qutebrowser.spec index ffb17d371..11eb11c7d 100644 --- a/misc/qutebrowser.spec +++ b/misc/qutebrowser.spec @@ -40,9 +40,9 @@ setupcommon.write_git_file() if os.name == 'nt': - icon = '../icons/qutebrowser.ico' + icon = '../qutebrowser/icons/qutebrowser.ico' elif sys.platform == 'darwin': - icon = '../icons/qutebrowser.icns' + icon = '../qutebrowser/icons/qutebrowser.icns' else: icon = None diff --git a/qutebrowser/app.py b/qutebrowser/app.py index 1ab28e8d0..663c33ffc 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -182,8 +182,9 @@ def _init_icon(): """Initialize the icon of qutebrowser.""" fallback_icon = QIcon() for size in [16, 24, 32, 48, 64, 96, 128, 256, 512]: - filename = ':/icons/qutebrowser-{size}x{size}.png'.format(size=size) - pixmap = QPixmap(filename) + filename = 'icons/qutebrowser-{size}x{size}.png'.format(size=size) + pixmap = QPixmap() + pixmap.loadFromData(resources.read_file_binary(filename)) if pixmap.isNull(): log.init.warning("Failed to load {}".format(filename)) else: diff --git a/qutebrowser/browser/webengine/notification.py b/qutebrowser/browser/webengine/notification.py index 69c702aec..2b77a5ac4 100644 --- a/qutebrowser/browser/webengine/notification.py +++ b/qutebrowser/browser/webengine/notification.py @@ -65,7 +65,9 @@ if TYPE_CHECKING: from qutebrowser.config import config from qutebrowser.misc import objects -from qutebrowser.utils import qtutils, log, utils, debug, message, version, objreg +from qutebrowser.utils import ( + qtutils, log, utils, debug, message, version, objreg, resources, +) from qutebrowser.qt import sip @@ -965,8 +967,8 @@ class DBusNotificationAdapter(AbstractNotificationAdapter): icon = qt_notification.icon() if icon.isNull(): - filename = ':/icons/qutebrowser-64x64.png' - icon = QImage(filename) + filename = 'icons/qutebrowser-64x64.png' + icon = QImage.fromData(resources.read_file_binary(filename)) key = self._quirks.icon_key or "image-data" data = self._convert_image(icon) diff --git a/icons/qutebrowser-128x128.png b/qutebrowser/icons/qutebrowser-128x128.png Binary files differindex ca88ccc42..ca88ccc42 100644 --- a/icons/qutebrowser-128x128.png +++ b/qutebrowser/icons/qutebrowser-128x128.png diff --git a/icons/qutebrowser-16x16.png b/qutebrowser/icons/qutebrowser-16x16.png Binary files differindex 062fe402c..062fe402c 100644 --- a/icons/qutebrowser-16x16.png +++ b/qutebrowser/icons/qutebrowser-16x16.png diff --git a/icons/qutebrowser-24x24.png b/qutebrowser/icons/qutebrowser-24x24.png Binary files differindex 6aa2b5cd3..6aa2b5cd3 100644 --- a/icons/qutebrowser-24x24.png +++ b/qutebrowser/icons/qutebrowser-24x24.png diff --git a/icons/qutebrowser-256x256.png b/qutebrowser/icons/qutebrowser-256x256.png Binary files differindex 705d314fc..705d314fc 100644 --- a/icons/qutebrowser-256x256.png +++ b/qutebrowser/icons/qutebrowser-256x256.png diff --git a/icons/qutebrowser-32x32.png b/qutebrowser/icons/qutebrowser-32x32.png Binary files differindex c03d91092..c03d91092 100644 --- a/icons/qutebrowser-32x32.png +++ b/qutebrowser/icons/qutebrowser-32x32.png diff --git a/icons/qutebrowser-48x48.png b/qutebrowser/icons/qutebrowser-48x48.png Binary files differindex 1dd9e79a5..1dd9e79a5 100644 --- a/icons/qutebrowser-48x48.png +++ b/qutebrowser/icons/qutebrowser-48x48.png diff --git a/icons/qutebrowser-512x512.png b/qutebrowser/icons/qutebrowser-512x512.png Binary files differindex 08a273507..08a273507 100644 --- a/icons/qutebrowser-512x512.png +++ b/qutebrowser/icons/qutebrowser-512x512.png diff --git a/icons/qutebrowser-64x64.png b/qutebrowser/icons/qutebrowser-64x64.png Binary files differindex 72dc3febb..72dc3febb 100644 --- a/icons/qutebrowser-64x64.png +++ b/qutebrowser/icons/qutebrowser-64x64.png diff --git a/icons/qutebrowser-96x96.png b/qutebrowser/icons/qutebrowser-96x96.png Binary files differindex bc24982c5..bc24982c5 100644 --- a/icons/qutebrowser-96x96.png +++ b/qutebrowser/icons/qutebrowser-96x96.png diff --git a/icons/qutebrowser-all.svg b/qutebrowser/icons/qutebrowser-all.svg index da9ab4d6d..da9ab4d6d 100644 --- a/icons/qutebrowser-all.svg +++ b/qutebrowser/icons/qutebrowser-all.svg diff --git a/icons/qutebrowser-favicon.svg b/qutebrowser/icons/qutebrowser-favicon.svg index 0cceab56c..0cceab56c 100644 --- a/icons/qutebrowser-favicon.svg +++ b/qutebrowser/icons/qutebrowser-favicon.svg diff --git a/icons/qutebrowser.icns b/qutebrowser/icons/qutebrowser.icns Binary files differindex 928b6ca89..928b6ca89 100644 --- a/icons/qutebrowser.icns +++ b/qutebrowser/icons/qutebrowser.icns diff --git a/icons/qutebrowser.ico b/qutebrowser/icons/qutebrowser.ico Binary files differindex 42419d944..42419d944 100644 --- a/icons/qutebrowser.ico +++ b/qutebrowser/icons/qutebrowser.ico diff --git a/icons/qutebrowser.svg b/qutebrowser/icons/qutebrowser.svg index b26c80c2b..b26c80c2b 100644 --- a/icons/qutebrowser.svg +++ b/qutebrowser/icons/qutebrowser.svg diff --git a/icons/qutebrowser.xpm b/qutebrowser/icons/qutebrowser.xpm index 04e183154..04e183154 100644 --- a/icons/qutebrowser.xpm +++ b/qutebrowser/icons/qutebrowser.xpm diff --git a/scripts/asciidoc2html.py b/scripts/asciidoc2html.py index 0a6912b82..6b4e3fb0d 100755 --- a/scripts/asciidoc2html.py +++ b/scripts/asciidoc2html.py @@ -196,7 +196,11 @@ class AsciiDoc: continue self._build_website_file(item_path.parent, item_path.name) - copy = {'icons': 'icons', 'doc/img': 'doc/img', 'www/media': 'media/'} + copy = { + 'qutebrowser/icons': 'icons', + 'doc/img': 'doc/img', + 'www/media': 'media/', + } for src, dest in copy.items(): full_src = REPO_ROOT / src diff --git a/scripts/dev/gen_resources.py b/scripts/dev/gen_resources.py deleted file mode 100644 index efa6c6a3d..000000000 --- a/scripts/dev/gen_resources.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python3 -# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: - -# Copyright 2014-2021 Florian Bruhin (The-Compiler) <me@the-compiler.org> - -# this file is part of qutebrowser. -# -# qutebrowser is free software: you can redistribute it and/or modify -# it under the terms of the gnu general public license as published by -# the free software foundation, either version 3 of the license, or -# (at your option) any later version. -# -# qutebrowser is distributed in the hope that it will be useful, -# but without any warranty; without even the implied warranty of -# merchantability or fitness for a particular purpose. see the -# gnu general public license for more details. -# -# you should have received a copy of the gnu general public license -# along with qutebrowser. If not, see <https://www.gnu.org/licenses/>. - -"""Generate Qt resources based on source files.""" - -import subprocess -import pathlib - -ROOT = pathlib.Path(__file__).parents[2] -OUTPUT = ROOT / 'qutebrowser' / 'resources.py' -INPUT = ROOT / 'misc' / 'qutebrowser.rcc' - -subprocess.run(['pyrcc5', '-o', str(OUTPUT), str(INPUT)], check=True) diff --git a/tests/end2end/fixtures/webserver_sub.py b/tests/end2end/fixtures/webserver_sub.py index 6a4b249c2..392fbe43f 100644 --- a/tests/end2end/fixtures/webserver_sub.py +++ b/tests/end2end/fixtures/webserver_sub.py @@ -294,7 +294,7 @@ def view_user_agent(): def favicon(): # WORKAROUND for https://github.com/PyCQA/pylint/issues/5783 # pylint: disable-next=no-member,useless-suppression - icon_dir = END2END_DIR.parents[1] / 'icons' + icon_dir = END2END_DIR.parents[1] / 'qutebrowser' / 'icons' return flask.send_from_directory( icon_dir, 'qutebrowser.ico', mimetype='image/vnd.microsoft.icon') |