=== modified file 'plugins/notify/__init__.py'
--- old/plugins/notify/__init__.py 2008-10-17 04:04:50 +0000
+++ new/plugins/notify/__init__.py 2009-04-05 05:48:03 +0000
@@ -4,27 +4,41 @@
pynotify.init('exailenotify')
-def on_play(type, player, track):
- title = " / ".join(track['title'] or _("Unknown"))
- artist = " / ".join(track['artist'] or "")
- album = " / ".join(track['album'] or "")
- summary = cgi.escape(title)
- if artist and album:
- body = _("by %(artist)s\nfrom %(album)s") % {
- 'artist' : cgi.escape(artist),
- 'album' : cgi.escape(album)}
- elif artist:
- body = _("by %(artist)s") % {'artist' : cgi.escape(artist)}
- elif album:
- body = _("from %(album)s") % {'album' : cgi.escape(album)}
- else:
- body = ""
- notify = pynotify.Notification(summary, body)
-
- notify.show()
+class ExaileNotification(object):
+ def __init__(self):
+ self.notification = pynotify.Notification("Exaile")
+ self.exaile = None
+
+ def on_play(self, type, player, track):
+ title = " / ".join(track['title'] or _("Unknown"))
+ artist = " / ".join(track['artist'] or "")
+ album = " / ".join(track['album'] or "")
+ summary = cgi.escape(title)
+ if artist and album:
+ body = _("by %(artist)s\nfrom %(album)s") % {
+ 'artist' : cgi.escape(artist),
+ 'album' : cgi.escape(album)}
+ elif artist:
+ body = _("by %(artist)s") % {'artist' : cgi.escape(artist)}
+ elif album:
+ body = _("from %(album)s") % {'album' : cgi.escape(album)}
+ else:
+ body = ""
+ self.notification.update(summary, body)
+ item = track.get_album_tuple()
+ image = None
+ if all(item) and hasattr(self.exaile, 'covers'):
+ image = self.exaile.covers.coverdb.get_cover(*item)
+ if image is None:
+ image = 'exaile'
+ self.notification.set_property('icon-name', image)
+ self.notification.show()
+
+EXAILE_NOTIFICATION = ExaileNotification()
def enable(exaile):
- event.add_callback(on_play, 'playback_start')
+ EXAILE_NOTIFICATION.exaile = exaile
+ event.add_callback(EXAILE_NOTIFICATION.on_play, 'playback_start')
def disable(exaile):
- event.remove_callback(on_play, 'playback_start')
+ event.remove_callback(EXAILE_NOTIFICATION.on_play, 'playback_start')