Mercurial > pidgin.yaz
comparison src/gtkimhtml.c @ 7717:db3bdae1761e
[gaim-migrate @ 8362]
And font face.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Wed, 03 Dec 2003 05:12:24 +0000 |
parents | 911f03121652 |
children | 043fa48f2cc2 |
comparison
equal
deleted
inserted
replaced
7716:911f03121652 | 7717:db3bdae1761e |
---|---|
520 imhtml->edit.bold = NULL; | 520 imhtml->edit.bold = NULL; |
521 imhtml->edit.italic = NULL; | 521 imhtml->edit.italic = NULL; |
522 imhtml->edit.underline = NULL; | 522 imhtml->edit.underline = NULL; |
523 imhtml->edit.forecolor = NULL; | 523 imhtml->edit.forecolor = NULL; |
524 imhtml->edit.backcolor = NULL; | 524 imhtml->edit.backcolor = NULL; |
525 imhtml->edit.fontface = NULL; | |
525 | 526 |
526 imhtml->format_spans = NULL; | 527 imhtml->format_spans = NULL; |
527 | 528 |
528 imhtml->scalables = NULL; | 529 imhtml->scalables = NULL; |
529 #if GTK_CHECK_VERSION(2,2,0) | 530 #if GTK_CHECK_VERSION(2,2,0) |
1634 } | 1635 } |
1635 g_list_free(del); | 1636 g_list_free(del); |
1636 imhtml->edit.bold = NULL; | 1637 imhtml->edit.bold = NULL; |
1637 imhtml->edit.italic = NULL; | 1638 imhtml->edit.italic = NULL; |
1638 imhtml->edit.underline = NULL; | 1639 imhtml->edit.underline = NULL; |
1640 imhtml->edit.fontface = NULL; | |
1639 } | 1641 } |
1640 | 1642 |
1641 void gtk_imhtml_page_up (GtkIMHtml *imhtml) | 1643 void gtk_imhtml_page_up (GtkIMHtml *imhtml) |
1642 { | 1644 { |
1643 GdkRectangle rect; | 1645 GdkRectangle rect; |
1958 | 1960 |
1959 /* Editable stuff */ | 1961 /* Editable stuff */ |
1960 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml) | 1962 static void insert_cb(GtkTextBuffer *buffer, GtkTextIter *iter, gchar *text, gint len, GtkIMHtml *imhtml) |
1961 { | 1963 { |
1962 GtkIMHtmlFormatSpan *span = NULL; | 1964 GtkIMHtmlFormatSpan *span = NULL; |
1965 gtk_text_iter_forward_chars(iter, len); | |
1963 | 1966 |
1964 if (!imhtml->editable) | 1967 if (!imhtml->editable) |
1965 return; | 1968 return; |
1966 | 1969 |
1967 if ((span = imhtml->edit.bold)) { | 1970 if ((span = imhtml->edit.bold)) { |
1972 } | 1975 } |
1973 | 1976 |
1974 if ((span = imhtml->edit.italic)) { | 1977 if ((span = imhtml->edit.italic)) { |
1975 GtkTextIter italic; | 1978 GtkTextIter italic; |
1976 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &italic, span->start); | 1979 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &italic, span->start); |
1977 gtk_text_iter_forward_chars(iter, len); | |
1978 gtk_text_buffer_apply_tag_by_name(imhtml->text_buffer, "ITALICS", &italic, iter); | 1980 gtk_text_buffer_apply_tag_by_name(imhtml->text_buffer, "ITALICS", &italic, iter); |
1979 } | 1981 } |
1980 | 1982 |
1981 if ((span = imhtml->edit.forecolor)) { | 1983 if ((span = imhtml->edit.forecolor)) { |
1982 GtkTextIter fore; | 1984 GtkTextIter fore; |
1983 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &fore, span->start); | 1985 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &fore, span->start); |
1984 gtk_text_iter_forward_chars(iter, len); | |
1985 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &fore, iter); | 1986 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &fore, iter); |
1986 } | 1987 } |
1987 | 1988 |
1988 if ((span = imhtml->edit.backcolor)) { | 1989 if ((span = imhtml->edit.backcolor)) { |
1989 GtkTextIter back; | 1990 GtkTextIter back; |
1990 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &back, span->start); | 1991 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &back, span->start); |
1991 gtk_text_iter_forward_chars(iter, len); | |
1992 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &back, iter); | 1992 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &back, iter); |
1993 } | 1993 } |
1994 | 1994 |
1995 if ((span = imhtml->edit.fontface)) { | |
1996 GtkTextIter face; | |
1997 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &face, span->start); | |
1998 gtk_text_buffer_apply_tag(imhtml->text_buffer, span->tag, &face, iter); | |
1999 } | |
1995 } | 2000 } |
1996 | 2001 |
1997 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable) | 2002 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable) |
1998 { | 2003 { |
1999 gtk_text_view_set_editable(GTK_TEXT_VIEW(imhtml), editable); | 2004 gtk_text_view_set_editable(GTK_TEXT_VIEW(imhtml), editable); |
2122 span = imhtml->edit.backcolor; | 2127 span = imhtml->edit.backcolor; |
2123 span->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | 2128 span->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); |
2124 imhtml->edit.backcolor = NULL; | 2129 imhtml->edit.backcolor = NULL; |
2125 } | 2130 } |
2126 return imhtml->edit.backcolor != NULL; | 2131 return imhtml->edit.backcolor != NULL; |
2132 } | |
2133 | |
2134 gboolean gtk_imhtml_toggle_fontface(GtkIMHtml *imhtml, const char *face) | |
2135 { | |
2136 GtkIMHtmlFormatSpan *span; | |
2137 GtkTextMark *ins = gtk_text_buffer_get_insert(imhtml->text_buffer); | |
2138 GtkTextIter iter; | |
2139 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, ins); | |
2140 if (!imhtml->edit.fontface) { | |
2141 span = g_malloc(sizeof(GtkIMHtmlFormatSpan)); | |
2142 span->start = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | |
2143 span->start_tag = g_strdup_printf("<font face='%s'>", face); | |
2144 span->end = NULL; | |
2145 span->end_tag = g_strdup("</font>"); | |
2146 span->buffer = imhtml->text_buffer; | |
2147 span->tag = gtk_text_buffer_create_tag(imhtml->text_buffer, NULL, "family", face, NULL); | |
2148 imhtml->edit.fontface = span; | |
2149 imhtml->format_spans = g_list_append(imhtml->format_spans, span); | |
2150 } else { | |
2151 span = imhtml->edit.fontface; | |
2152 span->end = gtk_text_buffer_create_mark(imhtml->text_buffer, NULL, &iter, TRUE); | |
2153 imhtml->edit.fontface = NULL; | |
2154 } | |
2155 return imhtml->edit.fontface != NULL; | |
2127 } | 2156 } |
2128 | 2157 |
2129 void gtk_imhtml_insert_link(GtkIMHtml *imhtml, const char *url, const char *text) | 2158 void gtk_imhtml_insert_link(GtkIMHtml *imhtml, const char *url, const char *text) |
2130 { | 2159 { |
2131 GtkIMHtmlFormatSpan *span = g_malloc(sizeof(GtkIMHtmlFormatSpan)); | 2160 GtkIMHtmlFormatSpan *span = g_malloc(sizeof(GtkIMHtmlFormatSpan)); |