Mercurial > pidgin.yaz
diff src/dialogs.c @ 858:3de6e98e8898
[gaim-migrate @ 868]
the fg/bg buttons work now :-P
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 07 Sep 2000 23:08:44 +0000 |
parents | 9e2dcad06d3c |
children | 789df4b47508 |
line wrap: on
line diff
--- a/src/dialogs.c Thu Sep 07 22:14:17 2000 +0000 +++ b/src/dialogs.c Thu Sep 07 23:08:44 2000 +0000 @@ -278,17 +278,19 @@ static gint delete_event_dialog(GtkWidget *w, GdkEventAny *e, struct conversation *c) { gchar *object_data; - dialogwindows = g_list_remove(dialogwindows, w); - gtk_widget_destroy(w); - object_data = gtk_object_get_user_data(GTK_OBJECT(w)); if (GTK_IS_COLOR_SELECTION_DIALOG(w)) { set_state_lock(1); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->fgcolorbtn), FALSE); + if (w == c->fg_color_dialog) { + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->fgcolorbtn), FALSE); + c->fg_color_dialog = NULL; + } else { + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->bgcolorbtn), FALSE); + c->bg_color_dialog = NULL; + } set_state_lock(0); - c->color_dialog = NULL; } else if (GTK_IS_FONT_SELECTION_DIALOG(w)) { @@ -312,6 +314,9 @@ c->log_dialog = NULL; } + dialogwindows = g_list_remove(dialogwindows, w); + gtk_widget_destroy(w); + return FALSE; } @@ -2317,7 +2322,7 @@ static GtkWidget *fgcseld = NULL; static GtkWidget *bgcseld = NULL; -void cancel_color(GtkWidget *widget, struct conversation *c) +void cancel_fgcolor(GtkWidget *widget, struct conversation *c) { if (c->fgcolorbtn && widget) { @@ -2325,12 +2330,25 @@ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->fgcolorbtn), FALSE); set_state_lock(0); } - dialogwindows = g_list_remove(dialogwindows, c->color_dialog); - gtk_widget_destroy(c->color_dialog); - c->color_dialog = NULL; + dialogwindows = g_list_remove(dialogwindows, c->fg_color_dialog); + gtk_widget_destroy(c->fg_color_dialog); + c->fg_color_dialog = NULL; } -void do_color(GtkWidget *widget, GtkColorSelection *colorsel) +void cancel_bgcolor(GtkWidget *widget, struct conversation *c) +{ + if (c->bgcolorbtn && widget) + { + set_state_lock(1); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->bgcolorbtn), FALSE); + set_state_lock(0); + } + dialogwindows = g_list_remove(dialogwindows, c->bg_color_dialog); + gtk_widget_destroy(c->bg_color_dialog); + c->bg_color_dialog = NULL; +} + +void do_fgcolor(GtkWidget *widget, GtkColorSelection *colorsel) { gdouble color[3]; GdkColor text_color; @@ -2347,15 +2365,43 @@ text_color.red = ((guint16)(color[0]*65535))>>8; text_color.green = ((guint16)(color[1]*65535))>>8; text_color.blue = ((guint16)(color[2]*65535))>>8; + c->fgcol = text_color; c->hasfg = 1; - g_snprintf(open_tag, 23, "<FONT COLOR=\"#%02X%02X%02X\">", text_color.red, text_color.green, text_color.blue); surround(c->entry, open_tag, "</FONT>"); sprintf(debug_buff,"#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); debug_print(debug_buff); g_free(open_tag); - cancel_color(NULL, c); + cancel_fgcolor(NULL, c); +} + +void do_bgcolor(GtkWidget *widget, GtkColorSelection *colorsel) +{ + gdouble color[3]; + GdkColor text_color; + struct conversation *c; + char *open_tag; + + open_tag = g_malloc(30); + + gtk_color_selection_get_color (colorsel, color); + + c = gtk_object_get_user_data(GTK_OBJECT(colorsel)); + /* GTK_IS_EDITABLE(c->entry); huh? */ + + text_color.red = ((guint16)(color[0]*65535))>>8; + text_color.green = ((guint16)(color[1]*65535))>>8; + text_color.blue = ((guint16)(color[2]*65535))>>8; + + c->bgcol = text_color; + c->hasbg = 1; + g_snprintf(open_tag, 25, "<BODY BGCOLOR=\"#%02X%02X%02X\">", text_color.red, text_color.green, text_color.blue); + surround(c->entry, open_tag, "</BODY>"); + sprintf(debug_buff,"#%02X%02X%02X\n", text_color.red, text_color.green, text_color.blue); + debug_print(debug_buff); + g_free(open_tag); + cancel_bgcolor(NULL, c); } static void destroy_colorsel(GtkWidget *w, gpointer d) @@ -2389,11 +2435,11 @@ } } -void show_color_dialog(struct conversation *c, GtkWidget *color) +void show_fgcolor_dialog(struct conversation *c, GtkWidget *color) { GtkWidget *colorsel; - if ((int)color == 1) { /* foreground */ + if (color == NULL) { /* we came from the prefs */ if (fgcseld) return; fgcseld = gtk_color_selection_dialog_new(_("Select Text Color")); @@ -2405,7 +2451,32 @@ gtk_widget_show(fgcseld); gdk_window_raise(fgcseld->window); return; - } else if ((int)color == 2) { /* background */ + } + + if (!c->fg_color_dialog) { + c->fg_color_dialog = gtk_color_selection_dialog_new(_("Select Text Color")); + + colorsel = GTK_COLOR_SELECTION_DIALOG(c->fg_color_dialog)->colorsel; + + gtk_object_set_user_data(GTK_OBJECT(colorsel), c); + + gtk_signal_connect(GTK_OBJECT(c->fg_color_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); + gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->fg_color_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_fgcolor), colorsel); + gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->fg_color_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_fgcolor), c); + + gtk_widget_realize(c->fg_color_dialog); + aol_icon(c->fg_color_dialog->window); + } + + gtk_widget_show(c->fg_color_dialog); + gdk_window_raise(c->fg_color_dialog->window); +} + +void show_bgcolor_dialog(struct conversation *c, GtkWidget *color) +{ + GtkWidget *colorsel; + + if (color == NULL) { /* we came from the prefs */ if (bgcseld) return; bgcseld = gtk_color_selection_dialog_new(_("Select Background Color")); @@ -2419,24 +2490,23 @@ return; } - if (!c->color_dialog) - { - c->color_dialog = gtk_color_selection_dialog_new(_("Select Text Color")); + if (!c->bg_color_dialog) { + c->bg_color_dialog = gtk_color_selection_dialog_new(_("Select Text Color")); - colorsel = GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->colorsel; + colorsel = GTK_COLOR_SELECTION_DIALOG(c->bg_color_dialog)->colorsel; gtk_object_set_user_data(GTK_OBJECT(colorsel), c); - gtk_signal_connect(GTK_OBJECT(c->color_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); - gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_color), colorsel); - gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->color_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_color), c); - - gtk_widget_realize(c->color_dialog); - aol_icon(c->color_dialog->window); + gtk_signal_connect(GTK_OBJECT(c->bg_color_dialog), "delete_event", GTK_SIGNAL_FUNC(delete_event_dialog), c); + gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->bg_color_dialog)->ok_button), "clicked", GTK_SIGNAL_FUNC(do_bgcolor), colorsel); + gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(c->bg_color_dialog)->cancel_button), "clicked", GTK_SIGNAL_FUNC(cancel_bgcolor), c); + + gtk_widget_realize(c->bg_color_dialog); + aol_icon(c->bg_color_dialog->window); } - gtk_widget_show(c->color_dialog); - gdk_window_raise(c->color_dialog->window); + gtk_widget_show(c->bg_color_dialog); + gdk_window_raise(c->bg_color_dialog->window); } /*------------------------------------------------------------------------*/