2
RecentNotificationsApplet.py
6
Applet for viewing recent notifications.
13
from About import show_about
14
from MessageWindow import MessageWindow
15
from Monitor import Monitor
17
class RecentNotificationsApplet(object):
18
"""The main applet wrapper."""
19
def __init__(self, applet, iid):
22
self._unread_messages = 0
24
self._button = gtk.ToggleButton("No Unread Messages")
25
self._button.connect("button_press_event", self.do_not_eat_button_press)
26
self._button.connect("toggled", self.on_button_toggled)
27
self._applet.add(self._button)
29
self._applet.setup_menu("""
30
<popup name="button3">
31
<menuitem name="About" verb="About" _label="_About" pixtype="stock" pixname="gtk-about"/>
34
("About", lambda a, b: self.on_show_about(a))
37
self._window = MessageWindow(self)
39
self._applet.connect("destroy", self.on_applet_destroyed)
40
self._applet.show_all()
42
self._monitor = Monitor()
43
self._monitor.connect("message-received", self.on_message_received)
46
return self._applet.get_orient()
49
return self._button.get_window().get_origin()
52
return self._button.get_window().get_screen()
55
return self._button.get_window().get_size()
57
def update_unread_messages(self):
58
if self._unread_messages == 0:
59
label = "No Unread Messages"
60
elif self._unread_messages == 1:
61
label = "1 Unread Message"
63
label = str(self._unread_messages) + " Unread Messages"
65
self._button.set_label(label)
69
def do_not_eat_button_press(self, widget, event):
70
"""Adapted from the GNOME clock applet."""
72
widget.stop_emission("button_press_event")
76
def on_applet_destroyed(self, *args):
79
def on_button_toggled(self, button, *args):
80
if button.get_active():
81
self._window.show_all()
82
self._window.align_with_parent()
84
self._window.hide_all()
85
self._unread_messages = 0
86
self.update_unread_messages()
88
def on_message_received(self, monitor, message):
89
self._window.add_message(message)
90
self._unread_messages += 1
91
self.update_unread_messages()
93
def on_show_about(self, *args):