Mercurial > pidgin
diff src/gtkimhtmltoolbar.c @ 8420:c25c697525b7
[gaim-migrate @ 9150]
Phase II. If anyone finds anything problematic here that can't be attributed
to GtkIMHtml itself, please let me know (I'll probably tell you it can be
attributed to GtkIMHtml itself ;)).
Love, Sean.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Wed, 10 Mar 2004 06:10:00 +0000 |
parents | 45d1e3ed5a86 |
children | 2e18099ded93 |
line wrap: on
line diff
--- a/src/gtkimhtmltoolbar.c Tue Mar 09 19:52:17 2004 +0000 +++ b/src/gtkimhtmltoolbar.c Wed Mar 10 06:10:00 2004 +0000 @@ -603,6 +603,47 @@ gtk_widget_grab_focus(toolbar->imhtml); } +static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) +{ + + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bold), buttons & GTK_IMHTML_BOLD); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->italic), buttons & GTK_IMHTML_ITALIC); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->underline), buttons & GTK_IMHTML_UNDERLINE); + + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->larger_size), buttons & GTK_IMHTML_GROW); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smaller_size), buttons & GTK_IMHTML_SHRINK); + + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->font), buttons & GTK_IMHTML_FACE); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->fgcolor), buttons & GTK_IMHTML_FORECOLOR); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->bgcolor), buttons & GTK_IMHTML_BACKCOLOR); + + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->image), buttons & GTK_IMHTML_IMAGE); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->link), buttons & GTK_IMHTML_LINK); + gtk_widget_set_sensitive(GTK_WIDGET(toolbar->smiley), buttons & GTK_IMHTML_SMILEY); + +} + +static void toggle_button_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) +{ + /* This is hacky. I have to tolerate the fact that set_active causes the signal to be emited, so I wind up + * toggling in gtkimhtml twice here */ + + if (buttons & GTK_IMHTML_BOLD) { + gtk_imhtml_toggle_bold(imhtml); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->bold), !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold))); + } + + if (buttons & GTK_IMHTML_ITALIC) { + gtk_imhtml_toggle_italic(imhtml); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->italic), !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic))); + } + + if (buttons & GTK_IMHTML_UNDERLINE) { + gtk_imhtml_toggle_underline(imhtml); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->underline), !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline))); + } +} + enum { LAST_SIGNAL }; @@ -852,4 +893,6 @@ g_return_if_fail(GTK_IS_IMHTML(imhtml)); toolbar->imhtml = imhtml; + g_signal_connect(G_OBJECT(imhtml), "format_functions_update", G_CALLBACK(update_buttons_cb), toolbar); + g_signal_connect(G_OBJECT(imhtml), "format_function_toggle", G_CALLBACK(toggle_button_cb), toolbar); }