comparison gtk/gtkimhtml.c @ 14333:cf8d25072151

[gaim-migrate @ 17029] add font-weight support to gtkimhtml use it in our outgoing text closes sf 1083365 committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Fri, 25 Aug 2006 16:42:38 +0000
parents 009db0b357b5
children 2ec879353592
comparison
equal deleted inserted replaced
14332:af0d0e23b937 14333:cf8d25072151
2771 * color 2771 * color
2772 * background 2772 * background
2773 * font-family 2773 * font-family
2774 * font-size 2774 * font-size
2775 * text-decoration: underline 2775 * text-decoration: underline
2776 * font-weight: bold
2776 * 2777 *
2777 * TODO: 2778 * TODO:
2778 * background-color 2779 * background-color
2779 * font-style 2780 * font-style
2780 * font-weight
2781 */ 2781 */
2782 { 2782 {
2783 gchar *style, *color, *background, *family, *size; 2783 gchar *style, *color, *background, *family, *size;
2784 gchar *textdec; 2784 gchar *textdec, *weight;
2785 GtkIMHtmlFontDetail *font, *oldfont = NULL; 2785 GtkIMHtmlFontDetail *font, *oldfont = NULL;
2786 style = gtk_imhtml_get_html_opt (tag, "style="); 2786 style = gtk_imhtml_get_html_opt (tag, "style=");
2787 2787
2788 if (!style) break; 2788 if (!style) break;
2789 2789
2791 background = gtk_imhtml_get_css_opt (style, "background:"); 2791 background = gtk_imhtml_get_css_opt (style, "background:");
2792 family = gtk_imhtml_get_css_opt (style, 2792 family = gtk_imhtml_get_css_opt (style,
2793 "font-family:"); 2793 "font-family:");
2794 size = gtk_imhtml_get_css_opt (style, "font-size:"); 2794 size = gtk_imhtml_get_css_opt (style, "font-size:");
2795 textdec = gtk_imhtml_get_css_opt (style, "text-decoration:"); 2795 textdec = gtk_imhtml_get_css_opt (style, "text-decoration:");
2796 2796 weight = gtk_imhtml_get_css_opt (style, "font-weight:");
2797 if (!(color || family || size || background || textdec)) { 2797
2798 if (!(color || family || size || background || textdec || weight)) {
2798 g_free(style); 2799 g_free(style);
2799 break; 2800 break;
2800 } 2801 }
2801 2802
2802 2803
2877 { 2878 {
2878 gtk_imhtml_toggle_underline(imhtml); 2879 gtk_imhtml_toggle_underline(imhtml);
2879 font->underline = 1; 2880 font->underline = 1;
2880 } 2881 }
2881 2882
2883 if (oldfont)
2884 {
2885 font->bold = oldfont->bold;
2886 }
2887 if (weight)
2888 {
2889 if(!g_ascii_strcasecmp(weight, "normal")) {
2890 font->bold = 0;
2891 } else if(!g_ascii_strcasecmp(weight, "bold")) {
2892 font->bold = 1;
2893 } else if(!g_ascii_strcasecmp(weight, "bolder")) {
2894 font->bold++;
2895 } else if(!g_ascii_strcasecmp(weight, "lighter")) {
2896 if(font->bold > 0)
2897 font->bold--;
2898 } else {
2899 int num = atoi(weight);
2900 if(num >= 700)
2901 font->bold = 1;
2902 else
2903 font->bold = 0;
2904 }
2905 if((font->bold && !oldfont->bold) || (oldfont->bold && !font->bold))
2906 {
2907 gtk_imhtml_toggle_bold(imhtml);
2908 }
2909 }
2910
2882 g_free(style); 2911 g_free(style);
2883 g_free(size); 2912 g_free(size);
2884 fonts = g_slist_prepend (fonts, font); 2913 fonts = g_slist_prepend (fonts, font);
2885 } 2914 }
2886 break; 2915 break;
2898 2927
2899 if (!oldfont) { 2928 if (!oldfont) {
2900 gtk_imhtml_font_set_size(imhtml, 3); 2929 gtk_imhtml_font_set_size(imhtml, 3);
2901 if (font->underline) 2930 if (font->underline)
2902 gtk_imhtml_toggle_underline(imhtml); 2931 gtk_imhtml_toggle_underline(imhtml);
2932 if (font->bold)
2933 gtk_imhtml_toggle_bold(imhtml);
2903 gtk_imhtml_toggle_fontface(imhtml, NULL); 2934 gtk_imhtml_toggle_fontface(imhtml, NULL);
2904 gtk_imhtml_toggle_forecolor(imhtml, NULL); 2935 gtk_imhtml_toggle_forecolor(imhtml, NULL);
2905 gtk_imhtml_toggle_backcolor(imhtml, NULL); 2936 gtk_imhtml_toggle_backcolor(imhtml, NULL);
2906 } 2937 }
2907 else 2938 else
2910 if (font->size != oldfont->size) 2941 if (font->size != oldfont->size)
2911 gtk_imhtml_font_set_size(imhtml, oldfont->size); 2942 gtk_imhtml_font_set_size(imhtml, oldfont->size);
2912 2943
2913 if (font->underline != oldfont->underline) 2944 if (font->underline != oldfont->underline)
2914 gtk_imhtml_toggle_underline(imhtml); 2945 gtk_imhtml_toggle_underline(imhtml);
2946
2947 if ((font->bold && !oldfont->bold) || (oldfont->bold && !font->bold))
2948 gtk_imhtml_toggle_bold(imhtml);
2915 2949
2916 if (font->face && (!oldfont->face || strcmp(font->face, oldfont->face) != 0)) 2950 if (font->face && (!oldfont->face || strcmp(font->face, oldfont->face) != 0))
2917 gtk_imhtml_toggle_fontface(imhtml, oldfont->face); 2951 gtk_imhtml_toggle_fontface(imhtml, oldfont->face);
2918 2952
2919 if (font->fore && (!oldfont->fore || strcmp(font->fore, oldfont->fore) != 0)) 2953 if (font->fore && (!oldfont->fore || strcmp(font->fore, oldfont->fore) != 0))