Mercurial > pidgin
view libpurple/purple-notifications-example @ 32675:59b0cf585038
Apply some changes that don't require GTK+ 3.0.
applied changes from f017f92d2834b148a4583586bf9ba2d7a184e149
through 3a572d2b49759264dd54b77ac23764af78d630c6
Changelog: Hide some Facebook settings hacks for now.
applied changes from 3a572d2b49759264dd54b77ac23764af78d630c6
through 5a380480965863fe5303a11e5b54915402525a55
Changelog: We don't need this extra slash.
applied changes from 5a380480965863fe5303a11e5b54915402525a55
through 84f2abc2501c34fb226b46effa1713fe0fc7ae01
Changelog: Add back the More and plugin action menu entries.
applied changes from 9f9150c83aa41a5ad716a09dc9be9079a5235a85
through 5204b1b3816e4356312730935b2f3b6e9b940e1a
Changelog: Enable the menu-refreshing logic in the conversation
menu, now that the signal (un)blocking affects the
correct widget.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 08 Oct 2011 21:48:38 +0000 |
parents | 61c2d36a38a3 |
children |
line wrap: on
line source
#!/usr/bin/env python # This is a simple purple notification server. # It shows notifications when your buddy signs on or you get an IM message. # # This script requires Python 2.4 and PyGTK bindings # # Note that all function names are resolved dynamically, no # purple-specific library is needed. import dbus import dbus.glib import dbus.decorators import gobject import os def ensureimconversation(conversation, account, name): if conversation != 0: return conversation else: # 1 = PURPLE_CONV_IM return purple.PurpleConversationNew(1, account, name) def receivedimmsg(account, name, message, conversation, flags): buddy = purple.PurpleFindBuddy(account, name) if buddy != 0: alias = purple.PurpleBuddyGetAlias(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 else: conversation = ensureimconversation(conversation, account, name) if code == 102: # show me window = purple.PurpleConversationGetWindow(conversation) purple.PurpleConvWindowRaise(window) if code == 103: # close purple.PurpleConversationDestroy(conversation) if code == 104: # abuse im = purple.PurpleConversationGetImData(conversation) purple.PurpleConvImSend(im, "Go away you f...") def buddysignedon(buddyid): alias = purple.PurpleBuddyGetAlias(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: # talk name = purple.PurpleBuddyGetName(buddyid) account = purple.PurpleBuddyGetAccount(buddyid) purple.PurpleConversationNew(1, account, name) bus = dbus.SessionBus() obj = bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject") purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface") bus.add_signal_receiver(receivedimmsg, dbus_interface = "im.pidgin.purple.PurpleInterface", signal_name = "ReceivedImMsg") bus.add_signal_receiver(buddysignedon, dbus_interface = "im.pidgin.purple.PurpleInterface", signal_name = "BuddySignedOn") print "This is a simple purple notification server." print "It shows notifications when your buddy signs on or you get an IM message." loop = gobject.MainLoop() loop.run()