diff src/prefs.c @ 3374:3cd2fbddf95a

[gaim-migrate @ 3393] I had terrible days today and yesterday--a really terrible weekend. No cool stuff from me--the prefs away message page works a bit better. Ari and Chip both sent some patches to make things work a bit better in GTK 2, and Etan rewrote the notify plugin so it's really cool now! Thanks, guys! committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Mon, 05 Aug 2002 07:33:09 +0000
parents 0e79bf1d79ea
children 783e982a56da
line wrap: on
line diff
--- a/src/prefs.c	Fri Aug 02 21:25:34 2002 +0000
+++ b/src/prefs.c	Mon Aug 05 07:33:09 2002 +0000
@@ -843,7 +843,7 @@
 	gtk_widget_show (frame);
 	vbox = gtk_vbox_new(FALSE, 5);
 	gtk_container_add (GTK_CONTAINER (frame), vbox);
-	gaim_dropdown(vbox, "Broswer", &web_browser_new, -1, 
+	gaim_dropdown(vbox, "Browser", &web_browser_new, -1, 
 		      "Netscape", BROWSER_NETSCAPE,
 		      "Konqueror", BROWSER_KONQ,
 		      "Mozilla", BROWSER_MOZILLA,
@@ -1035,7 +1035,6 @@
 	gaim_button(_("Sending messages removes away status"), &away_options_new, OPT_AWAY_BACK_ON_IM, vbox);
 	gaim_button(_("Queue new messages when away"), &away_options_new, OPT_AWAY_QUEUE, vbox);
 	gaim_button(_("Ignore new conversations when away"), &away_options_new, OPT_AWAY_DISCARD, vbox);
-	gaim_button(_("Sounds while away"), &sound_options_new, OPT_SOUND_WHEN_AWAY, vbox);
 	gtk_widget_show (vbox);
 
 
@@ -1221,7 +1220,7 @@
 	gtk_tree_model_get_value (model, &iter, 2, &val);
 	sound_row_sel = g_value_get_uint(&val);
 	if (sound_entry)
-		gtk_entry_set_text(sound_entry, sound_file_new[sound_row_sel] ? sound_file_new[sound_row_sel] : "(default)");
+		gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file_new[sound_row_sel] ? sound_file_new[sound_row_sel] : "(default)");
 	g_value_unset (&val);
 	if (sounddialog)
 		gtk_widget_destroy(sounddialog);
@@ -1363,13 +1362,14 @@
 	gchar *message;
 	gchar buffer[BUF_LONG];
 	char *tmp;
+	struct away_message *am;
 
 	if (! gtk_tree_selection_get_selected (sel, &model, &iter))
 		return;
 	gtk_tree_model_get_value (model, &iter, 1, &val);
-	message = g_value_get_string(&val);
+	am = g_value_get_pointer(&val);
 	gtk_imhtml_clear(GTK_IMHTML(away_text));
-	strcpy(buffer, message);
+	strncpy(buffer, am->message, BUF_LONG);
 	tmp = stylize(buffer, BUF_LONG);
 	gtk_imhtml_append_text(GTK_IMHTML(away_text), tmp, -1, GTK_IMHTML_NO_TITLE |
 			       GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL);
@@ -1390,7 +1390,7 @@
 	
 	if (! gtk_tree_selection_get_selected (sel, &prefs_away_store, &iter))
 		return;
-	gtk_tree_model_get_value (prefs_away_store, &iter, 2, &val);
+	gtk_tree_model_get_value (prefs_away_store, &iter, 1, &val);
 	am = g_value_get_pointer (&val);
 	gtk_imhtml_clear(GTK_IMHTML(away_text));
 	rem_away_mess(NULL, am);
@@ -1400,8 +1400,41 @@
 }
 
 #else
-void away_message_sel(GtkWidget *w, GtkWidget *list) {}
-void remove_away_message(GtkWidget *widget, GtkWidget *list) {}
+static struct away_message *cur_message;
+void away_message_sel(GtkWidget *w, struct away_message *a) {
+	gchar buffer[BUF_LONG];
+	char *tmp;
+
+	cur_message = a;
+
+	/* Clear the Box */
+	gtk_imhtml_clear(GTK_IMHTML(away_text));
+
+	/* Fill the text box with new message */
+	strncpy(buffer, a->message, BUF_LONG);
+	tmp = stylize(buffer, BUF_LONG);
+
+	debug_printf("FSD: %s\n", tmp);
+	gtk_imhtml_append_text(GTK_IMHTML(away_text), tmp, -1, GTK_IMHTML_NO_TITLE |
+			       GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL);
+	gtk_imhtml_append_text(GTK_IMHTML(away_text), "<BR>", -1, GTK_IMHTML_NO_TITLE |
+			       GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL);
+	g_free(tmp);
+}
+void remove_away_message(GtkWidget *widget, GtkWidget *list) {
+	GList *i;
+	struct away_message *a;
+
+	i = GTK_LIST(prefs_away_list)->selection;
+
+	if (!i)
+		return;
+	if (!i->next) {
+		gtk_imhtml_clear(GTK_IMHTML(away_text));
+	}
+	a = gtk_object_get_user_data(GTK_OBJECT(i->data));
+	rem_away_mess(NULL, a);
+}
 #endif
 
 GtkWidget *away_message_page() {
@@ -1418,8 +1451,6 @@
 	GtkTreeViewColumn *col;
 	GtkTreeSelection *sel;
 	GtkTreePath *path;
-#else
-	GtkWidget *list;
 #endif
 	GSList *awy = away_messages;
 	struct away_message *a;
@@ -1439,14 +1470,13 @@
 	gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
       
 #if GTK_CHECK_VERSION(1,3,0)
-	prefs_away_store = gtk_list_store_new (3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
+	prefs_away_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_POINTER);
 	while (awy) {
 		a = (struct away_message *)awy->data;
 		gtk_list_store_append (prefs_away_store, &iter);
 		gtk_list_store_set(prefs_away_store, &iter,
-				   0, a->name, 
-				   1, a->message,
-				   2, a, -1);
+				   0, a->name,
+				   1, a, -1);
 		awy = awy->next;
 	}
 	event_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(prefs_away_store));
@@ -1462,16 +1492,32 @@
 	gtk_widget_show(event_view);
 	gtk_container_add(GTK_CONTAINER(sw), event_view);
 #else
-	list = gtk_clist_new(1);
+	prefs_away_list = gtk_list_new();
 	while (awy) {
-		char *msg;
+		GtkWidget *ambox = gtk_hbox_new(FALSE, 5);
+		GtkWidget *list_item =gtk_list_item_new();
+		GtkWidget *label;
 		a = (struct away_message *)awy->data;
-		msg = a->name;
-		gtk_clist_append(GTK_CLIST(list), &msg);
+		gtk_container_add(GTK_CONTAINER(prefs_away_list), list_item);
+		gtk_signal_connect(GTK_OBJECT(list_item), "select", GTK_SIGNAL_FUNC(away_message_sel),
+				   a);
+		gtk_object_set_user_data(GTK_OBJECT(list_item), a);
+
+		gtk_widget_show(list_item);
+
+		ambox = gtk_hbox_new(FALSE, 5);
+		gtk_container_add(GTK_CONTAINER(list_item), ambox);
+		gtk_widget_show(ambox);
+
+		label = gtk_label_new(a->name);
+		gtk_box_pack_start(GTK_BOX(ambox), label, FALSE, FALSE, 5);
+		gtk_widget_show(label);
+
 		awy = awy->next;
+		
 	}
-	gtk_widget_show(list);
-	gtk_container_add(GTK_CONTAINER(sw), list);
+	gtk_widget_show(prefs_away_list);
+	gtk_container_add(GTK_CONTAINER(sw), prefs_away_list);
 #endif
 
 	gtk_widget_show (vbox);
@@ -1504,8 +1550,6 @@
 	g_signal_connect (G_OBJECT (sel), "changed",
 			  G_CALLBACK (away_message_sel),
 			  NULL);
-#else
-	gtk_signal_connect(GTK_OBJECT(list), "changed", GTK_SIGNAL_FUNC(away_message_sel), NULL);
 #endif	
 	hbox = gtk_hbox_new(TRUE, 5);
 	gtk_widget_show(hbox);
@@ -1526,7 +1570,7 @@
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(remove_away_message), event_view);
 #else
 	button = picture_button(prefs, _("Remove"), gnome_remove_xpm);
-	//gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_away_mess), event_view);
+	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(remove_away_message), prefs_away_list);
 #endif	
 	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
 	if (misc_options & OPT_MISC_COOL_LOOK)
@@ -1535,6 +1579,7 @@
 	
 #if GTK_CHECK_VERSION (1,3,0)
 	button = pixbuf_button(_("_Edit"), "edit.png");
+	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_away_mess), event_view);
 #else
 	button = picture_button(prefs, _("Edit"), save_xpm);
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_away_mess), button);