finch/plugins/pietray.py

Sat, 31 Dec 2022 20:46:09 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Sat, 31 Dec 2022 20:46:09 -0600
branch
release-2.x.y
changeset 41988
010d58407f0e
parent 38313
38a40ddbb9b7
child 37984
6a5ca046a90d
permissions
-rwxr-xr-x

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

mercurial