~jconti/recent-notifications/trunk

« back to all changes in this revision

Viewing changes to recent_notifications/Main.py

  • Committer: Jason Conti
  • Date: 2011-02-26 00:37:01 UTC
  • Revision ID: jason.conti@gmail.com-20110226003701-vol2rneb01c0o20e
Added an optional message count label in the applet.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
    self._applet.connect("change-orient", self.on_change_orient)
34
34
 
35
35
    self._unread_messages = 0
 
36
    self._show_count = False
36
37
 
37
38
    self._applet_size = self.get_applet_size()
38
39
 
39
40
    icon_size = self.get_icon_size(self._applet_size)
40
41
    self.load_icons(icon_size)
41
42
 
 
43
    if self.get_orient() in (gnomeapplet.ORIENT_LEFT, gnomeapplet.ORIENT_RIGHT):
 
44
      self._box = gtk.VBox()
 
45
    else:
 
46
      self._box = gtk.HBox()
 
47
    self._applet.add(self._box)
 
48
 
42
49
    self._button = ImageToggleButton()
43
50
    self._button.set_from_pixbuf(self._read_icon)
44
51
    self._button.set_orient(self.get_orient())
45
52
    self._button.connect("toggled", self.on_button_toggled)
46
 
    self._applet.add(self._button)
 
53
    self._button.show()
 
54
    self._box.pack_start(self._button)
 
55
 
 
56
    self._unread_label = gtk.Label("0")
 
57
    self._unread_label.show()
47
58
 
48
59
    self._applet.setup_menu(Template("""
49
60
      <popup name="button3">
64
75
    self._window = MessageWindow(self)
65
76
 
66
77
    self._applet.connect("destroy", self.on_applet_destroyed)
67
 
    self._applet.show_all()
68
78
 
69
79
    self.update()
70
80
 
73
83
    self._preferences = Config("~/.config/recent-notifications/preferences")
74
84
    self._preferences.set_if_unset("debug", False)
75
85
    self._preferences.set_if_unset("message_limit", 0)
 
86
    self._preferences.set_if_unset("show_count", False)
76
87
    self._preferences.add_listener("debug", self.on_preference_change)
77
88
    self._preferences.add_listener("message_limit", self.on_preference_change)
 
89
    self._preferences.add_listener("show_count", self.on_preference_change)
78
90
    self._preferences.notify_all()
79
91
 
80
92
    self._notify = Notification()
171
183
    n = self._unread_messages
172
184
    label = ngettext("1 unread message", "{0} unread messages", n).format(n)
173
185
    self._button.set_tooltip_text(label)
 
186
    self._unread_label.set_text(str(n))
174
187
 
175
188
  def show_window(self):
176
189
    """Shows the applet window"""
201
214
    """Updates the button orientation when the panel changes orientation"""
202
215
    self._button.set_orient(orient)
203
216
 
 
217
    old_box = self._box
 
218
    if orient in (gnomeapplet.ORIENT_LEFT, gnomeapplet.ORIENT_RIGHT):
 
219
      self._box = gtk.VBox()
 
220
    else:
 
221
      self._box = gtk.HBox()
 
222
 
 
223
    self._box.pack_start(self._button)
 
224
 
 
225
    if self._preferences.get_bool("show_count", False):
 
226
      self._box.pack_start(self._unread_label)
 
227
      self._show_count = True
 
228
 
 
229
    old_box.destroy()
 
230
 
204
231
  def on_applet_destroyed(self, applet):
205
232
    """Stop the message notifications before destroying the applet."""
206
233
    self._notify.close()
237
264
      self.set_debug(self._preferences.get_bool(key, False))
238
265
    elif key == "message_limit":
239
266
      self._window.set_message_limit(self._preferences.get_int(key, 0))
 
267
    elif key == "show_count":
 
268
      if self._preferences.get_bool(key, False):
 
269
        if not self._show_count:
 
270
          self._box.pack_end(self._unread_label)
 
271
          self._show_count = True
 
272
      else:
 
273
        if self._show_count:
 
274
          self._box.remove(self._unread_label)
 
275
          self._show_count = False
240
276