diff src/dialogs.c @ 2743:9f71beb77c60

[gaim-migrate @ 2756] I didnt test this but it should work committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Sun, 18 Nov 2001 04:19:49 +0000
parents f3c094e78609
children 0c8de85fee62
line wrap: on
line diff
--- a/src/dialogs.c	Sun Nov 18 00:21:49 2001 +0000
+++ b/src/dialogs.c	Sun Nov 18 04:19:49 2001 +0000
@@ -96,6 +96,16 @@
 static GtkWidget *rename_dialog = NULL;
 static GtkWidget *rename_bud_dialog = NULL;
 
+struct confirm_del {
+	GtkWidget *window;
+	GtkWidget *label;
+	GtkWidget *ok;
+	GtkWidget *cancel;
+	GtkWidget *checkbox;	
+	char name[1024];
+	struct gaim_connection *gc;
+};
+
 struct create_away {
 	GtkWidget *window;
 	GtkWidget *entry;
@@ -103,7 +113,6 @@
 	struct away_message *mess;
 };
 
-
 struct warning {
 	GtkWidget *window;
 	GtkWidget *anon;
@@ -413,17 +422,116 @@
 	gtk_box_pack_start(GTK_BOX(fbox), bbox, FALSE, FALSE, 5);
 	gtk_widget_show(bbox);
 
-	warn = picture_button(w->window, _("Warn"), warn_xpm);
-	gtk_box_pack_start(GTK_BOX(bbox), warn, FALSE, FALSE, 5);
-	gtk_signal_connect(GTK_OBJECT(warn), "clicked", GTK_SIGNAL_FUNC(do_warn), w);
-
 	cancel = picture_button(w->window, _("Cancel"), cancel_xpm);
 	gtk_box_pack_end(GTK_BOX(bbox), cancel, FALSE, FALSE, 5);
 	gtk_signal_connect(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), w->window);
 
+	warn = picture_button(w->window, _("Warn"), warn_xpm);
+	gtk_box_pack_end(GTK_BOX(bbox), warn, FALSE, FALSE, 5);
+	gtk_signal_connect(GTK_OBJECT(warn), "clicked", GTK_SIGNAL_FUNC(do_warn), w);
+
 	gtk_widget_show(w->window);
 }
 
+void do_remove_buddy(GtkWidget *w, struct buddy *b)
+{
+	struct group *g = find_group_by_buddy(b->gc, b->name);
+	struct gaim_connection *gc = b->gc;
+	struct conversation *cv;
+
+	if (!b)
+		return;
+
+	debug_printf(_("Removing '%s' from buddylist.\n"), b->name);
+	serv_remove_buddy(b->gc, b->name, g->name);
+	remove_buddy(gc, g, b);
+	do_export(gc);
+	build_edit_tree();
+
+	cv = find_conversation(b->name);
+
+	if (cv)
+		update_convo_add_button(cv);
+
+}
+
+void toggle_confirm_del_cb(GtkWidget *w, int opt)
+{
+	im_options = im_options ^ opt;
+}
+
+void show_confirm_del(struct gaim_connection *gc, gchar *name)
+{
+	struct confirm_del *b = g_new0(struct confirm_del, 1);
+	struct buddy *bd;
+	GtkWidget *hbox;
+	GtkWidget *vbox;
+	GtkWidget *fbox;
+	GtkWidget *frame;
+	gchar tmp[2048];
+
+	GAIM_DIALOG(b->window);
+	dialogwindows = g_list_prepend(dialogwindows, b->window);
+
+	g_snprintf(tmp, sizeof(tmp), _("Gaim - Remove %s?"), name);
+	gtk_window_set_title(GTK_WINDOW(b->window), tmp);
+	gtk_window_set_wmclass(GTK_WINDOW(b->window), "confirm_del", "Gaim");
+	gtk_window_set_policy(GTK_WINDOW(b->window), FALSE, FALSE, TRUE);
+	gtk_signal_connect(GTK_OBJECT(b->window), "delete_event",
+			   GTK_SIGNAL_FUNC(destroy_dialog), b->window);
+
+	gtk_widget_realize(b->window);
+
+	vbox = gtk_vbox_new(FALSE, 5);
+	gtk_container_add(GTK_CONTAINER(b->window), vbox);
+	gtk_widget_show(vbox);
+
+	frame = gtk_frame_new(_("Remove Buddy"));
+	gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0);
+	gtk_container_set_border_width(GTK_CONTAINER(frame), 5);
+	gtk_widget_show(frame);	
+
+	fbox = gtk_vbox_new(FALSE, 5);
+	gtk_container_add(GTK_CONTAINER(frame), fbox);
+	gtk_container_set_border_width(GTK_CONTAINER(fbox), 5);
+	gtk_widget_show(fbox);
+
+	g_snprintf(tmp, sizeof(tmp), _("You are about to remove '%s' from\nyour buddylist. Do you want to continue?"), name);
+	b->label = gtk_label_new(tmp);
+	gtk_misc_set_alignment(GTK_MISC(b->label), 0, 0.5);
+	gtk_label_set_justify(GTK_LABEL(b->label), GTK_JUSTIFY_LEFT);
+	gtk_box_pack_start(GTK_BOX(fbox), b->label, FALSE, FALSE, 0);
+	gtk_widget_show(b->label);
+
+	b->checkbox = gtk_check_button_new_with_label(_("Do not ask me this question again"));
+	gtk_signal_connect(GTK_OBJECT(b->checkbox), "clicked",
+			   GTK_SIGNAL_FUNC(toggle_confirm_del_cb), (int *)OPT_IM_DONT_CONFIRM_DEL);
+	gtk_box_pack_start(GTK_BOX(fbox), b->checkbox, FALSE, FALSE, 0);
+	gtk_widget_show(b->checkbox);
+
+	hbox = gtk_hbox_new(FALSE, 5);
+	gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, FALSE, 0);
+	gtk_widget_show(hbox);
+
+	b->ok = picture_button(b->window, _("Accept"), ok_xpm);
+	gtk_box_pack_start(GTK_BOX(hbox), b->ok, FALSE, FALSE, 5);
+
+	bd = find_buddy(gc, name);
+
+	if (bd)
+		gtk_signal_connect(GTK_OBJECT(b->ok), "clicked", GTK_SIGNAL_FUNC(do_remove_buddy), bd);
+	
+	gtk_signal_connect(GTK_OBJECT(b->ok), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), b->window);
+
+	b->cancel = picture_button(b->window, _("Cancel"), cancel_xpm);
+	gtk_box_pack_start(GTK_BOX(hbox), b->cancel, FALSE, FALSE, 5);
+	gtk_signal_connect(GTK_OBJECT(b->cancel), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), b->window);
+	
+	gtk_widget_show(b->window);	
+}
+
+
 
 /*------------------------------------------------------------------------*/
 /*  The dialog for getting an error                                       */
@@ -3759,6 +3867,7 @@
 	gtk_widget_show_all(rename_dialog);
 }
 
+
 /*------------------------------------------------------------------------*/
 /*  The dialog for renaming buddies                                       */
 /*------------------------------------------------------------------------*/