10
from recent_notifications.Notification import Notification
13
return os.path.join(os.path.dirname(os.path.abspath(__file__)), "icons", name + ".svg")
15
class RecentIndicator(object):
17
self._menu = gtk.Menu()
18
self._message_items = []
21
self._menu.append(gtk.SeparatorMenuItem())
22
self._mark_as_read_item = gtk.MenuItem("Mark all as read")
23
self._mark_as_read_item.connect("activate", self.on_mark_as_read)
24
self._menu.append(self._mark_as_read_item)
27
self._menu.set_take_focus(False)
29
self._indicator = appindicator.Indicator("recent-notifications",
30
get_icon("mono-dark-2-notification-read"),
31
appindicator.CATEGORY_OTHER)
32
self._indicator.set_attention_icon(get_icon("mono-dark-2-notification-unread"))
33
self._indicator.set_status(appindicator.STATUS_ACTIVE)
34
self._indicator.set_menu(self._menu)
36
self._notify = Notification()
37
self._notify.connect("message-received", self.on_message_received)
39
def add_item(self, message):
40
#self._menu.prepend(gtk.SeparatorMenuItem())
41
current_item = gtk.MenuItem(message.summary)
42
self._menu.prepend(current_item)
43
self._message_items.insert(0, current_item)
45
#self._indicator.set_menu(self._menu)
46
self._indicator.set_status(appindicator.STATUS_ATTENTION)
48
def remove_last_item(self):
49
if len(self._message_items) > 0:
50
last_item = self._message_items.pop()
51
self._menu.remove(last_item)
54
def on_mark_as_read(self, item):
55
self._indicator.set_status(appindicator.STATUS_ACTIVE)
57
def on_message_received(self, monitor, message):
58
if len(self._message_items) >= self._max_items:
59
self.remove_last_item()
60
self.add_item(message)
63
indicator = RecentIndicator()
66
if __name__ == '__main__':