Fri, 27 Jun 2008 01:29:59 +0000
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 |