diff src/multi.c @ 1250:b5783215b245

[gaim-migrate @ 1260] decklin's clean up of the account editor, much needed. indent -kr -i8 -l105 -ncs -cp7 -npcs -T GtkWidget -T gpointer -T AppletCallbackFunc -T GtkFunction -T gaim_plugin_remove -T name -T FILE -T gchar -T user_opts -T GdkEvent -T GtkObject ... did about.c, aim.c, away.c, browser.c, buddy_chat.c, gaimrc.c, html.c, idle.c, multi.c. Need to do buddy.c, conversation.c, dialogs.c, oscar.c, perl.c, plugins.c, prefs.c, proxy.c, prpl.c, rvous.c, server.c, sound.c, toc.c, util.c. not doing gtkhtml.c because it's a piece of crap anyway, or *ticker.c because they're syd's. got rid of debug_buff, just debug_printf now. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 13 Dec 2000 20:18:35 +0000
parents 4135d8fc7b4e
children 9da444224f0e
line wrap: on
line diff
--- a/src/multi.c	Wed Dec 13 06:39:24 2000 +0000
+++ b/src/multi.c	Wed Dec 13 20:18:35 2000 +0000
@@ -38,11 +38,13 @@
 GSList *connections;
 
 static GtkWidget *acctedit = NULL;
-static GtkWidget *list = NULL; /* the clist of names in the accteditor */
-static GtkWidget *newmod = NULL; /* the dialog for creating a new account */
-static GtkWidget *newmain = NULL; /* the frame that holds the possible notebook for options */
+static GtkWidget *list = NULL;	/* the clist of names in the accteditor */
+static GtkWidget *newmod = NULL;	/* the dialog for creating a new account */
+static GtkWidget *newmain = NULL;	/* the notebook that holds options */
 static struct aim_user tmpusr;
 
+static void generate_prpl_options(struct aim_user *, GtkWidget *);
+
 struct mod_usr_opt {
 	struct aim_user *user;
 	int opt;
@@ -97,7 +99,8 @@
 #endif
 }
 
-struct gaim_connection *find_gaim_conn_by_name(char *name) {
+struct gaim_connection *find_gaim_conn_by_name(char *name)
+{
 	char *who = g_strdup(normalize(name));
 	GSList *c = connections;
 	struct gaim_connection *g = NULL;
@@ -146,14 +149,14 @@
 static GtkWidget *generate_list()
 {
 	GtkWidget *win;
-	char *titles[4] = {"Screenname", "Currently Online", "Auto-login", "Protocol"};
+	char *titles[4] = { "Screenname", "Currently Online", "Auto-login", "Protocol" };
 	GList *u = aim_users;
 	struct aim_user *a;
 	int i;
 
 	win = gtk_scrolled_window_new(0, 0);
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(win), GTK_POLICY_AUTOMATIC,
-					GTK_POLICY_ALWAYS);
+				       GTK_POLICY_ALWAYS);
 
 	list = gtk_clist_new_with_titles(4, titles);
 	gtk_clist_set_column_width(GTK_CLIST(list), 0, 90);
@@ -196,7 +199,8 @@
 	}
 }
 
-static void free_muo(GtkWidget *b, struct mod_usr_opt *m) {
+static void free_muo(GtkWidget *b, struct mod_usr_opt *m)
+{
 	g_free(m);
 }
 
@@ -211,7 +215,8 @@
 		gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), (tmpusr.options & option));
 	}
 	gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
-	muo->user = u; muo->opt = option;
+	muo->user = u;
+	muo->opt = option;
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(mod_opt), muo);
 	gtk_signal_connect(GTK_OBJECT(button), "destroy", GTK_SIGNAL_FUNC(free_muo), muo);
 	gtk_widget_show(button);
@@ -232,7 +237,8 @@
 			u->password[0] = '\0';
 		gtk_widget_destroy(u->mod);
 		i = gtk_clist_find_row_from_data(GTK_CLIST(list), u);
-		gtk_clist_set_text(GTK_CLIST(list), i, 2, (u->options & OPT_USR_AUTO) ? "True" : "False");
+		gtk_clist_set_text(GTK_CLIST(list), i, 2,
+				   (u->options & OPT_USR_AUTO) ? "True" : "False");
 		gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(u->protocol));
 	} else {
 		char *titles[4];
@@ -267,8 +273,6 @@
 	}
 }
 
-static void generate_options(struct aim_user *, GtkWidget *);
-
 static void set_prot(GtkWidget *opt, int proto)
 {
 	struct aim_user *u = gtk_object_get_user_data(GTK_OBJECT(opt));
@@ -277,17 +281,17 @@
 		for (i = 0; i < 6; i++)
 			u->proto_opt[i][0] = '\0';
 		u->tmp_protocol = proto;
-		generate_options(u, u->main);
+		generate_prpl_options(u, u->main);
 	} else if (tmpusr.tmp_protocol != proto) {
 		int i;
 		for (i = 0; i < 6; i++)
 			tmpusr.proto_opt[i][0] = '\0';
 		tmpusr.tmp_protocol = tmpusr.protocol = proto;
-		generate_options(NULL, newmain);
+		generate_prpl_options(NULL, newmain);
 	}
 }
 
-static GtkWidget *make_protocol_menu(GtkWidget *box, struct aim_user *u, GtkWidget *frame)
+static GtkWidget *make_protocol_menu(GtkWidget *box, struct aim_user *u)
 {
 	GtkWidget *optmenu;
 	GtkWidget *menu;
@@ -334,97 +338,45 @@
 	return optmenu;
 }
 
-static void generate_options(struct aim_user *u, GtkWidget *frame) {
-	GList *tmp;
-	GtkWidget *book;
+static void generate_general_options(struct aim_user *u, GtkWidget *book)
+{
 	GtkWidget *vbox;
 	GtkWidget *hbox;
 	GtkWidget *label;
 	GtkWidget *name;
 	GtkWidget *pass;
-	struct prpl *p;
 
-	tmp = gtk_container_children(GTK_CONTAINER(frame));
-
-	if (u)
-		p = find_prpl(u->tmp_protocol);
-	else
-		p = find_prpl(tmpusr.protocol);
+	vbox = gtk_vbox_new(FALSE, 5);
+	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
+	gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox, gtk_label_new(_("General Options")));
 
-	if (p && p->user_opts) {
-		if (tmp && !GTK_IS_NOTEBOOK(tmp->data)) {
-			gtk_widget_destroy(tmp->data);
-			tmp = NULL;
-		}
-		
-		if (!tmp) {
-			book = gtk_notebook_new();
-			gtk_container_add(GTK_CONTAINER(frame), book);
-			gtk_widget_show(book);
+	hbox = gtk_hbox_new(FALSE, 5);
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
-			vbox = gtk_vbox_new(FALSE, 0);
-			gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox,
-					gtk_label_new(_("General Options")));
-			gtk_widget_show(vbox);
+	label = gtk_label_new(_("Screenname:"));
+	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
-			if (u)
-				(*p->user_opts)(book, u);
-			else
-				(*p->user_opts)(book, &tmpusr);
-		} else {
-			book = (GtkWidget *)tmp->data;
-			gtk_notebook_remove_page(GTK_NOTEBOOK(book), 1);
-			if (u)
-				(*p->user_opts)(book, u);
-			else
-				(*p->user_opts)(book, &tmpusr);
-			return;
-		}
-	} else {
-		if (tmp && GTK_IS_NOTEBOOK(tmp->data)) {
-			gtk_widget_destroy(tmp->data);
-			tmp = NULL;
-		}
+	name = gtk_entry_new();
+	gtk_box_pack_start(GTK_BOX(hbox), name, TRUE, TRUE, 0);
+
+	hbox = gtk_hbox_new(FALSE, 5);
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
-		if (!tmp) {
-			vbox = gtk_vbox_new(FALSE, 0);
-			gtk_container_add(GTK_CONTAINER(frame), vbox);
-			gtk_widget_show(vbox);
-		} else {
-			return;
-		}
-	}
+	label = gtk_label_new(_("Password:"));
+	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
-	hbox = gtk_hbox_new(FALSE, 0);
-	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
+	pass = gtk_entry_new();
+	gtk_box_pack_start(GTK_BOX(hbox), pass, TRUE, TRUE, 0);
+	gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE);
+
+	hbox = gtk_hbox_new(FALSE, 5);
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 	gtk_widget_show(hbox);
 
-	label = gtk_label_new(_("Screenname:"));
-	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
-	gtk_widget_show(label);
-
-	name = gtk_entry_new();
-	gtk_box_pack_start(GTK_BOX(hbox), name, FALSE, FALSE, 5);
-	gtk_widget_show(name);
-
-	hbox = gtk_hbox_new(FALSE, 5);
-	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
-	gtk_widget_show(hbox);
+	label = gtk_label_new(_("Protocol:"));
+	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
-	label = gtk_label_new(_("Password:"));
-	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
-	gtk_widget_show(label);
-
-	pass = gtk_entry_new();
-	gtk_box_pack_start(GTK_BOX(hbox), pass, FALSE, FALSE, 5);
-	gtk_entry_set_visibility(GTK_ENTRY(pass), FALSE);
-	gtk_widget_show(pass);
-
-	hbox = gtk_hbox_new(FALSE, 5);
-	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
-	gtk_widget_show(hbox);
-
-	make_protocol_menu(hbox, u, frame);
+	make_protocol_menu(hbox, u);
 
 	acct_button(_("Remember Password"), u, OPT_USR_REM_PASS, vbox);
 	acct_button(_("Auto-Login"), u, OPT_USR_AUTO, vbox);
@@ -440,6 +392,30 @@
 		tmpusr.name = name;
 		tmpusr.pass = pass;
 	}
+
+	gtk_widget_show_all(vbox);
+}
+
+static void generate_prpl_options(struct aim_user *u, GtkWidget *book)
+{
+	struct prpl *p;
+
+	if (u)
+		p = find_prpl(u->tmp_protocol);
+	else
+		p = find_prpl(tmpusr.protocol);
+
+	/* page 0 is general, keep it. page 1 is options for our
+	 * particular protocol, so clear it out and make a new one. */
+
+	gtk_notebook_remove_page(GTK_NOTEBOOK(book), 1);
+
+	if (p && p->user_opts) {
+		if (u)
+			(*p->user_opts)(book, u);
+		else
+			(*p->user_opts)(book, &tmpusr);
+	}
 }
 
 static void show_acct_mod(struct aim_user *u)
@@ -452,7 +428,7 @@
 	 * to use. make sure to account for the possibility of protocol plugins. */
 	GtkWidget *mod;
 	GtkWidget *box;
-	GtkWidget *frame;
+	GtkWidget *book;
 	GtkWidget *hbox;
 	GtkWidget *button;
 
@@ -469,48 +445,45 @@
 	gtk_window_set_wmclass(GTK_WINDOW(mod), "account", "Gaim");
 	gtk_widget_realize(mod);
 	aol_icon(mod->window);
-	gtk_container_border_width(GTK_CONTAINER(mod), 10);
 	gtk_window_set_title(GTK_WINDOW(mod), _("Gaim - Modify Account"));
-	gtk_window_set_policy(GTK_WINDOW(mod), 0, 1, 1); /* i know, i'm odd */
-	gtk_signal_connect(GTK_OBJECT(mod), "destroy",
-			   GTK_SIGNAL_FUNC(delmod), u);
+	gtk_window_set_policy(GTK_WINDOW(mod), FALSE, TRUE, TRUE);	/* nothing odd here :) */
+	gtk_signal_connect(GTK_OBJECT(mod), "destroy", GTK_SIGNAL_FUNC(delmod), u);
 
-	box = gtk_vbox_new(FALSE, 0);
+	box = gtk_vbox_new(FALSE, 5);
+	gtk_container_border_width(GTK_CONTAINER(mod), 5);
 	gtk_container_add(GTK_CONTAINER(mod), box);
-	gtk_widget_show(box);
+
+	book = gtk_notebook_new();
+	gtk_box_pack_start(GTK_BOX(box), book, FALSE, FALSE, 0);
 
-	frame = gtk_frame_new(_("Modify Account"));
-	gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5);
-	gtk_widget_show(frame);
-
-	if (u) u->tmp_protocol = u->protocol;
-	else tmpusr.tmp_protocol = tmpusr.protocol;
-	generate_options(u, frame);
+	if (u)
+		u->tmp_protocol = u->protocol;
+	else
+		tmpusr.tmp_protocol = tmpusr.protocol;
+	generate_general_options(u, book);
+	generate_prpl_options(u, book);
 
 	hbox = gtk_hbox_new(FALSE, 5);
-	gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5);
-	gtk_widget_show(hbox);
+	gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0);
 
 	button = picture_button(mod, _("Cancel"), cancel_xpm);
-	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5);
+	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cancel_mod), u);
-	gtk_widget_show(button);
 
 	button = picture_button(mod, _("OK"), ok_xpm);
-	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5);
+	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(ok_mod), u);
-	gtk_widget_show(button);
 
 	if (u) {
 		u->mod = mod;
-		u->main = frame; /* ha, get it? :) */
+		u->main = book;	/* sorry, i think i broke the joke :) */
 		u->tmp_options = u->options;
 	} else {
 		newmod = mod;
-		newmain = frame;
+		newmain = book;
 	}
 
-	gtk_widget_show(mod);
+	gtk_widget_show_all(mod);
 }
 
 static void add_acct(GtkWidget *w, gpointer d)
@@ -565,7 +538,10 @@
 	GtkWidget *label;
 	GtkWidget *button;
 
-	if (u->passprmt) { gtk_widget_show(u->passprmt); return; }
+	if (u->passprmt) {
+		gtk_widget_show(u->passprmt);
+		return;
+	}
 	u->passprmt = gtk_window_new(GTK_WINDOW_DIALOG);
 	gtk_window_set_wmclass(GTK_WINDOW(u->passprmt), "password", "Gaim");
 	gtk_container_border_width(GTK_CONTAINER(u->passprmt), 5);
@@ -635,7 +611,7 @@
 		}
 	}
 }
-		
+
 static void del_acct(GtkWidget *w, gpointer d)
 {
 	int row = -1;
@@ -657,60 +633,55 @@
 void account_editor(GtkWidget *w, GtkWidget *W)
 {
 	/* please kill me */
-	GtkWidget *frame;
-	GtkWidget *box;
-	GtkWidget *list;
+	GtkWidget *vbox;
 	GtkWidget *hbox;
-	GtkWidget *button; /* used for many things */
+	GtkWidget *list;
+	GtkWidget *button;	/* used for many things */
 
-	if (acctedit) { gtk_widget_show(acctedit); return; }
+	if (acctedit) {
+		gtk_widget_show(acctedit);
+		return;
+	}
 
 	acctedit = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_window_set_title(GTK_WINDOW(acctedit), _("Gaim - Account Editor"));
 	gtk_window_set_wmclass(GTK_WINDOW(acctedit), "accounteditor", "Gaim");
 	gtk_widget_realize(acctedit);
 	aol_icon(acctedit->window);
-	gtk_container_border_width(GTK_CONTAINER(acctedit), 10);
 	gtk_widget_set_usize(acctedit, -1, 200);
-	gtk_signal_connect(GTK_OBJECT(acctedit), "destroy",
-			   GTK_SIGNAL_FUNC(delete_acctedit), W);
+	gtk_signal_connect(GTK_OBJECT(acctedit), "destroy", GTK_SIGNAL_FUNC(delete_acctedit), W);
 
-	frame = gtk_frame_new(_("Account Editor"));
-	gtk_container_add(GTK_CONTAINER(acctedit), frame);
-	gtk_widget_show(frame);
-
-	box = gtk_vbox_new(FALSE, 5);
-	gtk_container_add(GTK_CONTAINER(frame), box);
-	gtk_widget_show(box);
+	vbox = gtk_vbox_new(FALSE, 5);
+	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
+	gtk_container_add(GTK_CONTAINER(acctedit), vbox);
 
 	list = generate_list();
-	gtk_box_pack_start(GTK_BOX(box), list, TRUE, TRUE, 5);
+	gtk_box_pack_start(GTK_BOX(vbox), list, TRUE, TRUE, 0);
 
 	hbox = gtk_hbox_new(TRUE, 5);
-	gtk_box_pack_end(GTK_BOX(box), hbox, FALSE, FALSE, 5);
-	gtk_widget_show(hbox);
+	gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	button = picture_button(acctedit, _("Add"), gnome_add_xpm);
-	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 5);
+	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(add_acct), NULL);
 
 	button = picture_button(acctedit, _("Modify"), gnome_preferences_xpm);
-	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 5);
+	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(mod_acct), NULL);
 
 	button = picture_button(acctedit, _("Sign On/Off"), join_xpm);
-	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 5);
+	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(acct_signin), NULL);
 
 	button = picture_button(acctedit, _("Delete"), gnome_remove_xpm);
-	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 5);
+	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(del_acct), NULL);
 
 	button = picture_button(acctedit, _("Close"), gnome_close_xpm);
-	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 5);
+	gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(acctedit_close), W);
 
-	gtk_widget_show(acctedit);
+	gtk_widget_show_all(acctedit);
 }
 
 void account_online(struct gaim_connection *gc)
@@ -721,12 +692,12 @@
 	if (gc->meter)
 		gtk_widget_destroy(gc->meter);
 	gc->meter = NULL;
-	
+
 	/* then we do the buddy list stuff */
 	if (mainwindow)
 		gtk_widget_hide(mainwindow);
 	show_buddy_list();
-	
+
 #ifdef USE_APPLET
 	if (general_options & OPT_GEN_APP_BUDDY_SHOW) {
 		refresh_buddy_window();
@@ -749,7 +720,8 @@
 	plugin_event(event_signon, gc, 0, 0, 0);
 
 	/* everything for the account editor */
-	if (!acctedit) return;
+	if (!acctedit)
+		return;
 	i = gtk_clist_find_row_from_data(GTK_CLIST(list), gc->user);
 	gtk_clist_set_text(GTK_CLIST(list), i, 1, "Yes");
 	gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(gc->protocol));
@@ -763,8 +735,9 @@
 	if (gc->meter)
 		gtk_widget_destroy(gc->meter);
 	gc->meter = NULL;
-	gc->user->gc = NULL; /* wasn't that awkward? */
-	if (!acctedit) return;
+	gc->user->gc = NULL;	/* wasn't that awkward? */
+	if (!acctedit)
+		return;
 	i = gtk_clist_find_row_from_data(GTK_CLIST(list), gc->user);
 	gtk_clist_set_text(GTK_CLIST(list), i, 1, "No");
 	redo_convo_menus();
@@ -787,15 +760,18 @@
 	}
 }
 
-static void cancel_signon(GtkWidget *button, struct gaim_connection *gc) {
+static void cancel_signon(GtkWidget *button, struct gaim_connection *gc)
+{
 	signoff(gc);
 }
 
-static gint meter_destroy(GtkWidget *meter, GdkEvent *evt, struct gaim_connection *gc) {
+static gint meter_destroy(GtkWidget *meter, GdkEvent *evt, struct gaim_connection *gc)
+{
 	return TRUE;
 }
 
-void set_login_progress(struct gaim_connection *gc, float howfar, char *message) {
+void set_login_progress(struct gaim_connection *gc, float howfar, char *message)
+{
 	if (mainwindow)
 		gtk_widget_hide(mainwindow);