#include "gtkutils.h"
#include "prefs_common.h"
#include "rfc2015.h"
+#include "pgptext.h"
typedef enum
{
do {
if (rfc2015_has_signature(partinfo))
return TRUE;
+ if (pgptext_has_signature(partinfo))
+ return TRUE;
} while ((partinfo = partinfo->parent) != NULL);
debug_print("mimeview_is_signed: FALSE\n" );
}
mimeview->file = g_strdup(file);
- /* skip headers */
+ /* skip MIME part headers */
if (mimeinfo->mime_type == MIME_MULTIPART) {
if (fseek(fp, mimeinfo->fpos, SEEK_SET) < 0)
perror("fseek");
gtk_signal_handler_unblock_by_func(GTK_OBJECT(ctree),
mimeview_selected, mimeview);
- if ((node = gtk_ctree_node_nth(ctree, 0))) {
+ /* search first text part */
+ for (node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+ node != NULL; node = GTK_CTREE_NODE_NEXT(node)) {
+ MimeInfo *partinfo;
+
+ partinfo = gtk_ctree_node_get_row_data(ctree, node);
+ if (partinfo && partinfo->mime_type == MIME_TEXT)
+ break;
+ }
+ if (!node)
+ node = GTK_CTREE_NODE(GTK_CLIST(ctree)->row_list);
+
+ if (node) {
gtk_ctree_select(ctree, node);
+ gtkut_ctree_set_focus_row(ctree, node);
gtk_widget_grab_focus(mimeview->ctree);
}
}
switch (partinfo->mime_type) {
case MIME_TEXT:
case MIME_TEXT_HTML:
+ case MIME_TEXT_ENRICHED:
case MIME_MESSAGE_RFC822:
case MIME_MULTIPART:
mimeview_show_message_part(mimeview, partinfo);
(GTK_CTREE(mimeview->ctree), mimeview->opened);
if (partinfo && (partinfo->mime_type == MIME_TEXT ||
partinfo->mime_type == MIME_TEXT_HTML ||
+ partinfo->mime_type == MIME_TEXT_ENRICHED ||
partinfo->mime_type == MIME_MESSAGE_RFC822 ||
partinfo->mime_type == MIME_IMAGE ||
partinfo->mime_type == MIME_MULTIPART))
else
menu_set_sensitive(mimeview->popupfactory,
"/Display as text", TRUE);
+ if (partinfo &&
+ partinfo->mime_type == MIME_APPLICATION_OCTET_STREAM)
+ menu_set_sensitive(mimeview->popupfactory,
+ "/Open", FALSE);
+ else
+ menu_set_sensitive(mimeview->popupfactory,
+ "/Open", TRUE);
#if USE_GPGME
menu_set_sensitive(mimeview->popupfactory,
"/Check signature",
}
break;
case GDK_BackSpace:
- case GDK_Delete:
textview_scroll_page(mimeview->textview, TRUE);
return;
case GDK_Return:
{
MimeInfo *partinfo;
gchar *filename;
+ gchar *cmd;
if (!mimeview->opened) return;
if (!mimeview->file) return;
filename = procmime_get_tmp_file_name(partinfo);
- if (procmime_get_part(filename, mimeview->file, partinfo) < 0)
+ if (procmime_get_part(filename, mimeview->file, partinfo) < 0) {
alertpanel_error
(_("Can't save the part of multipart message."));
- else {
- gchar *cmd;
-
- cmd = input_dialog
- (_("Open with"),
- _("Enter the command line to open file:\n"
- "(`%s' will be replaced with file name)"),
- "gedit %s");
- if (cmd) {
- mimeview_view_file(filename, partinfo, cmd);
- g_free(cmd);
- }
+ g_free(filename);
+ return;
+ }
+
+ if (!prefs_common.mime_open_cmd_history)
+ prefs_common.mime_open_cmd_history =
+ add_history(NULL, prefs_common.mime_open_cmd);
+
+ cmd = input_dialog_combo
+ (_("Open with"),
+ _("Enter the command line to open file:\n"
+ "(`%s' will be replaced with file name)"),
+ prefs_common.mime_open_cmd,
+ prefs_common.mime_open_cmd_history);
+ if (cmd) {
+ mimeview_view_file(filename, partinfo, cmd);
+ g_free(prefs_common.mime_open_cmd);
+ prefs_common.mime_open_cmd = cmd;
+ prefs_common.mime_open_cmd_history =
+ add_history(prefs_common.mime_open_cmd_history, cmd);
}
g_free(filename);
static gchar *default_audio_cmdline = "play '%s'";
static gchar *default_html_cmdline =
"netscape -remote 'openURL(%s,raise)'";
- static gchar *mime_cmdline = "metamail -d -b -c %s '%s'";
+ static gchar *mime_cmdline = "metamail -d -b -x -c %s '%s'";
gchar buf[1024];
gchar m_buf[1024];
const gchar *cmd;
return;
}
- execute_command_line(buf);
+ execute_command_line(buf, TRUE);
}
#if USE_GPGME