pidgin/gtkimhtmltoolbar.c

changeset 19068
4effc374e407
parent 19061
e3f6ef295d7b
child 19073
e2da82ea455b
equal deleted inserted replaced
19067:c0b34dbe989d 19068:4effc374e407
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();

mercurial