def __init__(self, delegate, context_menu, app, failure_callback):
super().__init__(delegate)
import gi
gi.require_version("StatusNotifier", "1.0")
from gi.repository import StatusNotifier
if hasattr(StatusNotifier.Icon, "ATTENTION_ICON"):
self.SNI_ATTENTION_ICON = StatusNotifier.Icon.ATTENTION_ICON
self.SNI_ACTIVE_ICON = StatusNotifier.Icon.ICON
else:
self.SNI_ATTENTION_ICON = StatusNotifier.Icon.STATUS_NOTIFIER_ATTENTION_ICON
self.SNI_ACTIVE_ICON = StatusNotifier.Icon.STATUS_NOTIFIER_ICON
self.SNI_ATTENTION = StatusNotifier.Status.NEEDS_ATTENTION
self.SNI_ACTIVE = StatusNotifier.Status.ACTIVE
theme = Gtk.IconTheme.get_default()
self._offline_icon_pixbuf = theme.load_icon(app.get_application_id(),
self.ICON_PIXBUF_SIZE,
Gtk.IconLookupFlags.FORCE_SVG |
Gtk.IconLookupFlags.FORCE_SYMBOLIC)
self._attention_icon_pixbuf = theme.load_icon(app.get_application_id() + "-status-blink",
self.ICON_PIXBUF_SIZE,
Gtk.IconLookupFlags.FORCE_SVG |
Gtk.IconLookupFlags.FORCE_SYMBOLIC)
self._online_icon_pixbuf = theme.load_icon(app.get_application_id() + "-status-online",
self.ICON_PIXBUF_SIZE,
Gtk.IconLookupFlags.FORCE_SVG |
Gtk.IconLookupFlags.FORCE_SYMBOLIC)
self._failure_callback = failure_callback
self._sni = StatusNotifier.Item.new_from_pixbuf(app.get_application_id(),
StatusNotifier.Category.COMMUNICATIONS,
self._offline_icon_pixbuf)
if not self._sni.set_context_menu(context_menu):
# TODO: No DbusMenu support built into StatusIcon, we need to handle the
# "context-menu" signal ourselves. For now, fallback to use GtkStatusIcon
raise RuntimeError("StatusNotifier does not support DbusMenu, falling back to GtkStatusIcon")
self._sni.connect("registration-failed", self.__on_registration_failed)
self._sni.connect("activate", self.__on_activate)
self._sni.set_from_pixbuf(self.SNI_ATTENTION_ICON, self._attention_icon_pixbuf)
self._sni.set_title("Revolt")
self._sni.set_status(self.SNI_ACTIVE)
self._sni.set_item_is_menu(False)
self._sni.freeze_tooltip()
self._sni.set_tooltip_title("Revolt")
self._sni.thaw_tooltip()
self._sni.register()
评论列表
文章目录