finch/plugins/pietray.py

Fri, 27 Jun 2008 01:29:59 +0000

author
Justin Rodriguez <ffdragon@soc.pidgin.im>
date
Fri, 27 Jun 2008 01:29:59 +0000
branch
soc.2008.themes
changeset 23649
5da5fe967d10
parent 18424
090bc431d552
child 37983
7d134a4a87b2
permissions
-rwxr-xr-x

Working sound themes (option 1) theme is saved in prefs and there is no seperate custom theme, everything
else is backwards compatiable, sound plays but the theme is not always found

18211
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
1 #!/usr/bin/env python
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
2
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
3 # This is a dbus script to show a docklet for Finch. This should work
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
4 # for any 'compatible' purple client.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
5 #
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
6 # By 'compatible', I mean any client that sets and updates the
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
7 # "unseen-count" data on the conversations.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
8 #
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
9 # It allows doing the following things:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
10 # - It allows changing status.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
11 # - It shows the current status and info about unread messages in
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
12 # the tooltip.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
13 # - It can blink on unread IM/Chat messages, and it allows canging
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
14 # the preference for that.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
15 #
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
16 # It requires GTK+ 2.10 or above, since it uses GtkStatusIcon.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
17 #
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
18 # Sadrul <sadrul@pidgin.im>
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
19
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
20 import pygtk
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
21 pygtk.require("2.0")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
22 import gtk
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
23 import dbus, gobject, dbus.glib
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
24 import os # to get the pkg-config output
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
25
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
26 bus = dbus.SessionBus()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
27 obj = bus.get_object(
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
28 "im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
29 purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
30
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
31 def pack_image_label(menu, image, label):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
32 item = gtk.ImageMenuItem(label)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
33 if image:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
34 img = gtk.Image()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
35 img.set_from_stock(image, 1)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
36 item.set_image(img)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
37 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
38 return item
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
39
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
40 def activate_primitive_status(item, status):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
41 saved = purple.PurpleSavedstatusFindTransientByTypeAndMessage(status, "")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
42 if not saved:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
43 saved = purple.PurpleSavedstatusNew("", status)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
44 purple.PurpleSavedstatusActivate(saved)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
45
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
46 def activate_popular_status(item, time):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
47 saved = purple.PurpleSavedstatusFindByCreationTime(time)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
48 if saved:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
49 purple.PurpleSavedstatusActivate(saved)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
50
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
51 def generate_status_menu(menu):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
52 item = gtk.MenuItem("Available")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
53 item.connect("activate", activate_primitive_status, 2)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
54 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
55
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
56 item = gtk.MenuItem("Away")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
57 item.connect("activate", activate_primitive_status, 5)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
58 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
59
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
60 item = gtk.MenuItem("Invisible")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
61 item.connect("activate", activate_primitive_status, 4)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
62 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
63
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
64 item = gtk.MenuItem("Offline")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
65 item.connect("activate", activate_primitive_status, 1)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
66 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
67
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
68 menu.append(gtk.MenuItem())
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
69
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
70 popular = purple.PurpleSavedstatusesGetPopular(10)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
71 for pop in popular:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
72 title = purple.PurpleSavedstatusGetTitle(pop).replace('_', '__')
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
73 item = gtk.MenuItem(title)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
74 item.set_data("timestamp", purple.PurpleSavedstatusGetCreationTime(pop))
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
75 item.connect("activate", activate_popular_status, purple.PurpleSavedstatusGetCreationTime(pop))
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
76 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
77
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
78 def toggle_pref(item, pref):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
79 purple.PurplePrefsSetBool(pref, item.get_active())
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
80
18424
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
81 def quit_finch(item, null):
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
82 # XXX: Ask first
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
83 purple.PurpleCoreQuit()
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
84 gtk.main_quit()
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
85
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
86 def close_docklet(item, null):
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
87 gtk.main_quit()
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
88
18211
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
89 def popup_menu(icon, button, tm, none):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
90 menu = gtk.Menu()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
91
18424
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
92 #item = gtk.ImageMenuItem(gtk.STOCK_QUIT)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
93 #item.connect("activate", quit_finch, None)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
94 #menu.append(item)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
95
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
96 item = gtk.ImageMenuItem(gtk.STOCK_CLOSE)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
97 item.connect("activate", close_docklet, None)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
98 menu.append(item)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
99
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
100 menu.append(gtk.MenuItem())
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
101
18211
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
102 item = gtk.CheckMenuItem("Blink for unread IM")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
103 item.set_active(purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/im"))
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
104 item.connect("activate", toggle_pref, "/plugins/dbus/docklet/blink/im")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
105 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
106
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
107 item = gtk.CheckMenuItem("Blink for unread Chats")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
108 item.set_active(purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/chat"))
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
109 item.connect("activate", toggle_pref, "/plugins/dbus/docklet/blink/chat")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
110 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
111
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
112 menu.append(gtk.MenuItem())
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
113
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
114 #item = pack_image_label(menu, None, "Change Status...")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
115 item = gtk.MenuItem("Change Status...")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
116 menu.append(item)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
117 submenu = gtk.Menu()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
118 item.set_submenu(submenu)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
119 generate_status_menu(submenu)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
120
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
121 menu.show_all()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
122 menu.popup(None, None, None, button, tm)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
123
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
124 def get_status_message():
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
125 status = purple.PurpleSavedstatusGetCurrent()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
126 msg = purple.PurpleSavedstatusGetMessage(status)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
127 if msg and len(msg) > 0:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
128 text = msg + " "
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
129 else:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
130 text = ""
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
131 text = text + "(" + {
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
132 2: "Available",
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
133 5: "Away",
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
134 4: "Invisible",
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
135 1: "Offline"
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
136 }[purple.PurpleSavedstatusGetType(status)] + ")"
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
137 return text
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
138
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
139 def detect_unread_conversations():
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
140 im = purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/im")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
141 chat = purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/chat")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
142 tooltip = ""
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
143 blink = False
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
144 if im and chat:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
145 convs = purple.PurpleGetConversations()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
146 elif im:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
147 convs = purple.PurpleGetIms()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
148 elif chat:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
149 convs = purple.PurpleGetChats()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
150 else:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
151 convs = None
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
152 for conv in convs:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
153 count = purple.PurpleConversationGetData(conv, "unseen-count")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
154 if count and count > 0:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
155 blink = True
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
156 tooltip = tooltip + "\n" + purple.PurpleConversationGetName(conv) + " (" + str(count) + ")"
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
157 t.set_from_file(path + "/share/pixmaps/pidgin.png")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
158 if blink:
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
159 # I hate this icon
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
160 # t.set_from_file(path + "/share/pixmaps/pidgin/tray/22/tray-message.png")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
161 tooltip = "\nUnread Messages:" + tooltip
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
162 # There's going to be some way to expose the client's display name in 2.1.0.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
163 # Use that instead of hardcoding Finch here.
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
164 t.set_tooltip("Finch: " + get_status_message() + tooltip)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
165 t.set_blinking(blink)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
166
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
167 def conversation_updated(conv, type):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
168 detect_unread_conversations()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
169
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
170 def savedstatus_changed(new, old):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
171 # Change the icon for status perhaps?
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
172 detect_unread_conversations()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
173
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
174 def init_prefs():
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
175 if not purple.PurplePrefsExists("/plugins/dbus/docklet/blink"):
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
176 purple.PurplePrefsAddNone("/plugins")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
177 purple.PurplePrefsAddNone("/plugins/dbus")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
178 purple.PurplePrefsAddNone("/plugins/dbus/docklet")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
179 purple.PurplePrefsAddNone("/plugins/dbus/docklet/blink")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
180 purple.PurplePrefsAddBool("/plugins/dbus/docklet/blink/im", True)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
181 purple.PurplePrefsAddBool("/plugins/dbus/docklet/blink/chat", True)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
182
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
183 pkg = os.popen("pkg-config --variable=prefix pidgin")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
184 path = pkg.readline().rstrip()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
185
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
186 bus.add_signal_receiver(conversation_updated,
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
187 dbus_interface="im.pidgin.purple.PurpleInterface",
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
188 signal_name="ConversationUpdated")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
189
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
190 bus.add_signal_receiver(savedstatus_changed,
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
191 dbus_interface="im.pidgin.purple.PurpleInterface",
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
192 signal_name="SavedstatusChanged")
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
193
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
194 t = gtk.StatusIcon()
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
195 t.connect("popup-menu", popup_menu, None)
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
196
18424
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
197 try:
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
198 init_prefs()
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
199 detect_unread_conversations()
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
200 gtk.main ()
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
201 except:
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
202 dialog = gtk.Dialog("pietray: Error", None, gtk.DIALOG_NO_SEPARATOR | gtk.DIALOG_MODAL, ("Close", gtk.RESPONSE_CLOSE))
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
203 dialog.set_resizable(False)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
204 dialog.vbox.pack_start(gtk.Label("There was some error. Perhaps a purple client is not running."), False, False, 0)
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
205 dialog.show_all()
090bc431d552 Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18211
diff changeset
206 dialog.run()
18211
b20146d6331e Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff changeset
207

mercurial