| 813 static void update_buttons(GtkIMHtmlToolbar *toolbar) |
813 static void update_buttons(GtkIMHtmlToolbar *toolbar) |
| 814 { |
814 { |
| 815 gboolean bold, italic, underline; |
815 gboolean bold, italic, underline; |
| 816 char *tmp; |
816 char *tmp; |
| 817 char *tmp2; |
817 char *tmp2; |
| |
818 GtkLabel *label = g_object_get_data(G_OBJECT(toolbar), "font_label"); |
| |
819 |
| |
820 gtk_label_set_label(label, _("_Font")); |
| 818 |
821 |
| 819 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml), |
822 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml), |
| 820 &bold, &italic, &underline); |
823 &bold, &italic, &underline); |
| 821 |
824 |
| 822 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold) |
825 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->bold)) != bold) |
| 823 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, |
826 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bold), bold, |
| 824 toolbar); |
827 toolbar); |
| 825 |
|
| 826 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic) |
828 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->italic)) != italic) |
| 827 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic, |
829 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->italic), italic, |
| 828 toolbar); |
830 toolbar); |
| 829 |
831 |
| 830 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline) |
832 if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(toolbar->underline)) != underline) |
| 833 |
835 |
| 834 /* These buttons aren't ever "active". */ |
836 /* These buttons aren't ever "active". */ |
| 835 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smaller_size), FALSE); |
837 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smaller_size), FALSE); |
| 836 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->larger_size), FALSE); |
838 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->larger_size), FALSE); |
| 837 |
839 |
| |
840 if (bold) { |
| |
841 gchar *markup = g_strdup_printf("<b>%s</b>", |
| |
842 gtk_label_get_label(label)); |
| |
843 gtk_label_set_markup_with_mnemonic(label, markup); |
| |
844 g_free(markup); |
| |
845 } |
| |
846 if (italic) { |
| |
847 gchar *markup = g_strdup_printf("<i>%s</i>", |
| |
848 gtk_label_get_label(label)); |
| |
849 gtk_label_set_markup_with_mnemonic(label, markup); |
| |
850 g_free(markup); |
| |
851 } |
| |
852 if (underline) { |
| |
853 gchar *markup = g_strdup_printf("<u>%s</u>", |
| |
854 gtk_label_get_label(label)); |
| |
855 gtk_label_set_markup_with_mnemonic(label, markup); |
| |
856 g_free(markup); |
| |
857 } |
| |
858 |
| 838 tmp = gtk_imhtml_get_current_fontface(GTK_IMHTML(toolbar->imhtml)); |
859 tmp = gtk_imhtml_get_current_fontface(GTK_IMHTML(toolbar->imhtml)); |
| 839 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->font), |
860 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->font), |
| 840 (tmp != NULL), toolbar); |
861 (tmp != NULL), toolbar); |
| |
862 if (tmp != NULL) { |
| |
863 gchar *markup = g_strdup_printf("<span font_desc=\"%s\">%s</span>", |
| |
864 tmp, gtk_label_get_label(label)); |
| |
865 gtk_label_set_markup_with_mnemonic(label, markup); |
| |
866 g_free(markup); |
| |
867 } |
| 841 g_free(tmp); |
868 g_free(tmp); |
| 842 |
869 |
| 843 tmp = gtk_imhtml_get_current_forecolor(GTK_IMHTML(toolbar->imhtml)); |
870 tmp = gtk_imhtml_get_current_forecolor(GTK_IMHTML(toolbar->imhtml)); |
| 844 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->fgcolor), |
871 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->fgcolor), |
| 845 (tmp != NULL), toolbar); |
872 (tmp != NULL), toolbar); |
| |
873 if (tmp != NULL) { |
| |
874 gchar *markup = g_strdup_printf("<span foreground=\"%s\">%s</span>", |
| |
875 tmp, gtk_label_get_label(label)); |
| |
876 gtk_label_set_markup_with_mnemonic(label, markup); |
| |
877 g_free(markup); |
| |
878 } |
| 846 g_free(tmp); |
879 g_free(tmp); |
| 847 |
880 |
| 848 tmp = gtk_imhtml_get_current_backcolor(GTK_IMHTML(toolbar->imhtml)); |
881 tmp = gtk_imhtml_get_current_backcolor(GTK_IMHTML(toolbar->imhtml)); |
| 849 tmp2 = gtk_imhtml_get_current_background(GTK_IMHTML(toolbar->imhtml)); |
882 tmp2 = gtk_imhtml_get_current_background(GTK_IMHTML(toolbar->imhtml)); |
| 850 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bgcolor), |
883 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(toolbar->bgcolor), |
| 851 (tmp != NULL || tmp2 != NULL), toolbar); |
884 (tmp != NULL || tmp2 != NULL), toolbar); |
| |
885 if (tmp != NULL) { |
| |
886 gchar *markup = g_strdup_printf("<span background=\"%s\">%s</span>", |
| |
887 tmp, gtk_label_get_label(label)); |
| |
888 gtk_label_set_markup_with_mnemonic(label, markup); |
| |
889 g_free(markup); |
| |
890 } |
| 852 g_free(tmp); |
891 g_free(tmp); |
| 853 g_free(tmp2); |
892 g_free(tmp2); |
| 854 } |
893 } |
| 855 |
894 |
| 856 static void toggle_button_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) |
895 static void toggle_button_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar) |
| 1098 bbox = gtk_hbox_new(FALSE, 3); |
1137 bbox = gtk_hbox_new(FALSE, 3); |
| 1099 gtk_container_add(GTK_CONTAINER(font_button), bbox); |
1138 gtk_container_add(GTK_CONTAINER(font_button), bbox); |
| 1100 image = gtk_image_new_from_stock(GTK_STOCK_BOLD, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
1139 image = gtk_image_new_from_stock(GTK_STOCK_BOLD, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
| 1101 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
1140 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
| 1102 label = gtk_label_new_with_mnemonic(_("_Font")); |
1141 label = gtk_label_new_with_mnemonic(_("_Font")); |
| |
1142 gtk_label_set_use_markup(GTK_LABEL(label), TRUE); |
| |
1143 g_object_set_data(G_OBJECT(hbox), "font_label", label); |
| 1103 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
1144 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
| 1104 gtk_box_pack_start(GTK_BOX(hbox), font_button, FALSE, FALSE, 0); |
1145 gtk_box_pack_start(GTK_BOX(hbox), font_button, FALSE, FALSE, 0); |
| 1105 gtk_widget_show_all(font_button); |
1146 gtk_widget_show_all(font_button); |
| 1106 |
1147 |
| 1107 font_menu = gtk_menu_new(); |
1148 font_menu = gtk_menu_new(); |