Sat, 31 Dec 2022 20:46:09 -0600
Update translations for 2.14.11
|
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 | |
|
38313
38a40ddbb9b7
Ensure all Python scripts are Py3k compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
18424
diff
changeset
|
20 | from __future__ import absolute_import, division, print_function |
|
38a40ddbb9b7
Ensure all Python scripts are Py3k compatible.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
18424
diff
changeset
|
21 | |
|
18211
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
22 | import pygtk |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
23 | pygtk.require("2.0") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
24 | import gtk |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
25 | import dbus, gobject, dbus.glib |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
26 | import os # to get the pkg-config output |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
27 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
28 | bus = dbus.SessionBus() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
29 | obj = bus.get_object( |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
30 | "im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
31 | purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
32 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
33 | def pack_image_label(menu, image, label): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
34 | item = gtk.ImageMenuItem(label) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
35 | if image: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
36 | img = gtk.Image() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
37 | img.set_from_stock(image, 1) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
38 | item.set_image(img) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
39 | menu.append(item) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
40 | return item |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
41 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
42 | def activate_primitive_status(item, status): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
43 | saved = purple.PurpleSavedstatusFindTransientByTypeAndMessage(status, "") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
44 | if not saved: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
45 | saved = purple.PurpleSavedstatusNew("", status) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
46 | purple.PurpleSavedstatusActivate(saved) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
47 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
48 | def activate_popular_status(item, time): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
49 | saved = purple.PurpleSavedstatusFindByCreationTime(time) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
50 | if saved: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
51 | purple.PurpleSavedstatusActivate(saved) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
52 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
53 | def generate_status_menu(menu): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
54 | item = gtk.MenuItem("Available") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
55 | item.connect("activate", activate_primitive_status, 2) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
56 | menu.append(item) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
57 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
58 | item = gtk.MenuItem("Away") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
59 | item.connect("activate", activate_primitive_status, 5) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
60 | menu.append(item) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
61 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
62 | item = gtk.MenuItem("Invisible") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
63 | item.connect("activate", activate_primitive_status, 4) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
64 | menu.append(item) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
65 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
66 | item = gtk.MenuItem("Offline") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
67 | item.connect("activate", activate_primitive_status, 1) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
68 | menu.append(item) |
|
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 | menu.append(gtk.MenuItem()) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
71 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
72 | popular = purple.PurpleSavedstatusesGetPopular(10) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
73 | for pop in popular: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
74 | title = purple.PurpleSavedstatusGetTitle(pop).replace('_', '__') |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
75 | item = gtk.MenuItem(title) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
76 | item.set_data("timestamp", purple.PurpleSavedstatusGetCreationTime(pop)) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
77 | item.connect("activate", activate_popular_status, purple.PurpleSavedstatusGetCreationTime(pop)) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
78 | menu.append(item) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
79 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
80 | def toggle_pref(item, pref): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
81 | purple.PurplePrefsSetBool(pref, item.get_active()) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
82 | |
|
18424
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
83 | 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
|
84 | # XXX: Ask first |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
85 | purple.PurpleCoreQuit() |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
86 | gtk.main_quit() |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
87 | |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
88 | 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
|
89 | gtk.main_quit() |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
90 | |
|
18211
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
91 | def popup_menu(icon, button, tm, none): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
92 | menu = gtk.Menu() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
93 | |
|
18424
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
94 | #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
|
95 | #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
|
96 | #menu.append(item) |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
97 | |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
98 | 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
|
99 | 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
|
100 | menu.append(item) |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
101 | |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
102 | 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
|
103 | |
|
18211
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
104 | item = gtk.CheckMenuItem("Blink for unread IM") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
105 | item.set_active(purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/im")) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
106 | item.connect("activate", toggle_pref, "/plugins/dbus/docklet/blink/im") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
107 | menu.append(item) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
108 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
109 | item = gtk.CheckMenuItem("Blink for unread Chats") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
110 | item.set_active(purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/chat")) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
111 | item.connect("activate", toggle_pref, "/plugins/dbus/docklet/blink/chat") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
112 | menu.append(item) |
|
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 | menu.append(gtk.MenuItem()) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
115 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
116 | #item = pack_image_label(menu, None, "Change Status...") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
117 | item = gtk.MenuItem("Change Status...") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
118 | menu.append(item) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
119 | submenu = gtk.Menu() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
120 | item.set_submenu(submenu) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
121 | generate_status_menu(submenu) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
122 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
123 | menu.show_all() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
124 | menu.popup(None, None, None, button, tm) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
125 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
126 | def get_status_message(): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
127 | status = purple.PurpleSavedstatusGetCurrent() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
128 | msg = purple.PurpleSavedstatusGetMessage(status) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
129 | if msg and len(msg) > 0: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
130 | text = msg + " " |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
131 | else: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
132 | text = "" |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
133 | text = text + "(" + { |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
134 | 2: "Available", |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
135 | 5: "Away", |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
136 | 4: "Invisible", |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
137 | 1: "Offline" |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
138 | }[purple.PurpleSavedstatusGetType(status)] + ")" |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
139 | return text |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
140 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
141 | def detect_unread_conversations(): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
142 | im = purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/im") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
143 | chat = purple.PurplePrefsGetBool("/plugins/dbus/docklet/blink/chat") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
144 | tooltip = "" |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
145 | blink = False |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
146 | if im and chat: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
147 | convs = purple.PurpleGetConversations() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
148 | elif im: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
149 | convs = purple.PurpleGetIms() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
150 | elif chat: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
151 | convs = purple.PurpleGetChats() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
152 | else: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
153 | convs = None |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
154 | for conv in convs: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
155 | count = purple.PurpleConversationGetData(conv, "unseen-count") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
156 | if count and count > 0: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
157 | blink = True |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
158 | tooltip = tooltip + "\n" + purple.PurpleConversationGetName(conv) + " (" + str(count) + ")" |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
159 | t.set_from_file(path + "/share/pixmaps/pidgin.png") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
160 | if blink: |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
161 | # I hate this icon |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
162 | # 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
|
163 | tooltip = "\nUnread Messages:" + tooltip |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
164 | # 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
|
165 | # Use that instead of hardcoding Finch here. |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
166 | t.set_tooltip("Finch: " + get_status_message() + tooltip) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
167 | t.set_blinking(blink) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
168 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
169 | def conversation_updated(conv, type): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
170 | detect_unread_conversations() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
171 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
172 | def savedstatus_changed(new, old): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
173 | # Change the icon for status perhaps? |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
174 | detect_unread_conversations() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
175 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
176 | def init_prefs(): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
177 | if not purple.PurplePrefsExists("/plugins/dbus/docklet/blink"): |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
178 | purple.PurplePrefsAddNone("/plugins") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
179 | purple.PurplePrefsAddNone("/plugins/dbus") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
180 | purple.PurplePrefsAddNone("/plugins/dbus/docklet") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
181 | purple.PurplePrefsAddNone("/plugins/dbus/docklet/blink") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
182 | purple.PurplePrefsAddBool("/plugins/dbus/docklet/blink/im", True) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
183 | purple.PurplePrefsAddBool("/plugins/dbus/docklet/blink/chat", True) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
184 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
185 | pkg = os.popen("pkg-config --variable=prefix pidgin") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
186 | path = pkg.readline().rstrip() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
187 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
188 | bus.add_signal_receiver(conversation_updated, |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
189 | dbus_interface="im.pidgin.purple.PurpleInterface", |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
190 | signal_name="ConversationUpdated") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
191 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
192 | bus.add_signal_receiver(savedstatus_changed, |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
193 | dbus_interface="im.pidgin.purple.PurpleInterface", |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
194 | signal_name="SavedstatusChanged") |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
195 | |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
196 | t = gtk.StatusIcon() |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
197 | t.connect("popup-menu", popup_menu, None) |
|
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
198 | |
|
18424
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
199 | try: |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
200 | init_prefs() |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
201 | detect_unread_conversations() |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
202 | gtk.main () |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
203 | except: |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
204 | 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
|
205 | 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
|
206 | 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
|
207 | dialog.show_all() |
|
090bc431d552
Add a 'Close' option for pietray to close the docklet.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
18211
diff
changeset
|
208 | dialog.run() |
|
18211
b20146d6331e
Dbus docklet for finch.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
diff
changeset
|
209 |