~jconti/recent-notifications/trunk

« back to all changes in this revision

Viewing changes to RecentNotificationsApplet.py

  • Committer: Jason Conti
  • Date: 2010-02-21 00:51:16 UTC
  • Revision ID: jason.conti@gmail.com-20100221005116-6r8y8tta8f21h3x9
Reorganizing to make it easier to build a package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
"""
2
 
RecentNotificationsApplet.py
3
 
by Jason Conti
4
 
February 19, 2010
5
 
 
6
 
Applet for viewing recent notifications.
7
 
"""
8
 
 
9
 
import gtk
10
 
import logging
11
 
import os.path
12
 
 
13
 
from About import show_about
14
 
from MessageWindow import MessageWindow
15
 
from Monitor import Monitor
16
 
 
17
 
class RecentNotificationsApplet(object):
18
 
  """The main applet wrapper."""
19
 
  def __init__(self, applet, iid):
20
 
    self._applet = applet
21
 
 
22
 
    self._unread_messages = 0
23
 
 
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)
28
 
 
29
 
    self._applet.setup_menu("""
30
 
      <popup name="button3">
31
 
        <menuitem name="About" verb="About" _label="_About" pixtype="stock" pixname="gtk-about"/>
32
 
      </popup>
33
 
      """, [
34
 
      ("About", lambda a, b: self.on_show_about(a))
35
 
      ])
36
 
 
37
 
    self._window = MessageWindow(self)
38
 
 
39
 
    self._applet.connect("destroy", self.on_applet_destroyed)
40
 
    self._applet.show_all()
41
 
 
42
 
    self._monitor = Monitor()
43
 
    self._monitor.connect("message-received", self.on_message_received)
44
 
 
45
 
  def get_orient(self):
46
 
    return self._applet.get_orient()
47
 
 
48
 
  def get_origin(self):
49
 
    return self._button.get_window().get_origin()
50
 
 
51
 
  def get_screen(self):
52
 
    return self._button.get_window().get_screen()
53
 
 
54
 
  def get_size(self):
55
 
    return self._button.get_window().get_size()
56
 
 
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"
62
 
    else:
63
 
      label = str(self._unread_messages) + " Unread Messages"
64
 
 
65
 
    self._button.set_label(label)
66
 
 
67
 
  # Callbacks
68
 
 
69
 
  def do_not_eat_button_press(self, widget, event):
70
 
    """Adapted from the GNOME clock applet."""
71
 
    if event.button != 1:
72
 
      widget.stop_emission("button_press_event")
73
 
 
74
 
    return False
75
 
 
76
 
  def on_applet_destroyed(self, *args):
77
 
    self._monitor.close()
78
 
 
79
 
  def on_button_toggled(self, button, *args):
80
 
    if button.get_active():
81
 
      self._window.show_all()
82
 
      self._window.align_with_parent()
83
 
    else:
84
 
      self._window.hide_all()
85
 
      self._unread_messages = 0
86
 
      self.update_unread_messages()
87
 
 
88
 
  def on_message_received(self, monitor, message):
89
 
    self._window.add_message(message)
90
 
    self._unread_messages += 1
91
 
    self.update_unread_messages()
92
 
 
93
 
  def on_show_about(self, *args):
94
 
    show_about(self)
95