Mercurial > pidgin
diff src/conversation.c @ 234:985635758c33
[gaim-migrate @ 244]
More patches from fflew. This adds a font selector to the conversation window,
among other things.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 16 May 2000 20:48:47 +0000 |
parents | 83dd297aa363 |
children | f9eb3eb9ffde |
line wrap: on
line diff
--- a/src/conversation.c Mon May 15 17:43:04 2000 +0000 +++ b/src/conversation.c Tue May 16 20:48:47 2000 +0000 @@ -37,7 +37,7 @@ #include "pixmaps/small.xpm" #include "pixmaps/normal.xpm" #include "pixmaps/big.xpm" -/* #include "pixmaps/fontface.xpm" */ +#include "pixmaps/fontface.xpm" #include "pixmaps/speaker.xpm" /* #include "pixmaps/aimicon2.xpm" */ #include "pixmaps/wood.xpm" @@ -54,7 +54,6 @@ void check_everything(GtkWidget *entry); gboolean user_keypress_callback(GtkWidget *entry, GdkEventKey *event, struct conversation *c); -void set_font_face(GtkWidget *widget, struct conversation *c); /*------------------------------------------------------------------------*/ /* Helpers */ @@ -74,6 +73,18 @@ state_lock = i; } +void toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle) +{ + gboolean sensitivity = GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(to_toggle)); + + if (sensitivity == TRUE) + gtk_widget_set_sensitive(GTK_WIDGET(to_toggle), FALSE); + else + gtk_widget_set_sensitive(GTK_WIDGET(to_toggle), TRUE); + + return; +} + struct conversation *new_conversation(char *name) { struct conversation *c; @@ -209,6 +220,9 @@ if (c->strike) gtk_widget_set_sensitive(c->strike, ((font_options & OPT_FONT_STRIKE)) ? FALSE : TRUE); + if (c->font) + gtk_widget_set_sensitive(c->font, ((font_options & OPT_FONT_FACE)) ? TRUE : FALSE); + cnv = cnv->next; } } @@ -264,13 +278,20 @@ if (!(font_options & OPT_FONT_FACE)) return; - if (fontface) + if (c->current_fontface && strcmp(c->current_fontface, "(null)")) { - pre_fontface = g_strconcat("<FONT FACE=\"", fontface, "\">", '\0'); + pre_fontface = g_strconcat("<FONT FACE=\"", c->current_fontface, "\">", '\0'); alloc++; } else pre_fontface = "<FONT FACE=\"Helvetica\">"; + + if (!strcmp(pre_fontface, "<FONT FACE=\"\">")) + { + g_free(pre_fontface); + alloc--; + pre_fontface = "<FONT FACE=\"Helvetica\">"; + } surround(c->entry, pre_fontface, "</FONT>"); gtk_widget_grab_focus(c->entry); @@ -613,6 +634,13 @@ advance_past(entry, "<FONT COLOR>", "</FONT>" ); } +static void toggle_font(GtkWidget *font, GtkWidget *entry) +{ + show_font_dialog(entry, font); + + return; +} + static void do_link(GtkWidget *linky, GtkWidget *entry) { if (state_lock) @@ -887,9 +915,9 @@ GtkWidget *vbox2; GtkWidget *paned; GtkWidget *add; - GdkPixmap *strike_i, *small_i, *normal_i, *big_i, *bold_i, *italic_i, *underline_i, *speaker_i, *wood_i, *palette_i, *link_i; - GtkWidget *strike_p, *small_p, *normal_p, *big_p, *bold_p, *italic_p, *underline_p, *speaker_p, *wood_p, *palette_p, *link_p; - GtkWidget *strike, *small, *normal, *big, *bold, *italic, *underline, *speaker, *wood, *palette, *link; + GdkPixmap *strike_i, *small_i, *normal_i, *big_i, *bold_i, *italic_i, *underline_i, *speaker_i, *wood_i, *palette_i, *link_i, *font_i; + GtkWidget *strike_p, *small_p, *normal_p, *big_p, *bold_p, *italic_p, *underline_p, *speaker_p, *wood_p, *palette_p, *link_p, *font_p; + GtkWidget *strike, *small, *normal, *big, *bold, *italic, *underline, *speaker, *wood, *palette, *link, *font; GdkBitmap *mask; win = gtk_window_new(GTK_WINDOW_TOPLEVEL); @@ -979,7 +1007,10 @@ &win->style->white, big_xpm ); big_p = gtk_pixmap_new(big_i, mask); gtk_widget_show(big_p); - + font_i = gdk_pixmap_create_from_xpm_d ( win->window, &mask, + &win->style->white, fontface_xpm ); + font_p = gtk_pixmap_new(font_i, mask); + gtk_widget_show(font_p); bold = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, @@ -1001,6 +1032,11 @@ small = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Small", "Decrease font size", "Small", small_p, GTK_SIGNAL_FUNC(do_small), entry); normal = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Normal", "Normal font size", "Normal", normal_p, GTK_SIGNAL_FUNC(do_normal), entry); big = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Big", "Increase font size", "Big", big_p, GTK_SIGNAL_FUNC(do_big), entry); + font = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar), "Font", "Select Font", "Font", font_p, GTK_SIGNAL_FUNC(toggle_font), entry); + gtk_object_set_user_data(GTK_OBJECT(font), c); + if (!(font_options & OPT_FONT_FACE)) + gtk_widget_set_sensitive(GTK_WIDGET(font), FALSE); + gtk_toolbar_append_space(GTK_TOOLBAR(toolbar)); link = gtk_toolbar_append_element(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_CHILD_TOGGLEBUTTON, NULL, "Link", "Insert Link", @@ -1019,7 +1055,7 @@ "Sound", speaker_p, GTK_SIGNAL_FUNC(set_option), &c->makesound); c->makesound=0; gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(speaker), TRUE); - + state_lock = 1; if (find_log_info(c->name)) gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(wood), TRUE); @@ -1038,6 +1074,7 @@ c->palette = palette; c->link = link; c->add_button = add; + c->font = font; gtk_widget_set_sensitive(c->log_button, ((general_options & OPT_GEN_LOG_ALL)) ? FALSE : TRUE); @@ -1136,7 +1173,10 @@ gtk_signal_connect(GTK_OBJECT(win), "delete_event", GTK_SIGNAL_FUNC(delete_event_convo), c); gtk_signal_connect(GTK_OBJECT(entry), "insert-text", GTK_SIGNAL_FUNC(check_spelling), entry); gtk_signal_connect(GTK_OBJECT(entry), "key_press_event", GTK_SIGNAL_FUNC(entry_key_pressed), entry); - + + c->current_fontface = g_strdup(fontface); + c->current_fontname = g_strdup(fontname); + set_font_face(NULL, c); gtk_widget_show(win);