}
}
+static void compose_force_signing(Compose *compose, PrefsAccount *account)
+{
+ gchar *privacy = NULL;
+
+ if (account->default_privacy_system
+ && strlen(account->default_privacy_system)) {
+ privacy = account->default_privacy_system;
+ } else {
+ GSList *privacy_avail = privacy_get_system_ids();
+ if (privacy_avail && g_slist_length(privacy_avail)) {
+ privacy = (gchar *)(privacy_avail->data);
+ }
+ }
+ if (privacy != NULL) {
+ compose->privacy_system = g_strdup(privacy);
+ compose_update_privacy_system_menu_item(compose);
+ compose_use_signing(compose, TRUE);
+ }
+}
+
void compose_reply_mode(ComposeMode mode, GSList *msginfo_list, gchar *body)
{
MsgInfo *msginfo;
return compose;
}
+static gboolean compose_is_sig_separator(Compose *compose, GtkTextBuffer *textbuf, GtkTextIter *iter)
+{
+ GtkTextIter start = *iter;
+ GtkTextIter end_iter;
+ int start_pos = gtk_text_iter_get_offset(&start);
+
+ if (!compose->account->sig_sep)
+ return FALSE;
+
+ gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
+ start_pos+strlen(compose->account->sig_sep));
+
+ /* check sig separator */
+ if (!strcmp(gtk_text_iter_get_text(&start, &end_iter),
+ compose->account->sig_sep)) {
+ /* check end of line (\n) */
+ gtk_text_buffer_get_iter_at_offset(textbuf, &start,
+ start_pos+strlen(compose->account->sig_sep));
+ gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
+ start_pos+strlen(compose->account->sig_sep)+1);
+
+ if (!strcmp(gtk_text_iter_get_text(&start, &end_iter),"\n"));
+ return TRUE;
+
+
+ }
+
+ return FALSE;
+}
+
+static void compose_colorize_signature(Compose *compose)
+{
+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(compose->text));
+ GtkTextIter iter;
+ GtkTextIter end_iter;
+ gtk_text_buffer_get_start_iter(buffer, &iter);
+ while (gtk_text_iter_forward_line(&iter))
+ if (compose_is_sig_separator(compose, buffer, &iter)) {
+ gtk_text_buffer_get_end_iter(buffer, &end_iter);
+ gtk_text_buffer_apply_tag_by_name(buffer,"signature",&iter, &end_iter);
+ }
+}
+
void compose_reedit(MsgInfo *msginfo)
{
Compose *compose = NULL;
compose_attach_parts(compose, msginfo);
+ compose_colorize_signature(compose);
+
g_signal_handlers_unblock_by_func(G_OBJECT(textbuf),
G_CALLBACK(compose_changed_cb),
compose);
compose_quote_fmt(compose, msginfo, "%M", NULL, NULL);
gtk_text_view_set_editable(GTK_TEXT_VIEW(compose->text), FALSE);
+ compose_colorize_signature(compose);
+
ifactory = gtk_item_factory_from_widget(compose->popupmenu);
menu_set_sensitive(ifactory, "/Add...", FALSE);
menu_set_sensitive(ifactory, "/Remove", FALSE);
gchar *content_type;
content_type = procmime_get_content_type_str(child->type, child->subtype);
- partname = procmime_mimeinfo_get_parameter(child, "filename");
- if (partname == NULL)
- partname = procmime_mimeinfo_get_parameter(child, "name");
- if (partname == NULL)
- partname = "";
- compose_attach_append(compose, outfile,
- partname, content_type);
+
+ /* if we meet a pgp signature, we don't attach it, but
+ * we force signing. */
+ if (strcmp(content_type, "application/pgp-signature")) {
+ partname = procmime_mimeinfo_get_parameter(child, "filename");
+ if (partname == NULL)
+ partname = procmime_mimeinfo_get_parameter(child, "name");
+ if (partname == NULL)
+ partname = "";
+ compose_attach_append(compose, outfile,
+ partname, content_type);
+ } else {
+ compose_force_signing(compose, compose->account);
+ }
g_free(content_type);
}
g_free(outfile);
return do_break;
}
-static gboolean compose_is_sig_separator(Compose *compose, GtkTextBuffer *textbuf, GtkTextIter *iter)
-{
- GtkTextIter start = *iter;
- GtkTextIter end_iter;
- int start_pos = gtk_text_iter_get_offset(&start);
-
- if (!compose->account->sig_sep)
- return FALSE;
-
- gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
- start_pos+strlen(compose->account->sig_sep));
-
- /* check sig separator */
- if (!strcmp(gtk_text_iter_get_text(&start, &end_iter),
- compose->account->sig_sep)) {
- /* check end of line (\n) */
- gtk_text_buffer_get_iter_at_offset(textbuf, &start,
- start_pos+strlen(compose->account->sig_sep));
- gtk_text_buffer_get_iter_at_offset(textbuf, &end_iter,
- start_pos+strlen(compose->account->sig_sep)+1);
-
- if (!strcmp(gtk_text_iter_get_text(&start, &end_iter),"\n"));
- return TRUE;
-
-
- }
-
- return FALSE;
-}
-
static gboolean compose_join_next_line(Compose *compose,
GtkTextBuffer *buffer,
GtkTextIter *iter,
gtk_text_buffer_insert(buffer, iter, text, len);
mark = gtk_text_buffer_create_mark(buffer, NULL, iter, FALSE);
- compose_wrap_all_full(compose, FALSE);
+
+/* compose_wrap_all_full(compose, FALSE); */
+ compose_wrap_paragraph(compose, iter, FALSE);
+
gtk_text_buffer_get_iter_at_mark(buffer, iter, mark);
gtk_text_buffer_delete_mark(buffer, mark);
{
MsgInfo *tmp_msginfo = NULL;
MsgFlags flags = {0, 0};
-
+ gchar *tmpfile = get_tmp_file();
+ FILE *fp = g_fopen(tmpfile, "wb");
if (!mimeinfo || mimeinfo->type != MIMETYPE_MESSAGE ||
g_ascii_strcasecmp(mimeinfo->subtype, "rfc822")) {
g_warning("procmsg_msginfo_new_from_mimeinfo(): unsuitable mimeinfo");
+ if (fp)
+ fclose(fp);
+ g_free(tmpfile);
return NULL;
}
-
- if (mimeinfo->content == MIMECONTENT_MEM) {
- gchar *tmpfile = get_tmp_file();
- str_write_to_file(mimeinfo->data.mem, tmpfile);
- g_free(mimeinfo->data.mem);
- mimeinfo->content = MIMECONTENT_FILE;
- mimeinfo->data.filename = g_strdup(tmpfile);
- g_free(tmpfile);
- tmp_msginfo = procheader_parse_file(mimeinfo->data.filename,
- flags, TRUE, FALSE);
- if (tmp_msginfo != NULL) {
- tmp_msginfo->folder = src_msginfo->folder;
- tmp_msginfo->plaintext_file = g_strdup(mimeinfo->data.filename);
- } else {
- g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
- }
- } else {
- gchar *tmpfile = get_tmp_file();
- FILE *fp = g_fopen(tmpfile, "wb");
- if (fp && procmime_write_mimeinfo(mimeinfo, fp) >= 0) {
- if (fp)
- fclose(fp);
- fp = NULL;
- tmp_msginfo = procheader_parse_file(
- tmpfile, flags,
- TRUE, FALSE);
- }
- if (fp)
- fclose(fp);
+ if (fp && procmime_write_mimeinfo(mimeinfo, fp) >= 0) {
+ fclose(fp);
+ fp = NULL;
+ tmp_msginfo = procheader_parse_file(
+ tmpfile, flags,
+ TRUE, FALSE);
+ }
+ if (fp)
+ fclose(fp);
- if (tmp_msginfo != NULL) {
- tmp_msginfo->folder = src_msginfo->folder;
- tmp_msginfo->plaintext_file = g_strdup(tmpfile);
- } else {
- g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
- }
- g_free(tmpfile);
-
+ if (tmp_msginfo != NULL) {
+ tmp_msginfo->folder = src_msginfo->folder;
+ tmp_msginfo->plaintext_file = g_strdup(tmpfile);
+ } else {
+ g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
}
-
+
+ g_free(tmpfile);
+
return tmp_msginfo;
}