-2003-11-01 [alfons] 0.9.6claws71
+2003-11-10 [christoph] 0.9.6claws72
+
+ * src/mimeview.c
+ * src/pgpmime.c
+ * src/privacy.[ch]
+ * src/sgpgme.[ch]
+ * src/textview.[ch]
+ o add code to view full signature info
+ o do automatic signature checks
+
+2003-11-10 [alfons] 0.9.6claws71
* src/summaryview.c
don't crash when gtkut_font_load() returns invalid font (has
MICRO_VERSION=6
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=71
+EXTRA_VERSION=72
if test $EXTRA_VERSION -eq 0; then
VERSION=${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}claws
else
}
static void check_signature_cb(GtkWidget *widget, gpointer user_data);
+static void display_full_info_cb(GtkWidget *widget, gpointer user_data);
static void update_signature_noticeview(MimeView *mimeview, MimeInfo *mimeinfo)
{
icon = STOCK_PIXMAP_PRIVACY_SIGNED;
break;
case SIGNATURE_OK:
+ button_text = _("Full info");
+ func = display_full_info_cb;
icon = STOCK_PIXMAP_PRIVACY_PASSED;
break;
case SIGNATURE_WARN:
update_signature_noticeview(mimeview, mimeinfo);
}
+static void display_full_info_cb(GtkWidget *widget, gpointer user_data)
+{
+ MimeView *mimeview = (MimeView *) user_data;
+ MimeInfo *mimeinfo = mimeview_get_selected_part(mimeview);
+ gchar *siginfo;
+
+ siginfo = privacy_mimeinfo_sig_info_full(mimeinfo);
+ textview_set_text(mimeview->textview, siginfo);
+ g_free(siginfo);
+}
+
static void mimeview_selected(GtkCTree *ctree, GtkCTreeNode *node, gint column,
MimeView *mimeview)
{
#include "procmime.h"
#include "pgpmime.h"
#include "sgpgme.h"
+#include "prefs_common.h"
typedef struct _PrivacyDataPGP PrivacyDataPGP;
static PrivacySystem pgpmime_system;
+static gint pgpmime_check_signature(MimeInfo *mimeinfo);
+
static PrivacyDataPGP *pgpmime_new_privacydata()
{
PrivacyDataPGP *data;
}
data->done_sigtest = TRUE;
data->is_signed = TRUE;
+
+ if (prefs_common.auto_check_signatures)
+ pgpmime_check_signature(mimeinfo);
return TRUE;
}
return sgpgme_sigstat_info_short(data->ctx, data->sigstatus);
}
+static gchar *pgpmime_get_sig_info_full(MimeInfo *mimeinfo)
+{
+ PrivacyDataPGP *data = (PrivacyDataPGP *) mimeinfo->privacy;
+
+ g_return_val_if_fail(data != NULL, g_strdup("Error"));
+
+ return sgpgme_sigstat_info_full(data->ctx, data->sigstatus);
+}
+
static PrivacySystem pgpmime_system = {
"PGP/Mime", /* name */
pgpmime_check_signature, /* check_signature(MimeInfo *) */
pgpmime_get_sig_status, /* get_sig_status(MimeInfo *) */
pgpmime_get_sig_info_short, /* get_sig_info_short(MimeInfo *) */
- NULL, /* get_sig_info_full(MimeInfo *) */
+ pgpmime_get_sig_info_full, /* get_sig_info_full(MimeInfo *) */
/* NOT YET */
NULL, /* is_encrypted(MimeInfo *) */
return system->get_sig_info_short(mimeinfo);
}
+gchar *privacy_mimeinfo_sig_info_full(MimeInfo *mimeinfo)
+{
+ PrivacySystem *system;
+
+ g_return_val_if_fail(mimeinfo != NULL, NULL);
+
+ if (mimeinfo->privacy == NULL)
+ privacy_mimeinfo_is_signed(mimeinfo);
+
+ if (mimeinfo->privacy == NULL)
+ return g_strdup(_("No signature found"));
+
+ system = mimeinfo->privacy->system;
+ if (system->get_sig_info_full == NULL)
+ return g_strdup(_("No information available"));
+
+ return system->get_sig_info_full(mimeinfo);
+}
+
gboolean privacy_mimeinfo_is_encrypted(MimeInfo *mimeinfo)
{
g_return_val_if_fail(mimeinfo != NULL, FALSE);
gint privacy_mimeinfo_check_signature (MimeInfo *);
SignatureStatus privacy_mimeinfo_get_sig_status (MimeInfo *);
gchar *privacy_mimeinfo_sig_info_short (MimeInfo *);
+gchar *privacy_mimeinfo_sig_info_full (MimeInfo *);
#if 0 /* NOT YET */
gboolean privacy_mimeinfo_is_encrypted (MimeInfo *);
return g_strdup(_("Error"));
}
+gchar *sgpgme_sigstat_info_full(GpgmeCtx ctx, GpgmeSigStat status)
+{
+ return g_strdup(_("Todo"));
+}
+
void sgpgme_init()
{
if (gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP) !=
(GpgmeSigStat status);
gchar *sgpgme_sigstat_info_short (GpgmeCtx ctx,
GpgmeSigStat status);
+gchar *sgpgme_sigstat_info_full (GpgmeCtx ctx,
+ GpgmeSigStat status);
#endif /* SGPGME_H */
/*
text/plain : score 3
- text/* : score 2
+ text/ * : score 2
other : score 1
*/
prefered_body = NULL;
spacingfont = gdk_font_load("-*-*-medium-r-normal--6-*");
}
+void textview_set_text(TextView *textview, const gchar *text)
+{
+ GtkSText *stext;
+
+ g_return_if_fail(textview != NULL);
+ g_return_if_fail(text != NULL);
+
+ textview_clear(textview);
+
+ stext = GTK_STEXT(textview->text);
+ gtk_stext_freeze(stext);
+ gtk_stext_insert(stext, textview->msgfont, NULL, NULL, text, strlen(text));
+ gtk_stext_thaw(stext);
+}
+
enum
{
H_DATE = 0,
gboolean all_headers);
void textview_set_font (TextView *textview,
const gchar *codeset);
+void textview_set_text (TextView *textview,
+ const gchar *text);
void textview_set_position (TextView *textview,
gint pos);
void textview_scroll_one_line (TextView *textview,