closing merged branch
14 months ago, Gary Kramlich
closing merged branch
/* When writing a third-party plugin, do not include libpurple's internal.h
* included below. This file is for internal libpurple use only. We're including
* it here for our own convenience. */
#include "internal.h"
/* This file includes all the libpurple headers */
#include <purple.h>
/* include UI for pidgin_dialogs_about() */
#include "gtkplugin.h"
#include "gtkdialogs.h"
#define PURPLEINC_PLUGIN_ID "core-purpleinc"
static void
echo_hi(PurpleConnection *gc)
/* this doesn't do much, just lets you know who we are :) */
static gboolean
reverse(PurpleAccount *account, char **who, char **message,
PurpleConversation *conv, int *flags)
/* this will drive you insane. whenever you receive a message,
* the text of the message (HTML and all) will be reversed. */
int i, l;
char tmp;
/* this check is necessary in case bad plugins do bad things */
if (message == NULL || *message == NULL)
return FALSE;
l = strlen(*message);
if (purple_strequal(*who, purple_account_get_username(account)))
return FALSE;
for (i = 0; i < l/2; i++) {
tmp = (*message)[i];
(*message)[i] = (*message)[l - i - 1];
(*message)[l - i - 1] = tmp;
return FALSE;
static void
bud(PurpleBuddy *who)
PurpleAccount *acct = purple_buddy_get_account(who);
PurpleIMConversation *im = purple_im_conversation_new(acct,
purple_conversation_send(PURPLE_CONVERSATION(im), "Hello!");
static PidginPluginInfo *
plugin_query(GError **error)
const gchar * const authors[] = {
"Eric Warmenhoven <>",
return pidgin_plugin_info_new(
"name", N_("Pidgin Demonstration Plugin"),
"category", N_("Example"),
"summary", N_("An example plugin that does stuff - see the description."),
"description", N_("This is a really cool plugin that does a lot of stuff:\n"
"- It tells you who wrote the program when you log in\n"
"- It reverses all incoming text\n"
"- It sends a message to people on your list immediately"
" when they sign on"),
"authors", authors,
"website", PURPLE_WEBSITE,
"abi-version", PURPLE_ABI_VERSION,
static gboolean
plugin_load(PurplePlugin *plugin, GError **error)
/* this is for doing something fun when we sign on */
purple_signal_connect(purple_connections_get_handle(), "signed-on",
plugin, PURPLE_CALLBACK(echo_hi), NULL);
/* this is for doing something fun when we get a message */
purple_signal_connect(purple_conversations_get_handle(), "receiving-im-msg",
plugin, PURPLE_CALLBACK(reverse), NULL);
/* this is for doing something fun when a buddy comes online */
purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on",
plugin, PURPLE_CALLBACK(bud), NULL);
return TRUE;
static gboolean
plugin_unload(PurplePlugin *plugin, GError **error)
return TRUE;
PURPLE_PLUGIN_INIT(purpleinc, plugin_query, plugin_load, plugin_unload);