# HG changeset patch # User Eric Warmenhoven # Date 968368124 0 # Node ID 3de6e98e8898c3cccf43c9a49821bb6d7abd210e # Parent 41bfae606d39be9c9d01d7b4feb0b135ee8cbe19 [gaim-migrate @ 868] the fg/bg buttons work now :-P committer: Tailor Script diff -r 41bfae606d39 -r 3de6e98e8898 TODO --- a/TODO Thu Sep 07 22:14:17 2000 +0000 +++ b/TODO Thu Sep 07 23:08:44 2000 +0000 @@ -1,10 +1,6 @@ --- STUFF FOR 0.10.1 RELEASE --- Execute Command on Buddy Pounce Redesign the Foreground/Background color options under preferences. - Add ability to conversaton window to allow changing of foreground/ - background colours per conversation window. This is done, - there just needs to be some way to actually change the - values. Have a page in the prefs for the Applet The about window is very ugly. I think this shall be fixed. You know, I really like the gnome look to some apps diff -r 41bfae606d39 -r 3de6e98e8898 src/buddy_chat.c --- a/src/buddy_chat.c Thu Sep 07 22:14:17 2000 +0000 +++ b/src/buddy_chat.c Thu Sep 07 23:08:44 2000 +0000 @@ -674,7 +674,8 @@ gtk_signal_connect(GTK_OBJECT(win), "destroy", GTK_SIGNAL_FUNC(close_callback),b); b->font_dialog = NULL; - b->color_dialog = NULL; + b->fg_color_dialog = NULL; + b->bg_color_dialog = NULL; b->smiley_dialog = NULL; b->link_dialog = NULL; b->log_dialog = NULL; diff -r 41bfae606d39 -r 3de6e98e8898 src/conversation.c --- a/src/conversation.c Thu Sep 07 22:14:17 2000 +0000 +++ b/src/conversation.c Thu Sep 07 23:08:44 2000 +0000 @@ -238,8 +238,10 @@ void delete_conversation(struct conversation *c) { conversations = g_list_remove(conversations, c); - if (c->color_dialog) - gtk_widget_destroy(c->color_dialog); + if (c->fg_color_dialog) + gtk_widget_destroy(c->fg_color_dialog); + if (c->bg_color_dialog) + gtk_widget_destroy(c->bg_color_dialog); if (c->font_dialog) gtk_widget_destroy(c->font_dialog); if (c->smiley_dialog) @@ -365,9 +367,12 @@ gtk_widget_destroy(c->window); c->window = NULL; - if (c->color_dialog) - gtk_widget_destroy(c->color_dialog); - c->color_dialog = NULL; + if (c->fg_color_dialog) + gtk_widget_destroy(c->fg_color_dialog); + c->fg_color_dialog = NULL; + if (c->bg_color_dialog) + gtk_widget_destroy(c->bg_color_dialog); + c->bg_color_dialog = NULL; if (c->font_dialog) gtk_widget_destroy(c->font_dialog); c->font_dialog = NULL; @@ -890,14 +895,26 @@ gtk_widget_grab_focus(entry); } -void toggle_color(GtkWidget *color, struct conversation *c) +void toggle_fg_color(GtkWidget *color, struct conversation *c) { if (state_lock) return; if (GTK_TOGGLE_BUTTON(color)->active) - show_color_dialog(c, color); - else if (c->color_dialog) - cancel_color(color, c); + show_fgcolor_dialog(c, color); + else if (c->fg_color_dialog) + cancel_fgcolor(color, c); + else + advance_past(c->entry, "", "" ); +} + +void toggle_bg_color(GtkWidget *color, struct conversation *c) +{ + if (state_lock) + return; + if (GTK_TOGGLE_BUTTON(color)->active) + show_bgcolor_dialog(c, color); + else if (c->bg_color_dialog) + cancel_bgcolor(color, c); else advance_past(c->entry, "", "" ); } @@ -1461,11 +1478,11 @@ fgcolorbtn = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("Color"), _("Text Color"), - _("Color"), fgcolor_p, GTK_SIGNAL_FUNC(toggle_color), c); + _("Color"), fgcolor_p, GTK_SIGNAL_FUNC(toggle_fg_color), c); bgcolorbtn = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, _("Color"), _("Background Color"), - _("Color"), bgcolor_p, GTK_SIGNAL_FUNC(toggle_color), c); + _("Color"), bgcolor_p, GTK_SIGNAL_FUNC(toggle_bg_color), c); bold = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, @@ -1728,7 +1745,8 @@ gtk_widget_show(text); c->font_dialog = NULL; - c->color_dialog = NULL; + c->fg_color_dialog = NULL; + c->bg_color_dialog = NULL; c->smiley_dialog = NULL; c->link_dialog = NULL; c->log_dialog = NULL; diff -r 41bfae606d39 -r 3de6e98e8898 src/dialogs.c --- 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, "", text_color.red, text_color.green, text_color.blue); surround(c->entry, open_tag, ""); 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, "", text_color.red, text_color.green, text_color.blue); + surround(c->entry, open_tag, ""); + 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); } /*------------------------------------------------------------------------*/ diff -r 41bfae606d39 -r 3de6e98e8898 src/gaim.h --- a/src/gaim.h Thu Sep 07 22:14:17 2000 +0000 +++ b/src/gaim.h Thu Sep 07 23:08:44 2000 +0000 @@ -273,7 +273,8 @@ GtkWidget *strike; GtkWidget *font; GtkWidget *smiley; - GtkWidget *color_dialog; + GtkWidget *fg_color_dialog; + GtkWidget *bg_color_dialog; GtkWidget *font_dialog; GtkWidget *smiley_dialog; GtkWidget *link_dialog; @@ -407,7 +408,7 @@ #define TYPE_SIGNOFF 4 #define TYPE_KEEPALIVE 5 -#define REVISION "gaim:$Revision: 864 $" +#define REVISION "gaim:$Revision: 868 $" #define FLAPON "FLAPON\r\n\r\n" #define ROAST "Tic/Toc" @@ -801,8 +802,10 @@ extern void show_register_dialog(); extern void show_set_info(); extern void show_set_dir(); -extern void show_color_dialog(struct conversation *c, GtkWidget *color); -extern void cancel_color(GtkWidget *widget, struct conversation *c); +extern void show_fgcolor_dialog(struct conversation *c, GtkWidget *color); +extern void show_bgcolor_dialog(struct conversation *c, GtkWidget *color); +extern void cancel_fgcolor(GtkWidget *widget, struct conversation *c); +extern void cancel_bgcolor(GtkWidget *widget, struct conversation *c); extern void create_away_mess(GtkWidget *, void *); extern void show_ee_dialog(int); extern void show_add_link(GtkWidget *,struct conversation *); diff -r 41bfae606d39 -r 3de6e98e8898 src/prefs.c --- a/src/prefs.c Thu Sep 07 22:14:17 2000 +0000 +++ b/src/prefs.c Thu Sep 07 23:08:44 2000 +0000 @@ -1017,7 +1017,7 @@ gtk_box_pack_start(GTK_BOX(hbox), select, FALSE, FALSE, 5); if (!(font_options & OPT_FONT_FGCOL)) gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); - gtk_signal_connect(GTK_OBJECT(select), "clicked", GTK_SIGNAL_FUNC(show_color_dialog), (void *)1); + gtk_signal_connect(GTK_OBJECT(select), "clicked", GTK_SIGNAL_FUNC(show_fgcolor_dialog), NULL); gtk_widget_show(select); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select); @@ -1032,7 +1032,7 @@ gtk_box_pack_start(GTK_BOX(hbox), select, FALSE, FALSE, 5); if (!(font_options & OPT_FONT_BGCOL)) gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); - gtk_signal_connect(GTK_OBJECT(select), "clicked", GTK_SIGNAL_FUNC(show_color_dialog), (void *)2); + gtk_signal_connect(GTK_OBJECT(select), "clicked", GTK_SIGNAL_FUNC(show_bgcolor_dialog), NULL); gtk_widget_show(select); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select);