Mercurial > pidgin
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)) |