Fri, 06 Jan 2006 04:46:00 +0000
[gaim-migrate @ 15091]
" Adds an emblem to a buddy if they have a queued message
(hidden conversation). In the large buddy list it is
added in the northwest corner, sliding the existing
northwest emblem (if specified) to the northeast
position and discarding the northeast emblem. In the
small buddy list, the emblem is added to the southeast.
Attached is a patch and an emblem image to be dropped
in pixmaps/status/default/. The emblem image is a
scaled down version of the send-im.png image." -- Casey Harkins
as I asked for this patch, and since there don't seem to be objections to
it (yet), I'm going ahead and applying it.
committer: Luke Schierer <lschiere@pidgin.im>
|
11331
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
1 | #!/usr/bin/env python |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
2 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
3 | # This is a simple gaim notification server. |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
4 | # It shows notifications when your buddy signs on or you get an IM message. |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
5 | # |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
6 | # This script requires Python 2.4 and PyGTK bindings |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
7 | # |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
8 | # Note that all function names are resolved dynamically, no |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
9 | # gaim-specific library is needed. |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
10 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
11 | import dbus |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
12 | import dbus.glib |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
13 | import dbus.decorators |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
14 | import gobject |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
15 | import os |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
16 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
17 | def ensureimconversation(conversation, account, name): |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
18 | if conversation != 0: |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
19 | return conversation |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
20 | else: |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
21 | # 1 = GAIM_CONV_IM |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
22 | return gaim.GaimConversationNew(1, account, name) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
23 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
24 | def receivedimmsg(account, name, message, conversation, flags): |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
25 | buddy = gaim.GaimFindBuddy(account, name) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
26 | if buddy != 0: |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
27 | alias = gaim.GaimBuddyGetAlias(buddy) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
28 | else: |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
29 | alias = name |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
30 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
31 | text = "%s says %s" % (alias, message) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
32 | code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
33 | "'So what?','Show me',Close,Abuse", text) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
34 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
35 | if code == 101: # so what? |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
36 | pass |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
37 | else: |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
38 | conversation = ensureimconversation(conversation, account, name) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
39 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
40 | if code == 102: # show me |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
41 | window = gaim.GaimConversationGetWindow(conversation) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
42 | gaim.GaimConvWindowRaise(window) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
43 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
44 | if code == 103: # close |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
45 | gaim.GaimConversationDestroy(conversation) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
46 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
47 | if code == 104: # abuse |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
48 | im = gaim.GaimConversationGetImData(conversation) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
49 | gaim.GaimConvImSend(im, "Go away you f...") |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
50 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
51 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
52 | def buddysignedon(buddyid): |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
53 | alias = gaim.GaimBuddyGetAlias(buddyid) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
54 | text = "%s is online" % alias |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
55 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
56 | code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
57 | "'So what?','Let's talk'", text) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
58 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
59 | if code == 101: # so what? |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
60 | pass |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
61 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
62 | if code == 102: # let's talk |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
63 | name = gaim.GaimBuddyGetName(buddyid) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
64 | account = gaim.GaimBuddyGetAccount(buddyid) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
65 | gaim.GaimConversationNew(1, account, name) |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
66 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
67 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
68 | bus = dbus.SessionBus() |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
69 | obj = bus.get_object("org.gaim.GaimService", "/org/gaim/GaimObject") |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
70 | gaim = dbus.Interface(obj, "org.gaim.GaimInterface") |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
71 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
72 | bus.add_signal_receiver(receivedimmsg, |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
73 | dbus_interface = "org.gaim.GaimInterface", |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
74 | signal_name = "ReceivedImMsg") |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
75 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
76 | bus.add_signal_receiver(buddysignedon, |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
77 | dbus_interface = "org.gaim.GaimInterface", |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
78 | signal_name = "BuddySignedOn") |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
79 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
80 | print """This is a simple gaim notification server. |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
81 | It shows notifications when your buddy signs on or you get an IM message.""" |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
82 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
83 | loop = gobject.MainLoop() |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
84 | loop.run() |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
85 | |
|
6e06ed40a312
[gaim-migrate @ 13544]
Piotr Zielinski <zielaj@users.sourceforge.net>
parents:
diff
changeset
|
86 |