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));