Mercurial > pidgin
view src/dbus-client-example.py @ 11184:044645e8a679
[gaim-migrate @ 13296]
.cvsignore files are used to "ignore" files that you don't want
in your CVS repository. This typically includes files created
during the build processes, temp files created by editors, etc.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Wed, 03 Aug 2005 02:59:39 +0000 |
| parents | 1c5398ccbeb0 |
| children |
line wrap: on
line source
#!/usr/bin/env python # this is an example of a client that communicates with gaim using DBUS # # requires Python 2.4 and PyGTK bindings # # note that all function names are resolved dynamically, no # gaim-specific library is needed import dbus import dbus.glib import dbus.decorators import gobject import os def receivedimmsg(account, name, message, conversation, flags): buddy = gaim.GaimFindBuddy(account, name) if buddy != 0: alias = gaim.GaimBuddyGetAlias(buddy) else: alias = name text = "%s says %s" % (alias, message) code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", "'So what?','Show me',Close,Abuse", text) if code == 101: # so what? pass if code == 102: # show me window = gaim.GaimConversationGetWindow(conversation) gaim.GaimConvWindowRaise(window) if code == 103: # close gaim.GaimConversationDestroy(conversation) if code == 104: # abuse im = gaim.GaimConversationGetImData(conversation) gaim.GaimConvImSend(im, "Go away you f...") def buddysignedon(buddyid): alias = gaim.GaimBuddyGetAlias(buddyid) text = "%s is online" % alias code = os.spawnlp(os.P_WAIT, "xmessage", "xmessage", "-buttons", "'So what?','Let's talk'", text) if code == 101: # so what? pass if code == 102: # let's talk name = gaim.GaimBuddyGetName(buddyid) account = gaim.GaimBuddyGetAccount(buddyid) gaim.GaimConversationNew(1, account, name) def talkto(buddyname, accountname, protocolname): account = gaim.GaimAccountsFindConnected(accountname, protocolname) if account != 0: gaim.GaimConversationNew(1, account, buddyname) bus = dbus.SessionBus() obj = bus.get_object("org.gaim.GaimService", "/org/gaim/GaimObject") gaim = dbus.Interface(obj, "org.gaim.GaimInterface") bus.add_signal_receiver(receivedimmsg, dbus_interface = "org.gaim.GaimInterface", signal_name = "ReceivedImMsg") bus.add_signal_receiver(buddysignedon, dbus_interface = "org.gaim.GaimInterface", signal_name = "BuddySignedOn") # Tell the remote object to emit the signal talkto("testone@localhost", "", "prpl-jabber") loop = gobject.MainLoop() loop.run()
