core.desktop: Refactor into class

TODO: find better way to handle Impl
This commit is contained in:
enkore 2013-10-23 21:36:05 +02:00
parent c33cb3aa60
commit b89b8a8145

View File

@ -1,17 +1,30 @@
def display_notification(title, body, icon="dialog-information", urgency=1, timeout=0): class DesktopNotification:
""" """
Displays a desktop notification Class to display a desktop notification
:param title: Title of the notification :param title: Title of the notification
:param body: Body text of the notification, depending on the users system configuration HTML may be used, but is not recommended :param body: Body text of the notification, depending on the users system configuration HTML may be used, but is not recommended
:param icon: A XDG icon name, see http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html :param icon: A XDG icon name, see http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
:param urgency: A value between 1 and 3 with 1 meaning low urgency and 3 high urgency. :param urgency: A value between 1 and 3 with 1 meaning low urgency and 3 high urgency.
:param timeout: Timeout in seconds for the notification. Zero means it needs to be dismissed by the user. :param timeout: Timeout in seconds for the notification. Zero means it needs to be dismissed by the user.
:returns: boolean indicating success
""" """
return False
def __init__(self, title, body, icon="dialog-information", urgency=1, timeout=0):
self.title = title
self.body = body
self.icon = icon
self.urgency = urgency
self.timeout = timeout
def display(self):
"""
Display this notification
:returns: boolean indicating success
"""
return False
try: try:
from gi.repository import Notify from gi.repository import Notify
@ -21,19 +34,20 @@ else:
if not Notify.init("i3pystatus"): if not Notify.init("i3pystatus"):
raise ImportError("Couldn't initialize libnotify") raise ImportError("Couldn't initialize libnotify")
URGENCY_LUT = (
Notify.Urgency.LOW,
Notify.Urgency.NORMAL,
Notify.Urgency.CRITICAL,
)
# List of some useful icon names: # List of some useful icon names:
# battery, battery-caution, battery-low # battery, battery-caution, battery-low
# … # …
def display_notification(title, body, icon="dialog-information", urgency=1, timeout=0): class DesktopNotification(DesktopNotification):
notification = Notify.Notification.new(title, body, icon) URGENCY_LUT = (
if timeout: Notify.Urgency.LOW,
notification.set_timeout(timeout) Notify.Urgency.NORMAL,
notification.set_urgency(URGENCY_LUT[urgency]) Notify.Urgency.CRITICAL,
return notification.show() )
def display(self):
notification = Notify.Notification.new(self.title, self.body, self.icon)
if self.timeout:
notification.set_timeout(self.timeout)
notification.set_urgency(self.URGENCY_LUT[self.urgency])
return notification.show()