diff src/dialogs.c @ 710:efd72a117875

[gaim-migrate @ 720] yay, icq-style aliasing. joy. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 17 Aug 2000 13:07:52 +0000
parents f8acdd22065a
children d7c39f12eb89
line wrap: on
line diff
--- a/src/dialogs.c	Thu Aug 17 10:01:50 2000 +0000
+++ b/src/dialogs.c	Thu Aug 17 13:07:52 2000 +0000
@@ -71,6 +71,9 @@
 static GtkWidget *imdialog = NULL; /*I only want ONE of these :) */
 static GList *dialogwindows = NULL;
 static GtkWidget *exportdialog, *importdialog;
+static GtkWidget *aliasdlg = NULL;
+static GtkWidget *aliasentry = NULL;
+static GtkWidget *aliasname = NULL;
 
 struct create_away {
         GtkWidget *window;
@@ -327,6 +330,12 @@
 	if (dest == importdialog)
 		importdialog = NULL;
 
+	if (dest == aliasdlg) {
+		aliasdlg = NULL;
+		aliasentry = NULL;
+		aliasname = NULL;
+	}
+
         dialogwindows = g_list_remove(dialogwindows, dest);
         gtk_widget_destroy(dest);
 
@@ -766,7 +775,7 @@
 
         c = find_conversation(who);
 
-        add_buddy(grp, who);
+        add_buddy(grp, who, NULL);
 
         if (c != NULL) {
 		GtkWidget *parent = c->add_button->parent;
@@ -893,7 +902,7 @@
         gtk_widget_show(bbox);
         gtk_widget_show(vbox);
 	gtk_widget_show(frame);
-        gtk_window_set_title(GTK_WINDOW(a->window), _("Gaim - Add Buddy"));
+        gtk_window_set_title(GTK_WINDOW(a->window), _("Gaim - Add Group"));
         gtk_window_set_focus(GTK_WINDOW(a->window), a->entry);
 	gtk_container_add(GTK_CONTAINER(frame), vbox);
         gtk_container_add(GTK_CONTAINER(a->window), frame);
@@ -2614,7 +2623,7 @@
 			return;
 	}
         if ((f = fopen(path,"w"))) {
-                serv_build_config(buf, 8192 - 1);
+                serv_build_config(buf, 8192 - 1, TRUE);
                 fprintf(f, "%s\n", buf);
                 fclose(f);
                 chmod(buf, S_IRUSR | S_IWUSR);
@@ -3080,3 +3089,110 @@
 		
 	return;
 }
+
+static void do_alias(GtkWidget *w, gpointer n)
+{
+	char *name, *who;
+	struct buddy *b;
+	name = g_strdup(gtk_entry_get_text(GTK_ENTRY(aliasentry)));
+	if ((b = find_buddy(name)) == NULL) {
+		g_free(name);
+		destroy_dialog(aliasdlg, aliasdlg);
+		return;
+	}
+	g_snprintf(b->show, sizeof(b->show), "%s", gtk_entry_get_text(GTK_ENTRY(aliasname)));
+	do_export(0, 0);
+	who = g_malloc(sizeof(b->show) + 10);
+	strcpy(who, b->show);
+	gtk_label_set(GTK_LABEL(b->label), who);
+	g_free(who);
+	set_buddy(b);
+	g_free(name);
+	destroy_dialog(aliasdlg, aliasdlg);
+}
+
+void alias_dialog(struct buddy *b)
+{
+	GtkWidget *frame;
+	GtkWidget *vbox;
+	GtkWidget *bbox;
+	GtkWidget *cancel;
+	GtkWidget *add;
+	GtkWidget *label;
+        GtkWidget *topbox;
+
+	if (aliasdlg) {
+		gtk_entry_set_text(GTK_ENTRY(aliasentry), b->name);
+		gtk_widget_show(aliasdlg);
+		return;
+	}
+
+        aliasdlg = gtk_window_new(GTK_WINDOW_DIALOG);
+	gtk_window_set_policy(GTK_WINDOW(aliasdlg), FALSE, FALSE, TRUE);
+	gtk_widget_show(aliasdlg);
+	dialogwindows = g_list_prepend(dialogwindows, aliasdlg);
+
+	bbox = gtk_hbox_new(TRUE, 10);
+        topbox = gtk_hbox_new(FALSE, 5);
+        vbox = gtk_vbox_new(FALSE, 5);
+
+        aliasentry = gtk_entry_new();
+	aliasname = gtk_entry_new();
+        /* Put the buttons in the box */
+
+	add = picture_button(aliasdlg, _("Add"), add_xpm);
+
+	cancel = picture_button(aliasdlg, _("Cancel"), cancel_xpm);
+
+        gtk_box_pack_start(GTK_BOX(bbox), add, FALSE, FALSE, 5);
+        gtk_box_pack_end(GTK_BOX(bbox), cancel, FALSE, FALSE, 5);
+
+	frame = gtk_frame_new(NULL);
+	gtk_frame_set_label(GTK_FRAME(frame), _("Alias Buddy"));
+
+        label = gtk_label_new(_("Buddy"));
+        gtk_widget_show(label);
+        gtk_box_pack_start(GTK_BOX(topbox), label, FALSE, FALSE, 5);
+        gtk_box_pack_start(GTK_BOX(topbox), aliasentry, FALSE, FALSE, 5);
+	label = gtk_label_new(_("Alias"));
+	gtk_widget_show(label);
+        gtk_box_pack_start(GTK_BOX(topbox), label, FALSE, FALSE, 5);
+        gtk_box_pack_start(GTK_BOX(topbox), aliasname, FALSE, FALSE, 5);
+
+	gtk_entry_set_text(GTK_ENTRY(aliasentry), b->name);
+	gtk_entry_set_text(GTK_ENTRY(aliasname), b->show);
+
+        /* And the boxes in the box */
+        gtk_box_pack_start(GTK_BOX(vbox), topbox, TRUE, TRUE, 5);
+        gtk_box_pack_start(GTK_BOX(vbox), bbox, TRUE, TRUE, 5);
+
+        /* Handle closes right */
+        gtk_signal_connect(GTK_OBJECT(aliasdlg), "destroy",
+                           GTK_SIGNAL_FUNC(destroy_dialog), aliasdlg);
+        gtk_signal_connect(GTK_OBJECT(cancel), "clicked",
+                           GTK_SIGNAL_FUNC(destroy_dialog), aliasdlg);
+        gtk_signal_connect(GTK_OBJECT(add), "clicked",
+                           GTK_SIGNAL_FUNC(do_alias), NULL);
+        gtk_signal_connect(GTK_OBJECT(aliasentry), "activate",
+                           GTK_SIGNAL_FUNC(do_alias), NULL);
+	gtk_signal_connect(GTK_OBJECT(aliasname), "activate",
+			   GTK_SIGNAL_FUNC(do_alias), NULL);
+        /* Finish up */
+        gtk_widget_show(add);
+        gtk_widget_show(cancel);
+        gtk_widget_show(aliasentry);
+        gtk_widget_show(aliasname);
+        gtk_widget_show(topbox);
+        gtk_widget_show(bbox);
+        gtk_widget_show(vbox);
+	gtk_widget_show(frame);
+        gtk_window_set_title(GTK_WINDOW(aliasdlg), _("Gaim - Alias Buddy"));
+        gtk_window_set_focus(GTK_WINDOW(aliasdlg), aliasentry);
+	gtk_container_add(GTK_CONTAINER(frame), vbox);
+        gtk_container_add(GTK_CONTAINER(aliasdlg), frame);
+	gtk_container_set_border_width(GTK_CONTAINER(aliasdlg), 5);
+        gtk_widget_realize(aliasdlg);
+        aol_icon(aliasdlg->window);
+
+	gtk_widget_show(aliasdlg);
+}