Fri, 13 Sep 2013 18:54:07 +0530
Backed out changeset 2961685df856
|
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 |