Mercurial > pidgin.yaz
comparison src/dbus-client-example.py @ 11146:1c5398ccbeb0
[gaim-migrate @ 13217]
Gaim-DBUS signal export works with DBUS >= 0.35
Various gaim API functions available through DBUS
committer: Tailor Script <tailor@pidgin.im>
author | Piotr Zielinski <zielaj> |
---|---|
date | Fri, 22 Jul 2005 19:47:29 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
11145:dbc518c453f2 | 11146:1c5398ccbeb0 |
---|---|
1 #!/usr/bin/env python | |
2 | |
3 # this is an example of a client that communicates with gaim using DBUS | |
4 # | |
5 # requires Python 2.4 and PyGTK bindings | |
6 # | |
7 # note that all function names are resolved dynamically, no | |
8 # gaim-specific library is needed | |
9 | |
10 import dbus | |
11 import dbus.glib | |
12 import dbus.decorators | |
13 import gobject | |
14 import os | |
15 | |
16 def receivedimmsg(account, name, message, conversation, flags): | |
17 buddy = gaim.GaimFindBuddy(account, name) | |
18 if buddy != 0: | |
19 alias = gaim.GaimBuddyGetAlias(buddy) | |
20 else: | |
21 alias = name | |
22 | |
23 text = "%s says %s" % (alias, message) | |
24 code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", | |
25 "'So what?','Show me',Close,Abuse", text) | |
26 | |
27 if code == 101: # so what? | |
28 pass | |
29 if code == 102: # show me | |
30 window = gaim.GaimConversationGetWindow(conversation) | |
31 gaim.GaimConvWindowRaise(window) | |
32 if code == 103: # close | |
33 gaim.GaimConversationDestroy(conversation) | |
34 if code == 104: # abuse | |
35 im = gaim.GaimConversationGetImData(conversation) | |
36 gaim.GaimConvImSend(im, "Go away you f...") | |
37 | |
38 | |
39 def buddysignedon(buddyid): | |
40 alias = gaim.GaimBuddyGetAlias(buddyid) | |
41 text = "%s is online" % alias | |
42 | |
43 code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", | |
44 "'So what?','Let's talk'", text) | |
45 | |
46 if code == 101: # so what? | |
47 pass | |
48 if code == 102: # let's talk | |
49 name = gaim.GaimBuddyGetName(buddyid) | |
50 account = gaim.GaimBuddyGetAccount(buddyid) | |
51 gaim.GaimConversationNew(1, account, name) | |
52 | |
53 | |
54 def talkto(buddyname, accountname, protocolname): | |
55 account = gaim.GaimAccountsFindConnected(accountname, protocolname) | |
56 if account != 0: | |
57 gaim.GaimConversationNew(1, account, buddyname) | |
58 | |
59 | |
60 bus = dbus.SessionBus() | |
61 obj = bus.get_object("org.gaim.GaimService", "/org/gaim/GaimObject") | |
62 gaim = dbus.Interface(obj, "org.gaim.GaimInterface") | |
63 | |
64 bus.add_signal_receiver(receivedimmsg, | |
65 dbus_interface = "org.gaim.GaimInterface", | |
66 signal_name = "ReceivedImMsg") | |
67 bus.add_signal_receiver(buddysignedon, | |
68 dbus_interface = "org.gaim.GaimInterface", | |
69 signal_name = "BuddySignedOn") | |
70 | |
71 | |
72 # Tell the remote object to emit the signal | |
73 | |
74 talkto("testone@localhost", "", "prpl-jabber") | |
75 | |
76 loop = gobject.MainLoop() | |
77 loop.run() | |
78 | |
79 |