diff src/prefs.c @ 873:789df4b47508

[gaim-migrate @ 883] uh huh committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Mon, 11 Sep 2000 00:30:52 +0000
parents 4a6ab6995439
children ef4bff967e89
line wrap: on
line diff
--- a/src/prefs.c	Sun Sep 10 22:19:21 2000 +0000
+++ b/src/prefs.c	Mon Sep 11 00:30:52 2000 +0000
@@ -976,6 +976,89 @@
 	gtk_widget_show(prefdialog);
 }
 
+static GtkWidget *show_color_pref(GtkWidget *box, gboolean fgc)
+{
+	/* more stuff stolen from X-Chat */
+	GtkWidget *swid;
+	GdkColor c;
+	GtkStyle *style;
+	c.pixel = 0;
+	if (fgc) {
+		if (font_options & OPT_FONT_FGCOL) {
+			c.red = fgcolor.red << 8;
+			c.blue = fgcolor.blue << 8;
+			c.green = fgcolor.green << 8;
+		} else {
+			c.red = 0;
+			c.blue = 0;
+			c.green = 0;
+		}
+	} else {
+		if (font_options & OPT_FONT_BGCOL) {
+			c.red = bgcolor.red << 8;
+			c.blue = bgcolor.blue << 8;
+			c.green = bgcolor.green << 8;
+		} else {
+			c.red = 0xffff;
+			c.blue = 0xffff;
+			c.green = 0xffff;
+		}
+	}
+
+	style = gtk_style_new();
+	style->bg[0] = c;
+
+	swid = gtk_event_box_new();
+	gtk_widget_set_style(GTK_WIDGET(swid), style);
+	gtk_style_unref(style);
+	gtk_widget_set_usize(GTK_WIDGET(swid), 40, -1);
+	gtk_box_pack_start(GTK_BOX(box), swid, FALSE, FALSE, 5);
+	gtk_widget_show(swid);
+	return swid;
+}
+
+GtkWidget *pref_fg_picture = NULL;
+GtkWidget *pref_bg_picture = NULL;
+
+static fgbgdes(GtkWidget *w, gpointer d)
+{
+	pref_fg_picture = NULL;
+	pref_bg_picture = NULL;
+}
+
+void update_color(GtkWidget *w, GtkWidget *pic)
+{
+	GdkColor c;
+	GtkStyle *style;
+	c.pixel = 0;
+	if (pic == pref_fg_picture) {
+		if (font_options & OPT_FONT_FGCOL) {
+			c.red = fgcolor.red << 8;
+			c.blue = fgcolor.blue << 8;
+			c.green = fgcolor.green << 8;
+		} else {
+			c.red = 0;
+			c.blue = 0;
+			c.green = 0;
+		}
+	} else {
+		if (font_options & OPT_FONT_BGCOL) {
+			c.red = bgcolor.red << 8;
+			c.blue = bgcolor.blue << 8;
+			c.green = bgcolor.green << 8;
+		} else {
+			c.red = 0xffff;
+			c.blue = 0xffff;
+			c.green = 0xffff;
+		}
+	}
+
+	style = gtk_style_new();
+	style->bg[0] = c;
+	gtk_widget_set_style(pic, style);
+	gtk_style_unref(style);
+}
+
 static void font_page()
 {
 	GtkWidget *parent;
@@ -1013,6 +1096,7 @@
 	gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5);
 	gtk_widget_show(hbox);
 	
+	pref_fg_picture = show_color_pref(hbox, TRUE);
 	button = gaim_button(_("Text Color"), &font_options, OPT_FONT_FGCOL, hbox);
 
 	select = picture_button(prefs, _("Select"), fgcolor_xpm);
@@ -1023,11 +1107,13 @@
 	gtk_widget_show(select);
 
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select);
+	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(update_color), pref_fg_picture);
 
 	hbox = gtk_hbox_new(FALSE, 5);
 	gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5);
 	gtk_widget_show(hbox);
 	
+	pref_bg_picture = show_color_pref(hbox, FALSE);
 	button = gaim_button(_("Background Color"), &font_options, OPT_FONT_BGCOL, hbox);
 
 	select = picture_button(prefs, _("Select"), bgcolor_xpm);
@@ -1038,6 +1124,7 @@
 	gtk_widget_show(select);
 
 	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select);
+	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(update_color), pref_bg_picture);
 
 	sep = gtk_hseparator_new();
 	gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5);