Linux: Allow using calibre-tray.png in the calibre resources folder to override the system tray icon. Fixes #1738518 [Feature request - custom systray icon](https://bugs.launchpad.net/calibre/+bug/1738518)

This commit is contained in:
Kovid Goyal 2017-12-16 12:18:59 +05:30
parent df177fe455
commit 8f0d9cc028
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -16,7 +16,8 @@ import os
import dbus import dbus
from PyQt5.Qt import ( from PyQt5.Qt import (
QApplication, QObject, pyqtSignal, Qt, QPoint, QRect, QMenu, QSystemTrayIcon) QApplication, QObject, pyqtSignal, Qt, QPoint, QRect, QMenu,
QSystemTrayIcon, QIcon)
from calibre.gui2.dbus_export.menu import DBusMenu from calibre.gui2.dbus_export.menu import DBusMenu
from calibre.gui2.dbus_export.utils import icon_cache from calibre.gui2.dbus_export.utils import icon_cache
@ -38,6 +39,10 @@ class StatusNotifierItem(QObject):
self.context_menu = None self.context_menu = None
self.is_visible = True self.is_visible = True
self.tool_tip = '' self.tool_tip = ''
path = I('calibre-tray.png')
if path and os.path.exists(path):
self._icon = QIcon(path)
else:
self._icon = QApplication.instance().windowIcon() self._icon = QApplication.instance().windowIcon()
self.show_menu.connect(self._show_menu, type=Qt.QueuedConnection) self.show_menu.connect(self._show_menu, type=Qt.QueuedConnection)
_sni_count += 1 _sni_count += 1
@ -97,6 +102,7 @@ class StatusNotifierItem(QObject):
def emit_activated(self): def emit_activated(self):
self.activated.emit(QSystemTrayIcon.Trigger) self.activated.emit(QSystemTrayIcon.Trigger)
_status_item_menu_count = 0 _status_item_menu_count = 0
@ -234,5 +240,3 @@ class StatusNotifierItemAPI(Object):
@dbus_signal(IFACE, 's') @dbus_signal(IFACE, 's')
def NewStatus(self, status): def NewStatus(self, status):
pass pass