#include "addressbook.h"
#include "displayheader.h"
#include "account.h"
-
-#define FONT_LOAD(font, s) \
-{ \
- gchar *fontstr, *p; \
- \
- Xstrdup_a(fontstr, s, ); \
- if ((p = strchr(fontstr, ',')) != NULL) *p = '\0'; \
- font = gdk_font_load(fontstr); \
- if (!font) \
- g_warning("Couldn't load the font '%s'\n", fontstr); \
-}
+#include "mimeview.h"
typedef struct _RemoteURI RemoteURI;
{(gulong)0, (gushort)0, (gushort)0, (gushort)0}
};
+static GdkColor signature_color = {
+ (gulong)0,
+ (gushort)0x7fff,
+ (gushort)0x7fff,
+ (gushort)0x7fff
+};
+
static GdkColor uri_color = {
(gulong)0,
(gushort)0,
};
#endif
+#if USE_GPGME
+static GdkColor good_sig_color = {
+ (gulong)0,
+ (gushort)0,
+ (gushort)0xbfff,
+ (gushort)0
+};
+
+static GdkColor nocheck_sig_color = {
+ (gulong)0,
+ (gushort)0,
+ (gushort)0,
+ (gushort)0xcfff
+};
+
+static GdkColor bad_sig_color = {
+ (gulong)0,
+ (gushort)0xefff,
+ (gushort)0,
+ (gushort)0
+};
+#endif
+
static GdkFont *text_sb_font;
static GdkFont *text_mb_font;
static gint text_sb_font_orig_ascent;
GtkWidget *text_sb;
GtkWidget *text_mb;
- debug_print(_("Creating text view...\n"));
+ debug_print("Creating text view...\n");
textview = g_new0(TextView, 1);
scrolledwin_sb = gtk_scrolled_window_new(NULL, NULL);
GtkStyle *style;
GdkFont *font;
- FONT_LOAD(font, prefs_common.normalfont);
+ font = gtkut_font_load_from_fontset(prefs_common.normalfont);
if (font) {
style = gtk_style_copy(text_sb->style);
gdk_font_unref(style->font);
"e_colors[2]);
gtkut_convert_int_to_gdk_color(prefs_common.uri_col,
&uri_color);
+ gtkut_convert_int_to_gdk_color(prefs_common.signature_col,
+ &signature_color);
} else {
quote_colors[0] = quote_colors[1] = quote_colors[2] =
- uri_color = emphasis_color = black;
+ uri_color = emphasis_color = signature_color = black;
}
}
gtk_stext_freeze(text);
+#if USE_GPGME
+ if (mimeinfo->sigstatus)
+ g_snprintf(buf, sizeof(buf), "\n[%s (%s)]\n",
+ mimeinfo->content_type, mimeinfo->sigstatus);
+ else
+#endif
if (mimeinfo->filename || mimeinfo->name)
g_snprintf(buf, sizeof(buf), "\n[%s %s (%d bytes)]\n",
mimeinfo->filename ? mimeinfo->filename :
g_snprintf(buf, sizeof(buf), "\n[%s (%d bytes)]\n",
mimeinfo->content_type, mimeinfo->size);
+#if USE_GPGME
+ if (mimeinfo->sigstatus && !mimeinfo->sigstatus_full) {
+ gchar *tmp;
+ /* use standard font */
+ gpointer oldfont = textview->msgfont;
+ textview->msgfont = NULL;
+
+ tmp = g_strconcat("pgp: ", _("Check signature"), NULL);
+ textview_write_link(textview, tmp, buf, NULL);
+
+ /* put things back */
+ textview->msgfont = (GdkFont *)oldfont;
+ oldfont = NULL;
+ g_free(tmp);
+ } else if (mimeinfo->sigstatus) {
+ GdkColor *color;
+ if (!strcmp(mimeinfo->sigstatus, _("Good signature")))
+ color = &good_sig_color;
+ else if (!strcmp(mimeinfo->sigstatus, _("BAD signature")))
+ color = &bad_sig_color;
+ else
+ color = &nocheck_sig_color;
+ gtk_stext_insert(text, NULL, color, NULL, buf, -1);
+ } else
+#endif
if (mimeinfo->mime_type != MIME_TEXT &&
mimeinfo->mime_type != MIME_TEXT_HTML &&
mimeinfo->mime_type != MIME_TEXT_ENRICHED) {
mimeinfo->parent &&
mimeinfo->parent->children != mimeinfo)
gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
- else
+ else if (prefs_common.display_header)
gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
if (prefs_common.force_charset)
charset = prefs_common.force_charset;
conv = conv_code_converter_new(charset);
tmpfp = procmime_decode_content(NULL, fp, mimeinfo);
+
+ textview->is_in_signature = FALSE;
+
if (tmpfp) {
+
if (mimeinfo->mime_type == MIME_TEXT_HTML)
textview_show_html(textview, tmpfp, conv);
else if (mimeinfo->mime_type == MIME_TEXT_ENRICHED)
else
fg_color = "e_colors[quotelevel];
+ if (prefs_common.enable_color && (strcmp(buf,"-- \n") == 0 || textview->is_in_signature)) {
+ fg_color = &signature_color;
+ textview->is_in_signature = TRUE;
+ }
+
if (prefs_common.head_space && spacingfont && buf[0] != '\n')
gtk_stext_insert(text, spacingfont, NULL, NULL, " ", 1);
/* In multi-byte mode, GtkSText can't display 8bit characters
correctly, so it must be single-byte mode. */
if (MB_CUR_MAX > 1) {
- if (codeset) {
+ if (codeset && conv_get_current_charset() != C_UTF_8) {
if (!g_strncasecmp(codeset, "ISO-8859-", 9) ||
!g_strcasecmp(codeset, "BALTIC"))
use_fontset = FALSE;
text_sb_font->ascent = text_sb_font_orig_ascent;
text_sb_font->descent = text_sb_font_orig_descent;
}
- if (MB_CUR_MAX > 1) {
- FONT_LOAD(font, "-*-courier-medium-r-normal--14-*-*-*-*-*-iso8859-1");
- } else {
- FONT_LOAD(font, prefs_common.textfont);
- }
+ if (MB_CUR_MAX > 1)
+ font = gdk_font_load("-*-courier-medium-r-normal--14-*-*-*-*-*-iso8859-1");
+ else
+ font = gtkut_font_load_from_fontset
+ (prefs_common.textfont);
if (font && text_sb_font != font) {
if (text_sb_font)
gdk_font_unref(text_sb_font);
}
if (!textview->boldfont && prefs_common.boldfont)
- FONT_LOAD(textview->boldfont, prefs_common.boldfont);
+ textview->boldfont = gtkut_font_load(prefs_common.boldfont);
if (!spacingfont)
spacingfont = gdk_font_load("-*-*-medium-r-normal--6-*");
}
header = g_ptr_array_index(headers, i);
g_ptr_array_add(sorted_headers, header);
}
- }
-
- g_ptr_array_free(headers, FALSE);
+ g_ptr_array_free(headers, TRUE);
+ } else
+ procheader_header_array_destroy(headers);
return sorted_headers;
}
textview_scroll_one_line(textview,
(event->state & GDK_MOD1_MASK) != 0);
break;
+ case GDK_Delete:
+ if (summaryview)
+ summary_pass_key_press_event(summaryview, event);
+ break;
case GDK_n:
case GDK_N:
case GDK_p:
if (folder_item->prefs && folder_item->prefs->enable_default_account)
account = account_find_from_id(folder_item->prefs->default_account);
}
- compose_new_with_recipient
- (account, uri->uri + 7);
+ compose_new(account, uri->uri + 7, NULL);
}
- } else {
+ } else
+#if USE_GPGME
+ if (!g_strncasecmp(uri->uri, "pgp:", 4)) {
+ GtkAdjustment *pos = gtk_scrolled_window_get_vadjustment(
+ GTK_SCROLLED_WINDOW(textview->scrolledwin));
+ gfloat vpos = pos->value;
+ mimeview_check_signature(textview->messageview->mimeview);
+ /* scroll back where we were */
+ gtk_adjustment_set_value(pos, vpos);
+ } else
+#endif
+ {
open_uri(uri->uri,
prefs_common.uri_cmd);
}