(gushort)0xcfff
};
-#if 0
-static GdkColor error_color = {
- (gulong)0,
- (gushort)0xefff,
- (gushort)0,
- (gushort)0
-};
-#endif
-
-
static GdkCursor *hand_cursor = NULL;
static GdkCursor *text_cursor = NULL;
+static GdkCursor *watch_cursor= NULL;
#define TEXTVIEW_STATUSBAR_PUSH(textview, str) \
{ if (textview->messageview->statusbar) \
static void scrolled_cb (GtkAdjustment *adj, TextView *textview)
{
+#ifndef WIDTH
+# define WIDTH 48
+# define HEIGHT 48
+#endif
if (textview->image) {
gint x, y, x1;
x1 = textview->text->allocation.width - WIDTH - 5;
"pixels-below-lines", 0,
"pixels-below-lines-set", TRUE,
"font-desc", font_desc,
- "left-margin", 0,
+ "left-margin", 3,
"left-margin-set", TRUE,
NULL);
gtk_text_buffer_create_tag(buffer, "header_title",
hand_cursor = gdk_cursor_new(GDK_HAND2);
if (!text_cursor)
text_cursor = gdk_cursor_new(GDK_XTERM);
+ if (!watch_cursor)
+ watch_cursor = gdk_cursor_new(GDK_WATCH);
textview_reflect_prefs(textview);
textview_set_all_headers(textview, FALSE);
gchar *filename;
RemoteURI *uri;
gchar *uri_str;
- FILE *fp;
-
- fp = g_fopen(mimeinfo->data.filename, "rb");
- fseek(fp, mimeinfo->offset, SEEK_SET);
filename = procmime_get_tmp_file_name(mimeinfo);
if (procmime_get_part(filename, mimeinfo) < 0) {
TEXT_INSERT(_(" (alternately double-click, or click the middle "));
TEXT_INSERT(_("mouse button),\n"));
TEXT_INSERT(_(" or 'Open with...' (Shortcut key: 'o')\n"));
-
}
#undef TEXT_INSERT
static void textview_show_html(TextView *textview, FILE *fp,
CodeConverter *conv)
{
- HTMLParser *parser;
+ SC_HTMLParser *parser;
gchar *str;
- parser = html_parser_new(fp, conv);
+ parser = sc_html_parser_new(fp, conv);
g_return_if_fail(parser != NULL);
- while ((str = html_parse(parser)) != NULL) {
- if (parser->state == HTML_HREF) {
+ while ((str = sc_html_parse(parser)) != NULL) {
+ if (parser->state == SC_HTML_HREF) {
/* first time : get and copy the URL */
if (parser->href == NULL) {
/* ALF - the sylpheed html parser returns an empty string,
textview_write_line(textview, str, NULL);
}
textview_write_line(textview, "\n", NULL);
- html_parser_destroy(parser);
+ sc_html_parser_destroy(parser);
}
static void textview_show_ertf(TextView *textview, FILE *fp,
void textview_set_position(TextView *textview, gint pos)
{
GtkTextView *text = GTK_TEXT_VIEW(textview->text);
- GtkTextBuffer *buffer = gtk_text_view_get_buffer(text);
- GtkTextIter iter;
- gtk_text_buffer_get_iter_at_offset(buffer, &iter, pos);
- gtk_text_buffer_place_cursor(buffer, &iter);
- gtk_text_view_scroll_to_iter(text, &iter, 0.0, FALSE, 0.0, 0.0);
+ gtkut_text_view_set_position(text, pos);
}
static GPtrArray *textview_scan_header(TextView *textview, FILE *fp)
static void textview_show_face(TextView *textview)
{
- gchar face[2048];
- gchar face_png[2048];
- gint pngsize;
- GdkPixbuf *pixbuf;
- GError *error = NULL;
GtkTextView *text = GTK_TEXT_VIEW(textview->text);
MsgInfo *msginfo = textview->messageview->msginfo;
int x = 0;
-
- if (!msginfo->face) {
- goto bail;
- }
-
- strncpy2(face, msginfo->face, sizeof(face));
-
- unfold_line(face); /* strip all whitespace and linebreaks */
- remove_space(face);
-
- pngsize = base64_decode(face_png, face, strlen(face));
-
- GdkPixbufLoader *loader = gdk_pixbuf_loader_new ();
- if (!gdk_pixbuf_loader_write (loader, face_png, pngsize, &error) ||
- !gdk_pixbuf_loader_close (loader, &error)) {
- g_warning("loading face failed\n");
- g_object_unref(loader);
+
+ if (prefs_common.display_header_pane
+ || !prefs_common.display_xface)
goto bail;
- }
-
- pixbuf = g_object_ref(gdk_pixbuf_loader_get_pixbuf(loader));
-
- g_object_unref(loader);
-
- if ((gdk_pixbuf_get_width(pixbuf) != 48) || (gdk_pixbuf_get_height(pixbuf) != 48)) {
- g_object_unref(pixbuf);
- g_warning("wrong_size");
+
+ if (!msginfo->face) {
goto bail;
}
if (textview->image)
gtk_widget_destroy(textview->image);
- textview->image = gtk_image_new_from_pixbuf(pixbuf);
+ textview->image = face_get_from_header(msginfo->face);
+ g_return_if_fail(textview->image != NULL);
+
gtk_widget_show(textview->image);
x = textview->text->allocation.width - WIDTH -5;
gtk_text_view_add_child_in_window(text, textview->image,
GTK_TEXT_WINDOW_TEXT, x, 5);
- g_object_unref(pixbuf);
-
gtk_widget_show_all(textview->text);
#if HAVE_LIBCOMPFACE
static void textview_show_xface(TextView *textview)
{
- gchar xface[2048];
MsgInfo *msginfo = textview->messageview->msginfo;
- static gchar *xpm_xface[XPM_XFACE_HEIGHT];
- static gboolean xpm_xface_init = TRUE;
- GdkPixmap *pixmap;
- GdkBitmap *mask;
GtkTextView *text = GTK_TEXT_VIEW(textview->text);
int x = 0;
+
if (prefs_common.display_header_pane
|| !prefs_common.display_xface)
goto bail;
goto bail;
}
- strncpy(xface, msginfo->xface, sizeof(xface));
-
- if (uncompface(xface) < 0) {
- g_warning("uncompface failed\n");
- goto bail;
- }
-
- if (xpm_xface_init) {
- gint i;
-
- for (i = 0; i < XPM_XFACE_HEIGHT; i++) {
- xpm_xface[i] = g_malloc(WIDTH + 1);
- *xpm_xface[i] = '\0';
- }
- xpm_xface_init = FALSE;
- }
-
- create_xpm_from_xface(xpm_xface, xface);
-
- pixmap = gdk_pixmap_create_from_xpm_d
- (textview->text->window, &mask,
- &textview->text->style->white, xpm_xface);
-
if (textview->image)
gtk_widget_destroy(textview->image);
- textview->image = gtk_image_new_from_pixmap(pixmap, mask);
+ textview->image = xface_get_from_header(msginfo->xface,
+ &textview->text->style->white,
+ textview->text->window);
+ g_return_if_fail(textview->image != NULL);
+
gtk_widget_show(textview->image);
x = textview->text->allocation.width - WIDTH -5;
g_return_if_fail(header->name != NULL);
gtk_text_buffer_get_end_iter (buffer, &iter);
- gtk_text_buffer_insert_with_tags_by_name
- (buffer, &iter, header->name, -1,
- "header_title", "header", NULL);
+ if(prefs_common.trans_hdr == TRUE) {
+ gchar *hdr = g_strndup(header->name, strlen(header->name) - 1);
+ gchar *trans_hdr = gettext(hdr);
+ gtk_text_buffer_insert_with_tags_by_name(buffer,
+ &iter, trans_hdr, -1,
+ "header_title", "header", NULL);
+ gtk_text_buffer_insert_with_tags_by_name(buffer,
+ &iter, ":", 1, "header_title", "header", NULL);
+ g_free(hdr);
+ } else {
+ gtk_text_buffer_insert_with_tags_by_name(buffer,
+ &iter, header->name,
+ -1, "header_title", "header", NULL);
+ }
if (header->name[strlen(header->name) - 1] != ' ')
gtk_text_buffer_insert_with_tags_by_name
(buffer, &iter, " ", 1,
if ((procheader_headername_equal(header->name, "X-Mailer") ||
procheader_headername_equal(header->name,
"X-Newsreader")) &&
- strstr(header->body, "Sylpheed") != NULL) {
+ strstr(header->body, "Sylpheed-Claws") != NULL) {
gtk_text_buffer_get_end_iter (buffer, &iter);
gtk_text_buffer_insert_with_tags_by_name
(buffer, &iter, header->body, -1,
gboolean case_sens)
{
GtkTextView *text = GTK_TEXT_VIEW(textview->text);
- GtkTextBuffer *buffer;
- GtkTextIter iter, match_pos;
- GtkTextMark *mark;
- gint len;
-
- g_return_val_if_fail(str != NULL, FALSE);
-
- buffer = gtk_text_view_get_buffer(text);
-
- len = g_utf8_strlen(str, -1);
- g_return_val_if_fail(len >= 0, FALSE);
-
- mark = gtk_text_buffer_get_insert(buffer);
- gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
-
- if (gtkut_text_buffer_find(buffer, &iter, str, case_sens,
- &match_pos)) {
- GtkTextIter end = match_pos;
-
- gtk_text_iter_forward_chars(&end, len);
- /* place "insert" at the last character */
- gtk_text_buffer_select_range(buffer, &end, &match_pos);
- gtk_text_view_scroll_to_mark(text, mark, 0.0, FALSE, 0.0, 0.0);
- return TRUE;
- }
- return FALSE;
+ return gtkut_text_view_search_string(text, str, case_sens);
}
gboolean textview_search_string_backward(TextView *textview, const gchar *str,
gboolean case_sens)
{
GtkTextView *text = GTK_TEXT_VIEW(textview->text);
- GtkTextBuffer *buffer;
- GtkTextIter iter, match_pos;
- GtkTextMark *mark;
- gint len;
-
- g_return_val_if_fail(str != NULL, FALSE);
- buffer = gtk_text_view_get_buffer(text);
-
- len = g_utf8_strlen(str, -1);
- g_return_val_if_fail(len >= 0, FALSE);
-
- mark = gtk_text_buffer_get_insert(buffer);
- gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
-
- if (gtkut_text_buffer_find_backward(buffer, &iter, str, case_sens,
- &match_pos)) {
- GtkTextIter end = match_pos;
-
- gtk_text_iter_forward_chars(&end, len);
- gtk_text_buffer_select_range(buffer, &match_pos, &end);
- gtk_text_view_scroll_to_mark(text, mark, 0.0, FALSE, 0.0, 0.0);
- return TRUE;
- }
-
- return FALSE;
+ return gtkut_text_view_search_string_backward(text, str, case_sens);
}
void textview_scroll_one_line(TextView *textview, gboolean up)
return FALSE;
}
+void textview_cursor_wait(TextView *textview)
+{
+ GdkWindow *window = gtk_text_view_get_window(
+ GTK_TEXT_VIEW(textview->text),
+ GTK_TEXT_WINDOW_TEXT);
+ gdk_window_set_cursor(window, watch_cursor);
+}
+
+void textview_cursor_normal(TextView *textview)
+{
+ GdkWindow *window = gtk_text_view_get_window(
+ GTK_TEXT_VIEW(textview->text),
+ GTK_TEXT_WINDOW_TEXT);
+ gdk_window_set_cursor(window, text_cursor);
+}
+
static void textview_uri_update(TextView *textview, gint x, gint y)
{
GtkTextBuffer *buffer;
window = gtk_text_view_get_window(GTK_TEXT_VIEW(textview->text),
GTK_TEXT_WINDOW_TEXT);
- gdk_window_set_cursor(window, uri ? hand_cursor : text_cursor);
+ if (textview->messageview->mainwin->cursor_count == 0) {
+ gdk_window_set_cursor(window, uri ? hand_cursor : text_cursor);
+ } else {
+ gdk_window_set_cursor(window, watch_cursor);
+ }
TEXTVIEW_STATUSBAR_POP(textview);
uri_path = get_uri_path(uri->uri);
visible_uri_path = get_uri_path(visible_str);
- if (strcmp(uri_path, visible_uri_path) != 0)
+ if (path_cmp(uri_path, visible_uri_path) != 0)
retval = FALSE;
}