Set window icon. Closes #325.
This commit is contained in:
parent
aef693805a
commit
2a4e884e1b
@ -32,7 +32,7 @@ import traceback
|
||||
import faulthandler
|
||||
|
||||
from PyQt5.QtWidgets import QApplication, QDialog, QMessageBox
|
||||
from PyQt5.QtGui import QDesktopServices
|
||||
from PyQt5.QtGui import QDesktopServices, QPixmap, QIcon
|
||||
from PyQt5.QtCore import (pyqtSlot, qInstallMessageHandler, QTimer, QUrl,
|
||||
QStandardPaths, QObject, Qt)
|
||||
|
||||
@ -126,6 +126,7 @@ class Application(QApplication):
|
||||
self.setOrganizationName("qutebrowser")
|
||||
self.setApplicationName("qutebrowser")
|
||||
self.setApplicationVersion(qutebrowser.__version__)
|
||||
self._init_icon()
|
||||
utils.actute_warning()
|
||||
try:
|
||||
self._init_modules()
|
||||
@ -197,6 +198,21 @@ class Application(QApplication):
|
||||
main_window = objreg.get('main-window', scope='window', window=win_id)
|
||||
self.setActiveWindow(main_window)
|
||||
|
||||
def _init_icon(self):
|
||||
"""Initialize the icon of qutebrowser."""
|
||||
icon = QIcon()
|
||||
for size in (16, 24, 32, 48, 64, 96, 128, 256, 512):
|
||||
filename = 'icons/qutebrowser-{}x{}.png'.format(size, size)
|
||||
data = utils.read_file(filename, binary=True, use_requirement=True)
|
||||
pixmap = QPixmap()
|
||||
ok = pixmap.loadFromData(data, 'PNG')
|
||||
if not ok:
|
||||
raise ValueError("Could not load icon!")
|
||||
qtutils.ensure_not_null(pixmap)
|
||||
icon.addPixmap(pixmap)
|
||||
qtutils.ensure_not_null(icon)
|
||||
self.setWindowIcon(icon)
|
||||
|
||||
def _handle_segfault(self):
|
||||
"""Handle a segfault from a previous run."""
|
||||
path = standarddir.get(QStandardPaths.DataLocation)
|
||||
|
@ -127,6 +127,12 @@ def ensure_valid(obj):
|
||||
raise QtValueError(obj)
|
||||
|
||||
|
||||
def ensure_not_null(obj):
|
||||
"""Ensure a Qt object with an .isNull() method is not null."""
|
||||
if obj.isNull():
|
||||
raise QtValueError(obj)
|
||||
|
||||
|
||||
def _check_qdatastream(stream):
|
||||
"""Check the status of a QDataStream and raise OSError if it's not ok."""
|
||||
status_to_str = {
|
||||
|
@ -64,13 +64,15 @@ def compact_text(text, elidelength=None):
|
||||
return out
|
||||
|
||||
|
||||
def read_file(filename, binary=False):
|
||||
def read_file(filename, binary=False, use_requirement=False):
|
||||
"""Get the contents of a file contained with qutebrowser.
|
||||
|
||||
Args:
|
||||
filename: The filename to open as string.
|
||||
binary: Whether to return a binary string.
|
||||
If False, the data is UTF-8-decoded.
|
||||
use_requirement: Use a pkg_resources.Requirement object to get
|
||||
non-package data.
|
||||
|
||||
Return:
|
||||
The file contents as string.
|
||||
@ -85,7 +87,11 @@ def read_file(filename, binary=False):
|
||||
with open(fn, 'r', encoding='utf-8') as f:
|
||||
return f.read()
|
||||
else:
|
||||
data = pkg_resources.resource_string(qutebrowser.__name__, filename)
|
||||
if use_requirement:
|
||||
target = pkg_resources.Requirement('qutebrowser', '', '')
|
||||
else:
|
||||
target = qutebrowser.__name__
|
||||
data = pkg_resources.resource_string(target, filename)
|
||||
if not binary:
|
||||
data = data.decode('UTF-8')
|
||||
return data
|
||||
|
@ -52,6 +52,7 @@ build_exe_options = {
|
||||
('qutebrowser/html', 'html'),
|
||||
('qutebrowser/html/doc', 'html/doc'),
|
||||
('qutebrowser/git-commit-id', 'git-commit-id'),
|
||||
('icons', 'icons'),
|
||||
],
|
||||
'include_msvcr': True,
|
||||
'excludes': ['tkinter'],
|
||||
|
2
setup.py
2
setup.py
@ -23,6 +23,7 @@
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import glob
|
||||
|
||||
from scripts import setupcommon as common
|
||||
|
||||
@ -45,6 +46,7 @@ try:
|
||||
test_suite='qutebrowser.test',
|
||||
zip_safe=True,
|
||||
install_requires=['pypeg2', 'jinja2', 'pygments'],
|
||||
data_files=[('icons', glob.glob('icons/*'))],
|
||||
**common.setupdata
|
||||
)
|
||||
finally:
|
||||
|
Loading…
Reference in New Issue
Block a user