--- a/autoreply/autoreply.c Thu Jun 14 16:51:36 2007 -0400
+++ b/autoreply/autoreply.c Sat Jun 30 18:39:20 2007 -0400
@@ -60,6 +60,7 @@
#define PREFS_MINTIME PREFS_PREFIX "/mintime"
#define PREFS_MAXSEND PREFS_PREFIX "/maxsend"
#define PREFS_USESTATUS PREFS_PREFIX "/usestatus"
+#define PREFS_PREFIX_MSG PREFS_PREFIX "/prefix" typedef struct _PurpleAutoReply PurpleAutoReply;
@@ -171,6 +172,8 @@
PurpleMessageFlags flag = PURPLE_MESSAGE_SEND;
last_sent = GPOINTER_TO_INT(purple_conversation_get_data(conv, "autoreply_lastsent"));
@@ -187,10 +190,15 @@
purple_conversation_set_data(conv, "autoreply_count", GINT_TO_POINTER(++count_sent));
purple_conversation_set_data(conv, "autoreply_lastsent", GINT_TO_POINTER(now));
gc = purple_account_get_connection(account);
- if (gc->flags & PURPLE_CONNECTION_AUTO_RESP)
+ prefix = purple_prefs_get_string(PREFS_PREFIX_MSG); + if (gc->flags & PURPLE_CONNECTION_AUTO_RESP) { flag |= PURPLE_MESSAGE_AUTO_RESP;
- serv_send_im(gc, who, reply, flag);
- purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, reply, flag, time(NULL));
+ prefix = NULL; /* The prpl knows about auto-response. So ignore the prefix string. */ + send = g_strdup_printf("%s%s", prefix ? prefix : "", reply); + serv_send_im(gc, who, send, flag); + purple_conv_im_write(PURPLE_CONV_IM(conv), NULL, send, flag, time(NULL)); @@ -240,6 +248,9 @@
PurpleMenuAction *action;
+ if (purple_blist_node_get_flags(node) & PURPLE_BLIST_NODE_FLAG_NO_SAVE) if (!PURPLE_BLIST_NODE_IS_BUDDY(node) && !PURPLE_BLIST_NODE_IS_CONTACT(node))
@@ -357,6 +368,10 @@
PURPLE_STRING_FORMAT_TYPE_MULTILINE | PURPLE_STRING_FORMAT_TYPE_HTML);
purple_plugin_pref_frame_add(frame, pref);
+ pref = purple_plugin_pref_new_with_name_and_label(PREFS_PREFIX_MSG, + _("Autoreply Prefix\n(only when necessary)")); + purple_plugin_pref_frame_add(frame, pref); pref = purple_plugin_pref_new_with_label(_("Status message"));
purple_plugin_pref_frame_add(frame, pref);
@@ -444,6 +459,7 @@
purple_prefs_add_int(PREFS_MINTIME, 10);
purple_prefs_add_int(PREFS_MAXSEND, 10);
purple_prefs_add_int(PREFS_USESTATUS, STATUS_NEVER);
+ purple_prefs_add_string(PREFS_PREFIX_MSG, _("This is an autoreply: ")); PURPLE_INIT_PLUGIN(PLUGIN_STATIC_NAME, init_plugin, info)
--- a/blistops/blistops.c Thu Jun 14 16:51:36 2007 -0400
+++ b/blistops/blistops.c Sat Jun 30 18:39:20 2007 -0400
@@ -32,65 +32,185 @@
#include "../common/i18n.h"
#define PREF_MY "/plugins/gtk/amc_grim"
#define PREF_ROOT "/plugins/gtk/amc_grim/blistops"
#define PREF_LIST "/plugins/gtk/amc_grim/blistops/hidelist"
#define PREF_MENU "/plugins/gtk/amc_grim/blistops/hidemenu"
+#define PREF_STRETCH "/plugins/gtk/amc_grim/blistops/stretch" +#define PREF_EMAIL "/plugins/gtk/amc_grim/blistops/email" static GtkWidget *w_blist = NULL;
static GtkWidget *w_menubar = NULL;
-abracadabra(GtkWidget *w, gboolean v) {
+abracadabra(GtkWidget *w, gboolean v) +motion_notify_cb(GtkTreeView *view, GdkEventMotion *event, GtkRequisition *req) + if (event->y < req->height) { + gtk_widget_show(w_menubar); + gtk_widget_hide(w_menubar); pref_cb(const char *name, PurplePrefType type,
- gconstpointer val, gpointer data) {
+ gconstpointer val, gpointer data) + static GtkRequisition req; gboolean value = GPOINTER_TO_INT(val);
if(!g_ascii_strcasecmp(name, PREF_LIST))
abracadabra(w_blist, value);
- else if(!g_ascii_strcasecmp(name, PREF_MENU))
+ else if(!g_ascii_strcasecmp(name, PREF_MENU)) { + PidginBuddyList *gtkblist = pidgin_blist_get_default_gtk_blist(); abracadabra(w_menubar, value);
+ g_signal_handlers_disconnect_matched(G_OBJECT(gtkblist->treeview), G_SIGNAL_MATCH_FUNC, + 0, 0, NULL, G_CALLBACK(motion_notify_cb), NULL); + gtk_widget_size_request(w_menubar, &req); + g_signal_connect(gtkblist->treeview, "motion-notify-event", G_CALLBACK(motion_notify_cb), &req); +reset_row_heights(const char *name, PurplePrefType type, + gconstpointer val, gpointer data) + PidginBuddyList *gtkblist = pidgin_blist_get_default_gtk_blist(); + GtkTreeViewColumn *col = gtk_tree_view_get_column(GTK_TREE_VIEW(gtkblist->treeview), 1); + GList *iter = gtk_tree_view_column_get_cell_renderers(col); + for (; iter; iter = g_list_delete_link(iter, iter)) { + GtkCellRenderer *rend = iter->data; + if (GTK_IS_CELL_RENDERER_PIXBUF(rend)) { + g_object_set(rend, "height", val ? 32 : 16, NULL); +redraw_blist(const char *name, PurplePrefType type, + gconstpointer val, gpointer data) + pidgin_blist_refresh(data); -gtkblist_created_cb(PurpleBuddyList *blist) {
+row_changed_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, PidginBuddyList *gtkblist) + gboolean stretch, email; + static gboolean inuse = FALSE, vis; + stretch = purple_prefs_get_bool(PREF_STRETCH); + email = purple_prefs_get_bool(PREF_EMAIL); + if (!stretch && !email) + gtk_tree_model_get(model, iter, NODE_COLUMN, &node, + BUDDY_ICON_COLUMN, &pix, NAME_COLUMN, &html, + BUDDY_ICON_VISIBLE_COLUMN, &vis, -1); + if (PURPLE_BLIST_NODE_IS_CONTACT(node)) + node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); + if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) + char *alias = g_markup_escape_text(purple_buddy_get_alias((PurpleBuddy*)node), -1); + name = purple_buddy_get_name((PurpleBuddy*)node); + if (g_utf8_collate(alias, name)) { + char *find = g_strstr_len(html, -1, alias); + new = g_strdup_printf("%s%s%s", html, name, find + strlen(alias)); + gtk_tree_store_set(GTK_TREE_STORE(model), iter, NAME_COLUMN, new, -1); + if (stretch && vis && (!pix || pix == gtkblist->empty_avatar)) { + /* Hiding the empty avatar makes the rows shorter than rows with buddy icons. + * We need to find a way to make sure that doesn't happen. + gtk_tree_store_set(GTK_TREE_STORE(model), iter, BUDDY_ICON_VISIBLE_COLUMN, FALSE, -1); +gtkblist_created_cb(PurpleBuddyList *blist) PidginBuddyList *gtkblist = PIDGIN_BLIST(blist);
w_blist = gtkblist->window;
w_menubar = gtk_item_factory_get_widget(gtkblist->ift, "<PurpleMain>");
+ g_signal_connect(gtkblist->treemodel, "row_changed", G_CALLBACK(row_changed_cb), gtkblist); purple_prefs_trigger_callback(PREF_LIST);
purple_prefs_trigger_callback(PREF_MENU);
+ purple_prefs_trigger_callback(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"); -/* globals to remove our pref cb's */
-guint blist_id = 0, menu_id = 0;
-plugin_load(PurplePlugin *plugin) {
+plugin_load(PurplePlugin *plugin) purple_signal_connect(pidgin_blist_get_handle(), "gtkblist-created", plugin,
PURPLE_CALLBACK(gtkblist_created_cb), NULL);
- blist_id = purple_prefs_connect_callback(plugin, PREF_LIST, pref_cb, NULL);
- menu_id = purple_prefs_connect_callback(plugin, PREF_MENU, pref_cb, NULL);
+ if (pidgin_blist_get_default_gtk_blist()) + gtkblist_created_cb(purple_get_blist()); + purple_prefs_connect_callback(plugin, PREF_LIST, pref_cb, NULL); + purple_prefs_connect_callback(plugin, PREF_MENU, pref_cb, NULL); + purple_prefs_connect_callback(plugin, PREF_STRETCH, redraw_blist, purple_get_blist()); + purple_prefs_connect_callback(plugin, PREF_EMAIL, redraw_blist, purple_get_blist()); + purple_prefs_connect_callback(plugin, PIDGIN_PREFS_ROOT "/blist/show_buddy_icons", + reset_row_heights, NULL); -plugin_unload(PurplePlugin *plugin) {
- purple_prefs_disconnect_callback(blist_id);
- purple_prefs_disconnect_callback(menu_id);
+plugin_unload(PurplePlugin *plugin) gtk_widget_show(w_blist);
@@ -102,7 +222,8 @@
static PurplePluginPrefFrame *
-get_plugin_pref_frame(PurplePlugin *plugin) {
+get_plugin_pref_frame(PurplePlugin *plugin) PurplePluginPrefFrame *frame;
@@ -116,6 +237,14 @@
_("Hide the menu in the buddy list window"));
purple_plugin_pref_frame_add(frame, ppref);
+ ppref = purple_plugin_pref_new_with_name_and_label(PREF_STRETCH, + _("Stretch the buddyname if the buddy has no buddyicon.")); + purple_plugin_pref_frame_add(frame, ppref); + ppref = purple_plugin_pref_new_with_name_and_label(PREF_EMAIL, + _("Show email addresses for all the buddies.")); + purple_plugin_pref_frame_add(frame, ppref); @@ -163,7 +292,8 @@
-init_plugin(PurplePlugin *plugin) {
+init_plugin(PurplePlugin *plugin) bindtextdomain(GETTEXT_PACKAGE, PP_LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
@@ -177,6 +307,8 @@
purple_prefs_add_none(PREF_ROOT);
purple_prefs_add_bool(PREF_LIST, FALSE);
purple_prefs_add_bool(PREF_MENU, FALSE);
+ purple_prefs_add_bool(PREF_STRETCH, TRUE); + purple_prefs_add_bool(PREF_EMAIL, FALSE); PURPLE_INIT_PLUGIN(blistops, init_plugin, info)
--- a/configure.ac Thu Jun 14 16:51:36 2007 -0400
+++ b/configure.ac Sat Jun 30 18:39:20 2007 -0400
@@ -1,4 +1,4 @@
-AC_INIT([purple-plugin_pack], [1.0], [guifications-devel@lists.sourceforge.net])
+AC_INIT([purple-plugin_pack], [1.1], [guifications-devel@lists.sourceforge.net]) AM_CONFIG_HEADER(pre_config.h)
@@ -78,8 +78,14 @@
AM_CONDITIONAL(HAVE_PURPLE, true)
-PURPLE_LIBDIR=`pkg-config --variable=libdir purple`
-PURPLE_DATADIR=`pkg-config --variable=datadir purple`
+if test x"$prefix" = x"NONE" ; then + PURPLE_LIBDIR=`pkg-config --variable=libdir purple` + PURPLE_DATADIR=`pkg-config --variable=datadir purple` + PURPLE_LIBDIR="$libdir" + PURPLE_DATADIR="$datadir" # this is a hack but should work fine.
@@ -113,12 +119,19 @@
AM_CONDITIONAL(HAVE_PIDGIN, true)
AM_CONDITIONAL(HAVE_PIDGIN, false)
-PIDGIN_LIBDIR=`pkg-config --variable=libdir pidgin`
-PIDGIN_DATADIR=`pkg-config --variable=datadir pidgin`
+if test x"$prefix" = x"NONE" ; then + PIDGIN_LIBDIR=`pkg-config --variable=libdir pidgin` + PIDGIN_DATADIR=`pkg-config --variable=datadir pidgin` + PIDGIN_LIBDIR="$libdir" + PIDGIN_DATADIR="$datadir" if test x"$PIDGIN_LIBDIR" != x"" ; then
@@ -145,12 +158,19 @@
AM_CONDITIONAL(HAVE_FINCH, true)
AM_CONDITIONAL(HAVE_FINCH, false)
-FINCH_LIBDIR=`pkg-config --variable=libdir finch`
-FINCH_DATADIR=`pkg-config --variable=datadir finch`
+if test x"$prefix" = x"NONE" ; then + FINCH_LIBDIR=`pkg-config --variable=libdir finch` + FINCH_DATADIR=`pkg-config --variable=datadir finch` + FINCH_DATADIR="$datadir" if test x"$FINCH_LIBDIR" != x"" ; then
@@ -289,6 +309,7 @@
--- a/eight_ball/eight_ball.c Thu Jun 14 16:51:36 2007 -0400
+++ b/eight_ball/eight_ball.c Sat Jun 30 18:39:20 2007 -0400
@@ -65,7 +65,17 @@
"I believe a medical attack could be successful."
-static PurpleCmdId eight_ball_cmd_id = 0, sg_ball_cmd_id = 0;
+static const gchar *fullcrap_strings[] = { + "you are only fullcrap", + "this is only fooling blabber", + "thats nots really nice", + "Oh I at all do not understand a pancake about what you here talk.", + "it shall be visible will be?" +static PurpleCmdId eight_ball_cmd_id = 0, eight_ball_cmd_func(PurpleConversation *conv, const gchar *cmd, gchar **args,
@@ -84,6 +94,10 @@
numstrings = sizeof(sg_ball_strings) / sizeof(sg_ball_strings[0]);
msgprefix = "The Purple Stargate Ball says";
+ } else if(!strcmp(cmd, "fullcrap")) { + numstrings = sizeof(fullcrap_strings) / sizeof(fullcrap_strings[0]); + msgprefix = "The Purple Fullcrap Ball says"; + msgs = fullcrap_strings; numstrings = sizeof(eight_ball_strings) / sizeof(eight_ball_strings[0]);
msgprefix = "The Purple 8 Ball says";
@@ -123,10 +137,11 @@
plugin_load(PurplePlugin *plugin)
- const gchar *eight_ball_help, *sg_ball_help;
+ const gchar *eight_ball_help, *sg_ball_help, *fullcrap_help; eight_ball_help = _("8ball: sends a random 8ball message");
sg_ball_help = _("sgball: sends a random Stargate Ball message");
+ fullcrap_help = _("fullcrap: sends random fooling blabber"); eight_ball_cmd_id = purple_cmd_register("8ball", "w", PURPLE_CMD_P_PLUGIN,
PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT |
@@ -140,6 +155,12 @@
PURPLE_CMD_FUNC(eight_ball_cmd_func),
+ fullcrap_cmd_id = purple_cmd_register("fullcrap", "w", PURPLE_CMD_P_PLUGIN, + PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_CHAT | + PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, NULL, + PURPLE_CMD_FUNC(eight_ball_cmd_func), --- a/gRIM/gRIM.c Thu Jun 14 16:51:36 2007 -0400
+++ b/gRIM/gRIM.c Sat Jun 30 18:39:20 2007 -0400
@@ -65,33 +65,33 @@
#define LYRICISTS "Kim Fuller and Doug Naylor"
-"If you're in trouble he will save the day",
-"He's brave and he's fearless come what may",
-"Without him the mission would go astray",
-"He's Arnold, Arnold, Arnold Rimmer",
-"Without him life would be much grimmer",
-"He's handsome, trim and no-one slimmer",
-"He will never need a Zimmer",
-"Ask Arnold, Arnold, Arnold Rimmer",
-"More reliable than a garden trimmer",
-"He's never been mistaken for Yul Brynner",
-"He's not bald and his head doesn't glimmer",
-"Master of the wit and the repartee",
-"His command of space directives is uncanny",
-"How come he's such a genius? Don't ask me",
-"Ask Arnold, Arnold, Arnold Rimmer",
-"He's also a fantastic swimmer",
-"And if you play your cards right",
-"Then he just might come around for dinner",
-"He's Arnold, Arnold, Arnold Rimmer",
-"No rhymes left now apart from quimmer",
-"I hope they fade us out before we get to shlimmer",
-"Fade out you stupid brimmer",
+"If you're in trouble he will save the day", +"He's brave and he's fearless come what may", +"Without him the mission would go astray", +"He's Arnold, Arnold, Arnold Rimmer", +"Without him life would be much grimmer", +"He's handsome, trim and no-one slimmer", +"He will never need a Zimmer", +"Ask Arnold, Arnold, Arnold Rimmer", +"More reliable than a garden trimmer", +"He's never been mistaken for Yul Brynner", +"He's not bald and his head doesn't glimmer", +"Master of the wit and the repartee", +"His command of space directives is uncanny", +"How come he's such a genius? Don't ask me", +"Ask Arnold, Arnold, Arnold Rimmer", +"He's also a fantastic swimmer", +"And if you play your cards right", +"Then he just might come around for dinner", +"He's Arnold, Arnold, Arnold Rimmer", +"No rhymes left now apart from quimmer", +"I hope they fade us out before we get to shlimmer", +"Fade out you stupid brimmer", @@ -119,8 +119,7 @@
GtkIMHtml *imhtml = GTK_IMHTML(gtkconv->entry);
- if (data->info->lyric == NULL)
+ if (data->info->lyric == NULL) { /* XXX: free the lyric if it was dyn-allocated */
@@ -131,8 +130,7 @@
list = data->info->lyric;
- if (list->next == NULL)
+ if (list->next == NULL) { /* Is this Ugly or is this UGLY? */
int len = strlen(list->data);
@@ -140,17 +138,14 @@
if (!gdk_color_parse(color, &gdkcolor))
gdkcolor.red = gdkcolor.green = gdkcolor.blue = 0;
inc_r = (255 - (gdkcolor.red >> 8))/len;
inc_g = (255 - (gdkcolor.green >> 8))/len;
inc_b = (255 - (gdkcolor.blue >> 8))/len;
@@ -165,8 +160,7 @@
gdkcolor.green += inc_g << 8;
gdkcolor.blue += inc_b << 8;
msg = g_strdup_printf("<font color=\"%s\">%s</font>", color, (char *)list->data);
msg = g_strdup(*(char*)list->data ? (char*)list->data : " ");
@@ -199,8 +193,7 @@
if (!file) /* XXX: Show an error message that the file doesn't exist */
- while (fgets(str, MAX_LENGTH, file))
+ while (fgets(str, MAX_LENGTH, file)) { char *s = str + strlen(str) - 1;
if (*s == '\r' || *s == '\n')
@@ -222,35 +215,41 @@
/* XXX: Need to manually parse the arguments :-/ */
- if (*args && *(args+1))
+ if (*args && *(args+1)) { /* two parameters: filename duration (in seconds) */
info->lyric = rim_get_file_lines(*args);
sscanf(*(args+1), "%d", &info->time);
/* one parameter: filename */
info->lyric = rim_get_file_lines(*args);
info->time = g_list_length(info->lyric) * 5000; /* at least 5 seconds between two lines */
list = g_list_append(list, g_strdup(LYRICS[i]));
- if (info->lyric == NULL)
+ if(*args && !g_ascii_strcasecmp(*args,"quit")) { + GList *list = NULL, *tmp = NULL; + list = g_list_append(list, "Fine, I'll stop"); + purple_debug_info("grim","HINT: quit with quit\n"); + if (info->lyric == NULL) { return PURPLE_CMD_STATUS_FAILED;
--- a/lastseen/lastseen.c Thu Jun 14 16:51:36 2007 -0400
+++ b/lastseen/lastseen.c Sat Jun 30 18:39:20 2007 -0400
@@ -108,29 +108,19 @@
purple_blist_node_set_int((PurpleBlistNode*)buddy, "signedoff", time(NULL) );
-#if PURPLE_VERSION_CHECK(2,0,0)
drawing_tooltip_cb(PurpleBlistNode *node, GString *str, gboolean full, void *data)
-drawing_tooltip_cb(PurpleBlistNode *node, char **text, void *data)
PurpleBuddy *buddy = NULL;
time_t last = 0, max = 0, off = 0, on = 0;
gchar *seen = NULL, *said = NULL, *offs = NULL, *ons = NULL;
-#if !PURPLE_VERSION_CHECK(2,0,0)
if(PURPLE_BLIST_NODE_IS_BUDDY(node))
-#if PURPLE_VERSION_CHECK(2,0,0)
node = (PurpleBlistNode *)purple_buddy_get_contact((PurpleBuddy *)node);
@@ -167,31 +157,15 @@
said = g_strchomp(g_markup_escape_text(tmp, -1));
-#if PURPLE_VERSION_CHECK(2,0,0)
g_string_append_printf(str,
- "%s %s" /* Last seen */
- "%s %s" /* Last said */
- "%s %s" /* Signed on */
- "%s %s", /* Signed off */
- seen ? _("\n<b>Last Seen:</b>") : "", seen ? seen : "",
- said ? _("\n<b>Last Said:</b>") : "", said ? said : "",
- ons ? _("\n<b>Signed On:</b>") : "", ons ? ons : "",
- offs ? _("\n<b>Signed Off:</b>") : "", offs ? offs : "");
- tmp2 = g_strdup(*text);
- *text = g_strdup_printf("%s" /* existing */
- "%s %s" /* Last seen */
- "%s %s" /* Last said */
- "%s %s" /* Signed on */
- "%s %s", /* Signed off */
- seen ? _("\n<b>Last Seen:</b>") : "", seen ? seen : "",
- said ? _("\n<b>Last Said:</b>") : "", said ? said : "",
- ons ? _("\n<b>Signed On:</b>") : "", ons ? ons : "",
- offs ? _("\n<b>Signed Off:</b>") : "", offs ? offs : "");
+ "%s%s", /* Signed off */ + seen ? _("\n<b>Last Seen</b>: ") : "", seen ? seen : "", + said ? _("\n<b>Last Said</b>: ") : "", said ? said : "", + ons ? _("\n<b>Signed On</b>: ") : "", ons ? ons : "", + offs ? _("\n<b>Signed Off</b>: ") : "", offs ? offs : ""); --- a/listhandler/gen_xml_files.c Thu Jun 14 16:51:36 2007 -0400
+++ b/listhandler/gen_xml_files.c Sat Jun 30 18:39:20 2007 -0400
@@ -80,7 +80,8 @@
/* add the buddy to Purple's blist */
lh_util_add_buddy(group_name, purple_group,
xmlnode_get_attrib(buddy, "screenname"),
- xmlnode_get_attrib(buddy, "alias"), target_account);
+ xmlnode_get_attrib(buddy, "alias"), target_account, + xmlnode_get_attrib(buddy, "notes")); /* get the next buddy in the current group */
buddy = xmlnode_get_next_twin(buddy);
@@ -237,7 +238,7 @@
PurpleBlistNode *root = buddies->root, *g = NULL, *c = NULL, *b = NULL;
xmlnode *group = NULL, *buddy = NULL;
PurpleBuddy *tmpbuddy = NULL;
- const char *tmpalias = NULL, *tmpname = NULL;
+ const char *tmpalias = NULL, *tmpname = NULL, *tmpsetting = NULL; /* iterate through the groups */
for(g = root; g; g = g->next) {
@@ -263,9 +264,11 @@
if(purple_buddy_get_account(tmpbuddy) == source_account) {
tmpalias = purple_buddy_get_contact_alias(tmpbuddy);
tmpname = purple_buddy_get_name(tmpbuddy);
+ tmpsetting = purple_blist_node_get_string(b, "notes"); buddy = xmlnode_new_child(group, "buddy");
xmlnode_set_attrib(buddy, "screenname", tmpname);
+ xmlnode_set_attrib(buddy, "notes", tmpsetting); if(strcmp(tmpalias, tmpname))
xmlnode_set_attrib(buddy, "alias", tmpalias);
@@ -311,7 +314,7 @@
tmpbuddy = (PurpleBuddy *)b;
if(purple_buddy_get_account(tmpbuddy) == source_account) {
tmpalias = purple_buddy_get_alias_only(tmpbuddy);
- if ( tmpalias != NULL ){
+ if (tmpalias != NULL) { tmpname = purple_buddy_get_name(tmpbuddy);
buddy = xmlnode_new_child(parent, "buddy");
xmlnode_set_attrib(buddy, "screenname", tmpname);
@@ -447,13 +450,12 @@
lh_generic_alist_build_tree(void)
- xmlnode *root_node = xmlnode_new("exported_buddy_list");
+ xmlnode *root_node = xmlnode_new("exported_alias_list"); /* since building this tree is really building three smaller trees that
* share a common parent, we'll build each tree separately to make this
* easier to read and understand what goes in each tree (hopefully). */
lh_generic_build_config_tree(xmlnode_new_child(root_node, "config"));
- lh_generic_build_privacy_tree(xmlnode_new_child(root_node, "privacy"));
lh_generic_build_alist_tree(xmlnode_new_child(root_node, "alist"));
--- a/listhandler/lh_util.c Thu Jun 14 16:51:36 2007 -0400
+++ b/listhandler/lh_util.c Sat Jun 30 18:39:20 2007 -0400
@@ -25,7 +25,8 @@
lh_util_add_buddy(const gchar *group, PurpleGroup *purple_group,
- const gchar *buddy, const gchar *alias, PurpleAccount *account)
+ const gchar *buddy, const gchar *alias, PurpleAccount *account, + const gchar *buddynotes) /* create a PurpleBuddy and add it to the list in the specified group.
* The first NULL is because we have no contact. Let the user do that.
@@ -34,7 +35,10 @@
PurpleBuddy *purple_buddy = purple_buddy_new(account, buddy, alias);
purple_blist_add_buddy(purple_buddy, NULL, purple_group, NULL);
- purple_account_add_buddy(account, purple_buddy); /* this is evil */
+ purple_account_add_buddy(account, purple_buddy); + purple_blist_node_set_string((PurpleBlistNode *)purple_buddy, "notes", buddynotes); purple_debug_info("listhandler: import",
"group: %s\tbuddy: %s\talias: %s\thas been added to the list\n",
--- a/m4/pluginpack.m4 Thu Jun 14 16:51:36 2007 -0400
+++ b/m4/pluginpack.m4 Sat Jun 30 18:39:20 2007 -0400
@@ -33,44 +33,48 @@
dnl # Build a list of all the available plugins
dnl #######################################################################
+ if ! test -d "$d"; then + if test -f "$d/Makefile.am" -a ! "$d" = "$srcdir/common" -a ! "$d" = "$srcdir/doc" -a ! "$d" = "$srcdir/m4" -a ! -f "$d/.abusive" -a ! -f "$d/.build" -a ! -f "$d/.incomplete" -a ! -f "$d/.sanity" ; then + AC_ERROR([Directory $d missing sanity]) - if test -f $d/.purple-plugin ; then
+ if test -f "$d/.purple-plugin" ; then if test -f $d/.abusive ; then
PP_PURPLE_ABUSIVE="$PP_PURPLE_ABUSIVE $base"
- elif test -f $d/.build ; then
+ elif test -f "$d/.build" ; then PP_PURPLE_BUILD="$PP_PURPLE_BUILD $base"
- if test -f $d/.incomplete ; then
+ if test -f "$d/.incomplete" ; then PP_PURPLE_INCOMPLETE="$PP_PURPLE_INCOMPLETE $base"
PP_PURPLE="$PP_PURPLE $base"
- elif test -f $d/.pidgin-plugin ; then
- if test -f $d/.abusive ; then
+ elif test -f "$d/.pidgin-plugin" ; then + if test -f "$d/.abusive" ; then PP_PIDGIN_ABUSIVE="$PP_PIDGIN_ABUSIVE $base"
- elif test -f $d/.build ; then
+ elif test -f "$d/.build" ; then PP_PIDGIN_BUILD="$PP_PIDGIN_BUILD $base"
- if test -f $d/.incomplete ; then
+ if test -f "$d/.incomplete" ; then PP_PIDGIN_INCOMPLETE="$PP_PIDGIN_INCOMPLETE $base"
PP_PIDGIN="$PP_PIDGIN $base"
- elif test -f $d/.finch-plugin ; then
- if test -f $d/.abusive ; then
+ elif test -f "$d/.finch-plugin" ; then + if test -f "$d/.abusive" ; then PP_FINCH_ABUSIVE="$PP_FINCH_ABUSIVE $base"
- elif test -f $d/.build ; then
+ elif test -f "$d/.build" ; then PP_FINCH_BUILD="$PP_FINCH_BUILD $base"
- if test -f $d/.incomplete ; then
+ if test -f "$d/.incomplete" ; then PP_FINCH_INCOMPLETE="$PP_FINCH_INCOMPLETE $base"
@@ -88,7 +92,7 @@
dnl #######################################################################
dnl # Now determine which ones have been selected
dnl #######################################################################
- if test x$with_plugins = xdefault ; then
+ if test "x$with_plugins" = "xdefault" ; then exp_plugins=`echo "$with_plugins" | sed 's/,/ /g'`
--- a/po/en_AU.po Thu Jun 14 16:51:36 2007 -0400
+++ b/po/en_AU.po Sat Jun 30 18:39:20 2007 -0400
@@ -8,7 +8,7 @@
"Project-Id-Version: plugin_pack 0.1cvs\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-05 17:06-0500\n"
+"POT-Creation-Date: 2007-06-21 19:55-0400\n" "PO-Revision-Date: 2005-11-21 10:36+1100\n"
"Last-Translator: Peter Lawler <trans@six-by-nine.com.au>\n"
"Language-Team: English/AU <trans@six-by-nine.com.au>\n"
@@ -117,98 +117,109 @@
#. XXX: There should be a way to reset to the default/account-default autoreply
-#: ../autoreply/autoreply.c:225
+#: ../autoreply/autoreply.c:233 msgid "Set autoreply message for %s"
-#: ../autoreply/autoreply.c:227
+#: ../autoreply/autoreply.c:235 msgid "Set Autoreply Message"
-#: ../autoreply/autoreply.c:228
+#: ../autoreply/autoreply.c:236 "The following message will be sent to the buddy when the buddy sends you a "
"message and autoreply is enabled."
-#: ../autoreply/autoreply.c:232
+#: ../autoreply/autoreply.c:240 -#: ../autoreply/autoreply.c:233 ../listhandler/aim_blt_files.c:301
-#: ../listhandler/aim_blt_files.c:465 ../listhandler/gen_xml_files.c:162
-#: ../listhandler/gen_xml_files.c:352 ../listhandler/migrate.c:145
+#: ../autoreply/autoreply.c:241 ../listhandler/aim_blt_files.c:301 +#: ../listhandler/aim_blt_files.c:465 ../listhandler/gen_xml_files.c:190 +#: ../listhandler/gen_xml_files.c:430 ../listhandler/gen_xml_files.c:546 +#: ../listhandler/gen_xml_files.c:623 ../listhandler/migrate.c:145 #: ../listhandler/migrate.c:184
-#: ../autoreply/autoreply.c:246
+#: ../autoreply/autoreply.c:254 msgid "Set _Autoreply Message"
-#: ../autoreply/autoreply.c:255
+#: ../autoreply/autoreply.c:263 msgid "Autoreply message"
-#: ../autoreply/autoreply.c:342
+#: ../autoreply/autoreply.c:350 msgid "Send autoreply messages when"
-#: ../autoreply/autoreply.c:346
+#: ../autoreply/autoreply.c:354 msgid "When my account is _away"
-#: ../autoreply/autoreply.c:350
+#: ../autoreply/autoreply.c:358 msgid "When my account is _idle"
-#: ../autoreply/autoreply.c:354
+#: ../autoreply/autoreply.c:362 -#: ../autoreply/autoreply.c:360
+#: ../autoreply/autoreply.c:369 +#: ../autoreply/autoreply.c:372 -#: ../autoreply/autoreply.c:364
+#: ../autoreply/autoreply.c:376 msgid "Autoreply with status message"
-#: ../autoreply/autoreply.c:366
+#: ../autoreply/autoreply.c:378 -#: ../autoreply/autoreply.c:368
+#: ../autoreply/autoreply.c:380 msgid "Always when there is a status message"
-#: ../autoreply/autoreply.c:370
+#: ../autoreply/autoreply.c:382 msgid "Only when there's no autoreply message"
-#: ../autoreply/autoreply.c:375
+#: ../autoreply/autoreply.c:387 msgid "Delay between autoreplies"
-#: ../autoreply/autoreply.c:379
+#: ../autoreply/autoreply.c:391 msgid "_Minimum delay (mins)"
-#: ../autoreply/autoreply.c:383
+#: ../autoreply/autoreply.c:395 msgid "Times to send autoreplies"
-#: ../autoreply/autoreply.c:387
+#: ../autoreply/autoreply.c:399 -#: ../autoreply/autoreply.c:442
+#: ../autoreply/autoreply.c:454 "I am currently not available. Please leave your message, and I will get back "
"to you as soon as possible."
+#: ../autoreply/autoreply.c:459 +msgid "This is an autoreply: " #: ../awaynotify/awaynotify.c:190
@@ -304,19 +315,27 @@
"are. Completely, thoroughly untested."
-#: ../blistops/blistops.c:112
+#: ../blistops/blistops.c:233 msgid "Hide the buddy list when it is created"
-#: ../blistops/blistops.c:116
+#: ../blistops/blistops.c:237 msgid "Hide the menu in the buddy list window"
-#: ../blistops/blistops.c:172
+#: ../blistops/blistops.c:241 +msgid "Stretch the buddyname if the buddy has no buddyicon." +#: ../blistops/blistops.c:245 +msgid "Show email addresses for all the buddies." +#: ../blistops/blistops.c:302 msgid "Buddy List Options"
-#: ../blistops/blistops.c:173 ../blistops/blistops.c:174
+#: ../blistops/blistops.c:303 ../blistops/blistops.c:304 msgid "Gives extended options to the buddy list"
@@ -505,23 +524,28 @@
-#: ../eight_ball/eight_ball.c:127
+#: ../difftopic/difftopic.c:152 +msgid "<BR>Topic changed from: <BR>%s<BR>To:<BR>%s" +#: ../eight_ball/eight_ball.c:128 msgid "8ball: sends a random 8ball message"
-#: ../eight_ball/eight_ball.c:128
+#: ../eight_ball/eight_ball.c:129 msgid "sgball: sends a random Stargate Ball message"
-#: ../eight_ball/eight_ball.c:195
+#: ../eight_ball/eight_ball.c:196 -#: ../eight_ball/eight_ball.c:196
+#: ../eight_ball/eight_ball.c:197 msgid "Provides Magic 8-ball like functionality"
-#: ../eight_ball/eight_ball.c:197
+#: ../eight_ball/eight_ball.c:198 "Provides Magic 8-ball like functionality with the /8ball command, as well as "
"similar functionality for common Stargate words or phrases with the /sg-ball "
@@ -623,6 +647,35 @@
msgid "Hide All Conversations"
+#: ../highlight/highlight.c:81 +msgid "Highlight History" +#: ../highlight/highlight.c:253 +"/highlight history: shows the list of highlighted sentences from the " +"/highlight clear: clears the history.\n" +"/highlight +<word>: adds <word> to the highlight word list for " +"this conversation only.\n" +"/highlight -<word>: removes <word> from the highlight word list " +"for this conversation only.\n" +#: ../highlight/highlight.c:281 +"Words to highlight on\n" +"(separate words by space)" +#: ../highlight/highlight.c:309 ../nicksaid/nicksaid.c:577 +#: ../highlight/highlight.c:311 ../highlight/highlight.c:312 +msgid "Support for highlighting words." #: ../ignorance/ignorance.c:391
msgid "Successfully removed %s from %s"
@@ -697,7 +750,7 @@
-#: ../ignorance/interface.c:172
+#: ../ignorance/interface.c:172 ../ignore/ignore.c:275 @@ -746,62 +799,119 @@
msgid "Couldn't find pixmap file: %s"
-#: ../irchelper/irchelper.c:920
+#: ../ignore/ignore.c:133 +#: ../ignore/ignore.c:133 +msgid "The following are the current ignore rules" +#: ../ignore/ignore.c:134 +msgid "(Dear God! You are not ignoring any one!)" +#: ../ignore/ignore.c:236 +"ignore [-c] [+<ignore> -<unignore>]<br>Examples:<br> 'ignore " +"+StupidBot -NotABot' \t - (in a chat) Starts ignoring StupidBot, and removes " +"NotABot from ignore list.<br> 'ignore -c +AnotherBot' \t - (in a chat) " +"Starts ignoring AnotherBot, but only in chats.<br> 'ignore +' \t - (in an " +"IM) Starts ignoring this person.<br> 'ignore -' \t - (in an IM) Starts " +"unignoring this person.<br> 'ignore' \t - Lists the current ignore rules." +#: ../ignore/ignore.c:277 +"Flexible plugin to selectively ignore people. Please do not use if you have " +#: ../ignore/ignore.c:278 +"Flexible plugin to selectively ignore people. See '/help ignore' for more " +"Please do not use if you have amnesia." +#: ../irc-more/irc-more.c:86 +msgid "Default Quit Message" +#: ../irc-more/irc-more.c:89 +msgid "Default Part Message" +#: ../irc-more/irc-more.c:92 +msgid "CTCP Version reply" +#: ../irc-more/irc-more.c:116 +#: ../irc-more/irc-more.c:118 ../irc-more/irc-more.c:119 +"Adds a couple of options for IRC: Customized default quit message, and CTCP " +#: ../irchelper/irchelper.c:948 msgid "You have been added to the access list."
-#: ../irchelper/irchelper.c:922
+#: ../irchelper/irchelper.c:950 msgid "You have been added to the access list with an access level of %s."
-#: ../irchelper/irchelper.c:956
+#: ../irchelper/irchelper.c:984 msgid "You have been removed from the access list."
-#: ../irchelper/irchelper.c:1065
+#: ../irchelper/irchelper.c:1093 msgid "NickServ Authentication Error"
-#: ../irchelper/irchelper.c:1066
+#: ../irchelper/irchelper.c:1094 msgid "Error authenticating with NickServ"
-#: ../irchelper/irchelper.c:1067 ../irchelper/irchelper.c:1093
-#: ../irchelper/irchelper.c:1119
+#: ../irchelper/irchelper.c:1095 ../irchelper/irchelper.c:1121 +#: ../irchelper/irchelper.c:1147 msgid "Check your password."
-#: ../irchelper/irchelper.c:1091
+#: ../irchelper/irchelper.c:1119 msgid "GameSurge Authentication Error"
-#: ../irchelper/irchelper.c:1092
+#: ../irchelper/irchelper.c:1120 msgid "Error authenticating with AuthServ"
-#: ../irchelper/irchelper.c:1117
+#: ../irchelper/irchelper.c:1145 msgid "QuakeNet Authentication Error"
-#: ../irchelper/irchelper.c:1118
+#: ../irchelper/irchelper.c:1146 msgid "Error authenticating with Q"
#. Register protocol preferences.
-#: ../irchelper/irchelper.c:1157
+#: ../irchelper/irchelper.c:1185 -#: ../irchelper/irchelper.c:1160
+#: ../irchelper/irchelper.c:1188 -#: ../irchelper/irchelper.c:1164
+#: ../irchelper/irchelper.c:1192 msgid "Disconnect ghosts (Duplicate nicknames)"
-#: ../irchelper/irchelper.c:1168
+#: ../irchelper/irchelper.c:1196 msgid "Operator password"
@@ -929,7 +1039,8 @@
#: ../listhandler/aim_blt_files.c:287 ../listhandler/aim_blt_files.c:453
-#: ../listhandler/gen_xml_files.c:147 ../listhandler/gen_xml_files.c:338
+#: ../listhandler/gen_xml_files.c:175 ../listhandler/gen_xml_files.c:416 +#: ../listhandler/gen_xml_files.c:532 ../listhandler/gen_xml_files.c:608 #: ../listhandler/migrate.c:129 ../listhandler/migrate.c:169
#: ../schedule/pidgin-schedule.c:292
@@ -937,14 +1048,16 @@
#. and finally we can create the request
#: ../listhandler/aim_blt_files.c:297
-msgid "Buddy List Importer"
+msgid "List Handler: Importing" -#: ../listhandler/aim_blt_files.c:298 ../listhandler/gen_xml_files.c:159
+#: ../listhandler/aim_blt_files.c:298 ../listhandler/gen_xml_files.c:187 +#: ../listhandler/gen_xml_files.c:620 msgid "Choose the account to import to:"
-#: ../listhandler/aim_blt_files.c:299 ../listhandler/gen_xml_files.c:160
+#: ../listhandler/aim_blt_files.c:299 ../listhandler/gen_xml_files.c:188 +#: ../listhandler/gen_xml_files.c:621 @@ -954,14 +1067,16 @@
#. and finally we can create the request
#: ../listhandler/aim_blt_files.c:463
-msgid "Buddy List Exporter"
+msgid "List Handler: Exporting" -#: ../listhandler/aim_blt_files.c:464 ../listhandler/gen_xml_files.c:351
+#: ../listhandler/aim_blt_files.c:464 ../listhandler/gen_xml_files.c:429 +#: ../listhandler/gen_xml_files.c:545 msgid "Choose the account to export from:"
-#: ../listhandler/aim_blt_files.c:465 ../listhandler/gen_xml_files.c:352
+#: ../listhandler/aim_blt_files.c:465 ../listhandler/gen_xml_files.c:430 +#: ../listhandler/gen_xml_files.c:546 @@ -970,52 +1085,64 @@
#. and finally we can create the request
-#: ../listhandler/gen_xml_files.c:158
+#: ../listhandler/gen_xml_files.c:186 ../listhandler/gen_xml_files.c:619 msgid "Listhandler - Importing"
-#: ../listhandler/gen_xml_files.c:312
+#: ../listhandler/gen_xml_files.c:390 msgid "Save Generic .blist File"
#. and finally we can create the request
-#: ../listhandler/gen_xml_files.c:350
+#: ../listhandler/gen_xml_files.c:428 ../listhandler/gen_xml_files.c:544 msgid "Listhandler - Exporting"
-#: ../listhandler/gen_xml_files.c:363
+#: ../listhandler/gen_xml_files.c:441 ../listhandler/gen_xml_files.c:650 msgid "Choose A Generic Buddy List File To Import"
+#: ../listhandler/gen_xml_files.c:505 +msgid "Save Generic .alist File" #: ../listhandler/listhandler.c:37
-msgid "Import AIM Buddy List File"
+msgid "Import AIM Buddy List File (.blt)" #: ../listhandler/listhandler.c:41
-msgid "Import Generic Buddy List File"
+msgid "Import Generic Buddy List File (.xml)" #: ../listhandler/listhandler.c:45
-msgid "Export AIM Buddy List File"
+msgid "Import Generic Alias List File" #: ../listhandler/listhandler.c:49
-msgid "Export Generic Buddy List File"
+msgid "Export AIM Buddy List File" #: ../listhandler/listhandler.c:53
+msgid "Export Generic Buddy List File" +#: ../listhandler/listhandler.c:57 +msgid "Export Generic Alias List File" +#: ../listhandler/listhandler.c:61 msgid "Copy Buddies From One Account to Another"
-#: ../listhandler/listhandler.c:100
+#: ../listhandler/listhandler.c:108 -#: ../listhandler/listhandler.c:102
+#: ../listhandler/listhandler.c:110 msgid "Provides numerous user-requested list-handling capabilities."
-#: ../listhandler/listhandler.c:105
+#: ../listhandler/listhandler.c:113 "Provides numerous user-requested list-handling capabilities, such as "
"importing and exporting of AIM .blt files and generic protocol-agnostic XML ."