src/pounce.c

changeset 5032
2276c67b0243
parent 4793
1da93f6c80f3
child 5043
9b6a7ac22f5d
--- a/src/pounce.c	Sat Apr 05 08:03:10 2003 +0000
+++ b/src/pounce.c	Sat Apr 05 10:14:21 2003 +0000
@@ -1,8 +1,10 @@
-/*
+/**
+ * @file pounce.h Buddy pounce API
+ *
  * gaim
  *
- * Copyright (C) 1998-2003, Mark Spencer <markster@marko.net>
- *
+ * Copyright (C) 2003, Christian Hammond <chipx86@gnupdate.org>
+ * 
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -18,598 +20,168 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  */
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-
 #include "gaim.h"
-#include "prpl.h"
-#include "pounce.h"
-
-GtkWidget *bpmenu = NULL;
 
-void rem_bp(GtkWidget *w, struct buddy_pounce *b)
-{
-	buddy_pounces = g_list_remove(buddy_pounces, b);
-	do_bp_menu();
-	save_prefs();
-}
-
-void do_pounce(struct gaim_connection *gc, char *name, int when)
-{
-	char *who;
-
-	struct buddy_pounce *b;
-	struct gaim_conversation *c;
-	struct gaim_account *account;
-
-	GList *bp = buddy_pounces;
+static GList *pounces = NULL;
 
-	who = g_strdup(normalize (name));
-
-	while (bp) {
-		b = (struct buddy_pounce *)bp->data;
-		bp = bp->next;	/* increment the list here because rem_bp can make our handle bad */
-
-		if (!(b->options & when))
-			continue;
-
-		account = gaim_account_find(b->pouncer, b->protocol);	/* find our user */
-		if (account == NULL)
-			continue;
-
-		/* check and see if we're signed on as the pouncer */
-		if (account->gc != gc)
-			continue;
-
-		if (!gaim_utf8_strcasecmp(who, normalize (b->name))) {	/* find someone to pounce */
-			if (b->options & OPT_POUNCE_POPUP) {
-				c = gaim_find_conversation(name);
-
-				if (c == NULL)
-					c = gaim_conversation_new(GAIM_CONV_IM, account, name);
-				else
-					gaim_conversation_set_account(c, account);
-			}
-			if (b->options & OPT_POUNCE_NOTIFY) {
-				char tmp[1024];
-
-				/* I know the line below is really ugly. I only did it this way
-				 * because I thought it'd be funny :-) */
+struct gaim_pounce *
+gaim_pounce_new(struct gaim_account *pouncer, const char *pouncee,
+				GaimPounceEvent event, gaim_pounce_cb cb,
+				void *data, void (*free)(void *))
+{
+	struct gaim_pounce *pounce;
 
-				g_snprintf(tmp, sizeof(tmp), 
-					   (when & OPT_POUNCE_TYPING) ? _("%s has started typing to you") :
-					   (when & OPT_POUNCE_SIGNON) ? _("%s has signed on") : 
-					   (when & OPT_POUNCE_UNIDLE) ? _("%s has returned from being idle") : 
-					   _("%s has returned from being away"), name);
-				
-				do_error_dialog(tmp, NULL, GAIM_INFO);
-			}
-			if (b->options & OPT_POUNCE_SEND_IM) {
-				if (strlen(b->message) > 0) {
-					c = gaim_find_conversation(name);
+	if (pouncer == NULL || pouncee == NULL || event == 0 || cb == NULL)
+		return NULL;
 
-					if (c == NULL)
-						c = gaim_conversation_new(GAIM_CONV_IM, account, name);
-					else
-						gaim_conversation_set_account(c, account);
-
-					gaim_conversation_write(c, NULL, b->message, -1,
-											WFLAG_SEND, time(NULL));
-
-					serv_send_im(account->gc, name, b->message, -1, 0);
-				}
-			}
-			if (b->options & OPT_POUNCE_COMMAND) {
-#ifndef _WIN32
-				int pid = fork();
+	pounce = g_new0(struct gaim_pounce, 1);
 
-				if (pid == 0) {
-					char *args[4];
-					args[0] = "sh";
-					args[1] = "-c";
-					args[2] = b->command;
-					args[3] = NULL;
-					execvp(args[0], args);
-					_exit(0);
-				}
-#else
-				STARTUPINFO si;
-				PROCESS_INFORMATION pi;
-
-				ZeroMemory( &si, sizeof(si) );
-				si.cb = sizeof(si);
-				ZeroMemory( &pi, sizeof(pi) );
+	pounce->pouncer  = pouncer;
+	pounce->pouncee  = g_strdup(pouncee);
+	pounce->events   = event;
+	pounce->callback = cb;
+	pounce->data     = data;
+	pounce->free     = free;
 
-				CreateProcess( NULL, b->command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi );
-				CloseHandle( pi.hProcess );
-				CloseHandle( pi.hThread );
-#endif /*_WIN32*/
-			}
-			/*	if (b->options & OPT_POUNCE_SOUND) {
-				if (strlen(b->sound))
-					play_file(b->sound);
-				else
-					play_sound(SND_POUNCE_DEFAULT);
-					}*/
-
-			if (!(b->options & OPT_POUNCE_SAVE))
-				rem_bp(NULL, b);
+	pounces = g_list_append(pounces, pounce);
 
-		}
-	}
-	g_free(who);
-}
-
-static void new_bp_callback(GtkWidget *w, struct buddy *b)
-{
-	if (b)
-		show_new_bp(b->name, b->account->gc, b->idle, b->uc & UC_UNAVAILABLE, NULL);
-	else
-		show_new_bp(NULL, NULL, 0, 0, NULL);
-}
-
-static void edit_bp_callback(GtkWidget *w, struct buddy_pounce *b)
-{
-  show_new_bp(NULL, NULL, 0, 0, b);
+	return pounce;
 }
 
-static GtkTooltips *bp_tooltip = NULL;
-void do_bp_menu()
+void
+gaim_pounce_destroy(struct gaim_pounce *pounce)
 {
-	GtkWidget *menuitem, *mess, *messmenu;
-	static GtkWidget *remmenu;
-	GtkWidget *remitem;
-	GtkWidget *sep;
-	GList *l;
-	struct buddy_pounce *b;
-	GList *bp = buddy_pounces;
-
-	/* Tooltip for editing bp's */
-	if(!bp_tooltip)
-		bp_tooltip = gtk_tooltips_new();
-
-	l = gtk_container_get_children(GTK_CONTAINER(bpmenu));
-
-	while (l) {
-		gtk_widget_destroy(GTK_WIDGET(l->data));
-		l = l->next;
-	}
-
-	remmenu = gtk_menu_new();
-
-	menuitem = gtk_menu_item_new_with_label(_("New Buddy Pounce"));
-	gtk_menu_shell_append(GTK_MENU_SHELL(bpmenu), menuitem);
-	gtk_widget_show(menuitem);
-	g_signal_connect(GTK_OBJECT(menuitem), "activate", G_CALLBACK(new_bp_callback), NULL);
-
-
-	while (bp) {
-
-		b = (struct buddy_pounce *)bp->data;
-		remitem = gtk_menu_item_new_with_label(b->name);
-		gtk_menu_shell_append(GTK_MENU_SHELL(remmenu), remitem);
-		gtk_widget_show(remitem);
-		g_signal_connect(GTK_OBJECT(remitem), "activate", G_CALLBACK(rem_bp), b);
-
-		bp = bp->next;
+	if (pounce == NULL)
+		return;
 
-	}
-
-	menuitem = gtk_menu_item_new_with_label(_("Remove Buddy Pounce"));
-	gtk_menu_shell_append(GTK_MENU_SHELL(bpmenu), menuitem);
-	gtk_widget_show(menuitem);
-	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), remmenu);
-	gtk_widget_show(remmenu);
+	if (pounce->pouncee != NULL)
+		g_free(pounce->pouncee);
 
-	sep = gtk_hseparator_new();
-	menuitem = gtk_menu_item_new();
-	gtk_menu_shell_append(GTK_MENU_SHELL(bpmenu), menuitem);
-	gtk_container_add(GTK_CONTAINER(menuitem), sep);
-	gtk_widget_set_sensitive(menuitem, FALSE);
-	gtk_widget_show(menuitem);
-	gtk_widget_show(sep);
-
-	bp = buddy_pounces;
-
-	while (bp) {
+	pounces = g_list_remove(pounces, pounce);
 
-		b = (struct buddy_pounce *)bp->data;
-
-		menuitem = gtk_menu_item_new_with_label(b->name);
-		gtk_menu_shell_append(GTK_MENU_SHELL(bpmenu), menuitem);
-		messmenu = gtk_menu_new();
-		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), messmenu);
-		gtk_widget_show(menuitem);
+	if (pounce->free != NULL && pounce->data != NULL)
+		pounce->free(pounce->data);
 
-		if (strlen(b->message))
-			mess = gtk_menu_item_new_with_label(b->message);
-		else
-			mess = gtk_menu_item_new_with_label(_("[no message]"));
-		gtk_menu_shell_append(GTK_MENU_SHELL(messmenu), mess);
-		gtk_tooltips_set_tip(bp_tooltip, GTK_WIDGET(mess), _("[Click to edit]"), NULL);
-		gtk_widget_show(mess);
-		g_signal_connect(GTK_OBJECT(mess), "activate", G_CALLBACK(edit_bp_callback), b);
-		bp = bp->next;
-
-	}
-
+	g_free(pounce);
 }
 
-/*------------------------------------------------------------------------*/
-/*  The dialog for new buddy pounces                                      */
-/*------------------------------------------------------------------------*/
-
-
-void do_new_bp(GtkWidget *w, struct addbp *b)
+void
+gaim_pounce_set_events(struct gaim_pounce *pounce, GaimPounceEvent events)
 {
-	struct buddy_pounce *bp;
-	
-	if (strlen(gtk_entry_get_text(GTK_ENTRY(b->nameentry))) == 0) {
-		do_error_dialog(_("Please enter a buddy to pounce."), NULL, GAIM_ERROR);
+	if (pounce == NULL || events == GAIM_POUNCE_NONE)
 		return;
-	}
-
-        if(!b->buddy_pounce)
-		bp = g_new0(struct buddy_pounce, 1);
-	else
-		bp = b->buddy_pounce;
-
-	
-	g_snprintf(bp->name, 80, "%s", gtk_entry_get_text(GTK_ENTRY(b->nameentry)));
-	g_snprintf(bp->message, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->messentry)));
-	g_snprintf(bp->command, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->commentry)));
-	g_snprintf(bp->sound, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->soundentry)));
-	g_snprintf(bp->pouncer, 80, "%s", b->account->username);
-
-	bp->protocol = b->account->protocol;
-
-	bp->options = 0;
-
-	if (GTK_TOGGLE_BUTTON(b->popupnotify)->active)
-		bp->options |= OPT_POUNCE_NOTIFY;
 
-	if (GTK_TOGGLE_BUTTON(b->openwindow)->active)
-		bp->options |= OPT_POUNCE_POPUP;
-
-	if (GTK_TOGGLE_BUTTON(b->sendim)->active)
-		bp->options |= OPT_POUNCE_SEND_IM;
-
-	if (GTK_TOGGLE_BUTTON(b->command)->active)
-		bp->options |= OPT_POUNCE_COMMAND;
-
-	if (GTK_TOGGLE_BUTTON(b->sound)->active)
-		bp->options |= OPT_POUNCE_SOUND;
-
-	if (GTK_TOGGLE_BUTTON(b->p_signon)->active)
-		bp->options |= OPT_POUNCE_SIGNON;
-
-	if (GTK_TOGGLE_BUTTON(b->p_unaway)->active)
-		bp->options |= OPT_POUNCE_UNAWAY;
-
-	if (GTK_TOGGLE_BUTTON(b->p_unidle)->active)
-		bp->options |= OPT_POUNCE_UNIDLE;
-	
-	if (GTK_TOGGLE_BUTTON(b->p_typing)->active)
-		bp->options |= OPT_POUNCE_TYPING;
-
-	if (GTK_TOGGLE_BUTTON(b->save)->active)
-		bp->options |= OPT_POUNCE_SAVE;
-
-	if(!b->buddy_pounce)
-		buddy_pounces = g_list_append(buddy_pounces, bp);
-
-	do_bp_menu();
-
-	gtk_widget_destroy(b->window);
-
-	save_prefs();
-	g_free(b);
+	pounce->events = events;
 }
 
-static void pounce_choose(GtkWidget *opt, struct addbp *b)
+void
+gaim_pounce_set_pouncer(struct gaim_pounce *pounce,
+						struct gaim_account *pouncer)
 {
-	struct gaim_account *account = g_object_get_data(G_OBJECT(opt), "gaim_account");
-	b->account = account;
+	if (pounce == NULL || pouncer == NULL)
+		return;
+
+	pounce->pouncer = pouncer;
+}
+
+void
+gaim_pounce_set_pouncee(struct gaim_pounce *pounce, const char *pouncee)
+{
+	if (pounce == NULL || pouncee == NULL)
+		return;
+
+	if (pounce->pouncee != NULL)
+		g_free(pounce->pouncee);
+
+	pounce->pouncee = (pouncee == NULL ? NULL : g_strdup(pouncee));
 }
 
-static GtkWidget *pounce_user_menu(struct addbp *b, struct gaim_connection *gc)
+void
+gaim_pounce_set_data(struct gaim_pounce *pounce, void *data)
 {
-	GtkWidget *optmenu;
-	GtkWidget *menu;
-	GtkWidget *opt;
-	GSList *u = gaim_accounts;
-	struct gaim_account *account;
-	struct prpl *p;
-	int count = 0;
-	int place = 0;
-	char buf[2048];
+	if (pounce == NULL)
+		return;
+
+	pounce->data = data;
+}
 
-
-	optmenu = gtk_option_menu_new();
-
-	menu = gtk_menu_new();
+GaimPounceEvent
+gaim_pounce_get_events(const struct gaim_pounce *pounce)
+{
+	if (pounce == NULL)
+		return GAIM_POUNCE_NONE;
 
-	while (u) {
-		account = (struct gaim_account *)u->data;
-		p = (struct prpl *)find_prpl(account->protocol);
-		g_snprintf(buf, sizeof buf, "%s (%s)", account->username, (p && p->name)?p->name:_("Unknown"));
-		opt = gtk_menu_item_new_with_label(buf);
-		g_object_set_data(G_OBJECT(opt), "gaim_account", account);
-		g_signal_connect(GTK_OBJECT(opt), "activate", G_CALLBACK(pounce_choose), b);
-		gtk_menu_shell_append(GTK_MENU_SHELL(menu), opt);
-		gtk_widget_show(opt);
+	return pounce->events;
+}
+
+struct gaim_account *
+gaim_pounce_get_pouncer(const struct gaim_pounce *pounce)
+{
+	if (pounce == NULL)
+		return NULL;
 
-		if (b->account == account) {
-			gtk_menu_item_activate(GTK_MENU_ITEM(opt));
-			place = count;
-		}
-
-		count++;
+	return pounce->pouncer;
+}
 
-		u = u->next;
-	}
+const char *
+gaim_pounce_get_pouncee(const struct gaim_pounce *pounce)
+{
+	if (pounce == NULL)
+		return NULL;
 
-	gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu);
-	gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), place);
-
-	b->menu = optmenu;
-
-	return optmenu;
+	return pounce->pouncee;
 }
 
+void *
+gaim_pounce_get_data(const struct gaim_pounce *pounce)
+{
+	if (pounce == NULL)
+		return NULL;
 
-void show_new_bp(char *name, struct gaim_connection *gc, int idle, int away, struct buddy_pounce *edit_bp)
+	return pounce->data;
+}
+
+void
+gaim_pounce_execute(const struct gaim_account *pouncer,
+					const char *pouncee, GaimPounceEvent events)
 {
-	GtkWidget *label;
-	GtkWidget *bbox;
-	GtkWidget *vbox;
-	GtkWidget *button;
-	GtkWidget *frame;
-	GtkWidget *table;
-	GtkWidget *optmenu;
-	GtkWidget *sep;
-	GtkSizeGroup *sg;
+	struct gaim_pounce *pounce;
+
+	if (events == GAIM_POUNCE_NONE || pouncer == NULL || pouncee == NULL)
+		return;
+
+	pounce = gaim_find_pounce(pouncer, pouncee, events);
+
+	if (pounce != NULL && pounce->callback != NULL)
+		pounce->callback(pounce, events, gaim_pounce_get_data(pounce));
+}
 
-	struct addbp *b = g_new0(struct addbp, 1);
-	
-	if(edit_bp) {
-		b->buddy_pounce = edit_bp;
-		b->account = gaim_account_find(edit_bp->pouncer, edit_bp->protocol);
-	} else {
-		b->account = gc ? gc->account : gaim_accounts->data;
-		b->buddy_pounce = NULL;
+struct gaim_pounce *
+gaim_find_pounce(const struct gaim_account *pouncer,
+				 const char *pouncee, GaimPounceEvent events)
+{
+	struct gaim_pounce *pounce;
+	GList *l;
+
+	if (events == GAIM_POUNCE_NONE || pouncer == NULL || pouncee == NULL)
+		return NULL;
+
+	for (l = gaim_get_pounces(); l != NULL; l = l->next) {
+		pounce = (struct gaim_pounce *)l->data;
+
+		if ((gaim_pounce_get_events(pounce) & events) &&
+			(gaim_pounce_get_pouncer(pounce) == pouncer) &&
+			!strcmp(gaim_pounce_get_pouncee(pounce), pouncee)) {
+
+			return pounce;
+		}
 	}
 
-	GAIM_DIALOG(b->window);
-	gtk_window_set_resizable(GTK_WINDOW(b->window), TRUE);
-	gtk_window_set_role(GTK_WINDOW(b->window), "new_bp");
-	gtk_window_set_title(GTK_WINDOW(b->window), _("New Buddy Pounce"));
-	g_signal_connect(GTK_OBJECT(b->window), "destroy", G_CALLBACK(gtk_widget_destroy), b->window);
-	gtk_widget_realize(b->window);
-
-	vbox = gtk_vbox_new(FALSE, 5);
-	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
-	gtk_container_add(GTK_CONTAINER(b->window), vbox);
-	gtk_widget_show(vbox);
-
-	/* <pounce type="who"> */
-	frame = gtk_frame_new(_("Pounce Who"));
-	gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
-	gtk_widget_show(GTK_WIDGET(frame));
-
-	table = gtk_table_new(2, 2, FALSE);
-	gtk_container_add(GTK_CONTAINER(frame), table);
-	gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-	gtk_table_set_col_spacings(GTK_TABLE(table), 5);
-	gtk_table_set_row_spacings(GTK_TABLE(table), 5);
-	gtk_widget_show(table);
-
-	label = gtk_label_new(_("Account"));
-	gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-	gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(label);
-
-	optmenu = pounce_user_menu(b, gc);
-	gtk_table_attach(GTK_TABLE(table), optmenu, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
-	gtk_widget_show(optmenu);
-
-	label = gtk_label_new(_("Buddy"));
-	gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-	gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(label);
-
-	b->nameentry = gtk_entry_new();
-	gtk_table_attach(GTK_TABLE(table), b->nameentry, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0);
-	if (name !=NULL)
-		gtk_entry_set_text(GTK_ENTRY(b->nameentry), name);
-	else if(edit_bp)
-		gtk_entry_set_text(GTK_ENTRY(b->nameentry), edit_bp->name);
-	gtk_window_set_focus(GTK_WINDOW(b->window), b->nameentry);
-	gtk_widget_show(b->nameentry);
-	/* </pounce type="who"> */
-
-
-	/* <pounce type="when"> */
-	frame = gtk_frame_new(_("Pounce When"));
-	gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
-	gtk_widget_show(GTK_WIDGET(frame));
-
-	table = gtk_table_new(2, 2, FALSE);
-	gtk_container_add(GTK_CONTAINER(frame), table);
-	gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-	gtk_table_set_col_spacings(GTK_TABLE(table), 5);
-	gtk_widget_show(table);
-	
-	b->p_signon = gtk_check_button_new_with_label(_("Pounce on sign on"));
-	if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->p_signon), 
-		                           (edit_bp->options & OPT_POUNCE_SIGNON) ? TRUE : FALSE);
-	else
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->p_signon), TRUE);
-	gtk_table_attach(GTK_TABLE(table), b->p_signon, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(b->p_signon);
-
-	b->p_unaway = gtk_check_button_new_with_label(_("Pounce on return from away"));
-	if (away)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->p_unaway), TRUE);
-	else if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->p_unaway), 
-					   (edit_bp->options & OPT_POUNCE_UNAWAY) ? TRUE : FALSE);
-	gtk_table_attach(GTK_TABLE(table), b->p_unaway, 1, 2, 0, 1, GTK_FILL | GTK_EXPAND, 0, 0, 0);
-	gtk_widget_show(b->p_unaway);
-
-	b->p_unidle = gtk_check_button_new_with_label(_("Pounce on return from idle"));
-	if (idle)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->p_unidle), TRUE);
-	else if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->p_unidle), 
-				           (edit_bp->options & OPT_POUNCE_UNIDLE) ? TRUE : FALSE);
-	gtk_table_attach(GTK_TABLE(table), b->p_unidle, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(b->p_unidle);
-	
-	b->p_typing = gtk_check_button_new_with_label(_("Pounce when buddy is typing to you"));
-	if (edit_bp)		
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->p_typing),
-					   (edit_bp->options & OPT_POUNCE_TYPING) ? TRUE : FALSE);
-	gtk_table_attach(GTK_TABLE(table), b->p_typing,1,2,1,2, GTK_FILL | GTK_EXPAND, 0, 0, 0);
-	gtk_widget_show(b->p_typing);
-
-	/* </pounce type="when"> */
-	
-	/* <pounce type="action"> */
-	frame = gtk_frame_new(_("Pounce Action"));
-	gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
-	gtk_widget_show(GTK_WIDGET(frame));
-
-	table = gtk_table_new(4, 2, FALSE);
-	gtk_container_add(GTK_CONTAINER(frame), table);
-	gtk_container_set_border_width(GTK_CONTAINER(table), 5);
-	gtk_table_set_col_spacings(GTK_TABLE(table), 5);
-	gtk_table_set_row_spacings(GTK_TABLE(table), 5);
-	gtk_widget_show(table);
-	
-	b->openwindow = gtk_check_button_new_with_label(_("Open IM Window"));
-	if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->openwindow), 
-			                   (edit_bp->options & OPT_POUNCE_POPUP) ? TRUE : FALSE);
-	else
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->openwindow), FALSE);
-	gtk_table_attach(GTK_TABLE(table), b->openwindow, 0, 1, 0, 1, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(b->openwindow);
-	
-	b->popupnotify = gtk_check_button_new_with_label(_("Popup Notification"));
-	if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->popupnotify), 
-					   (edit_bp->options & OPT_POUNCE_NOTIFY) ? TRUE : FALSE);
-	else
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->popupnotify), FALSE);
-	gtk_table_attach(GTK_TABLE(table), b->popupnotify, 1, 2, 0, 1, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(b->popupnotify);
-
-	b->sendim = gtk_check_button_new_with_label(_("Send Message"));
-	if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->sendim), 
-					   (edit_bp->options & OPT_POUNCE_SEND_IM) ? TRUE : FALSE);
-	else
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->sendim), TRUE);
-	gtk_table_attach(GTK_TABLE(table), b->sendim, 0, 1, 1, 2, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(b->sendim);
-
-	b->messentry = gtk_entry_new();
-	gtk_table_attach(GTK_TABLE(table), b->messentry, 1, 2, 1, 2, GTK_FILL | GTK_EXPAND, 0, 0, 0);
-	g_signal_connect(GTK_OBJECT(b->messentry), "activate", G_CALLBACK(do_new_bp), b);
-	if(edit_bp) {
-		gtk_widget_set_sensitive(GTK_WIDGET(b->messentry), 
-					(edit_bp->options & OPT_POUNCE_SEND_IM) ? TRUE : FALSE);
-		gtk_entry_set_text(GTK_ENTRY(b->messentry), edit_bp->message);
-	}
-	gtk_widget_show(b->messentry);
-
-	g_signal_connect(GTK_OBJECT(b->sendim), "clicked",
-					 G_CALLBACK(gaim_gtk_toggle_sensitive), b->messentry);
-
-	b->command = gtk_check_button_new_with_label(_("Execute command on pounce"));
-	gtk_table_attach(GTK_TABLE(table), b->command, 0, 1, 2, 3, GTK_FILL, 0, 0, 0);
-	if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->command),
-					   (edit_bp->options & OPT_POUNCE_COMMAND) ? TRUE : FALSE);
-	else
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->command), FALSE);
-	gtk_widget_show(b->command);
-
-	b->commentry = gtk_entry_new();
-	gtk_table_attach(GTK_TABLE(table), b->commentry, 1, 2, 2, 3, GTK_FILL | GTK_EXPAND, 0, 0, 0);
-	g_signal_connect(GTK_OBJECT(b->commentry), "activate", G_CALLBACK(do_new_bp), b);
-	if(edit_bp) {
-		gtk_widget_set_sensitive(GTK_WIDGET(b->commentry), 
-					(edit_bp->options & OPT_POUNCE_COMMAND) ? TRUE : FALSE);
-		gtk_entry_set_text(GTK_ENTRY(b->commentry), edit_bp->command);
-	}
-	else
-		gtk_widget_set_sensitive(GTK_WIDGET(b->commentry), FALSE);
-	gtk_widget_show(b->commentry);
-	g_signal_connect(GTK_OBJECT(b->command), "clicked",
-					 G_CALLBACK(gaim_gtk_toggle_sensitive), b->commentry);
-	
-	b->sound = gtk_check_button_new_with_label(_("Play sound on pounce"));
-	if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->sound), 
-					   (edit_bp->options & OPT_POUNCE_SOUND) ? TRUE : FALSE);
-	else
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->sound), FALSE);
-	gtk_table_attach(GTK_TABLE(table), b->sound, 0, 1, 3, 4, GTK_FILL, 0, 0, 0);
-	gtk_widget_show(b->sound);
-
-	b->soundentry = gtk_entry_new();
-	gtk_table_attach(GTK_TABLE(table), b->soundentry, 1, 2, 3, 4, GTK_FILL | GTK_EXPAND, 0, 0, 0);
-	g_signal_connect(GTK_OBJECT(b->soundentry), "activate", G_CALLBACK(do_new_bp), b);
-	if(edit_bp) {
-		gtk_widget_set_sensitive(GTK_WIDGET(b->soundentry), 
-					(edit_bp->options & OPT_POUNCE_SOUND) ? TRUE : FALSE);
-		gtk_entry_set_text(GTK_ENTRY(b->soundentry), edit_bp->sound);
-	} else 
-		gtk_widget_set_sensitive(GTK_WIDGET(b->soundentry), FALSE);
-	gtk_widget_show(b->soundentry);
-	g_signal_connect(GTK_OBJECT(b->sound), "clicked",
-					 G_CALLBACK(gaim_gtk_toggle_sensitive), b->soundentry);
-	/* </pounce type="action"> */
-
-	b->save = gtk_check_button_new_with_label(_("Save this pounce after activation"));
-	gtk_container_set_border_width(GTK_CONTAINER(b->save), 7);
-	if(edit_bp)
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->save),
-					   (edit_bp->options & OPT_POUNCE_SAVE) ? TRUE : FALSE);
-	else
-		gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(b->save), FALSE);
-	gtk_box_pack_start(GTK_BOX(vbox), b->save, FALSE, FALSE, 0);
-	gtk_widget_show(b->save);
-
-	sep = gtk_hseparator_new();
-	gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
-	gtk_widget_show(sep);
-	
-	bbox = gtk_hbox_new(FALSE, 5);
-	gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
-	gtk_widget_show(bbox);
-
-	sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-
-	button = gaim_pixbuf_button_from_stock(_("_Save"), "gtk-execute", GAIM_BUTTON_HORIZONTAL);
-	gtk_size_group_add_widget(sg, button);
-	g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(do_new_bp), b);
-	gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0);
-	gtk_widget_show(button);
-
-	button = gaim_pixbuf_button_from_stock(_("C_ancel"), "gtk-cancel", GAIM_BUTTON_HORIZONTAL);
-	gtk_size_group_add_widget(sg, button);
-	g_signal_connect_swapped(GTK_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy), b->window);
-	gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0);
-	gtk_widget_show(button);
-
-
-	gtk_widget_show(b->window);
+	return NULL;
 }
 
+GList *
+gaim_get_pounces(void)
+{
+	return pounces;
+}

mercurial