Fri, 30 Sep 2005 04:56:25 +0000
[gaim-migrate @ 13849]
Autodetect Howl and enable the Bonjour PRPL if the Howl libs and header
files are found.
This is my first real forray into configure.ac, so someone smart may
want to look through it.
|
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 |