#include "statusbar.h"
#include "folder_item_prefs.h"
#include "avatars.h"
+#include "file-utils.h"
+
#ifndef USE_ALT_ADDRBOOK
#include "addressbook.h"
#else
gpointer data);
static PrefsAccount *select_account_from_list
- (GList *ac_list);
+ (GList *ac_list,
+ gboolean has_accounts);
static void addressbook_open_cb (GtkAction *action,
gpointer data);
static void add_address_cb (GtkAction *action,
static GList *msgview_list = NULL;
static GtkActionEntry msgview_entries[] =
{
- {"Menu", NULL, "Menu" },
+ {"Menu", NULL, "Menu", NULL, NULL, NULL },
/* menus */
- {"File", NULL, N_("_File") },
- {"Edit", NULL, N_("_Edit") },
- {"View", NULL, N_("_View") },
- {"Message", NULL, N_("_Message") },
- {"Tools", NULL, N_("_Tools") },
- {"Help", NULL, N_("_Help") },
- {"PlaceHolder", NULL, "Placeholder", NULL, NULL, G_CALLBACK(messageview_nothing_cb) },
+ {"File", NULL, N_("_File"), NULL, NULL, NULL },
+ {"Edit", NULL, N_("_Edit"), NULL, NULL, NULL },
+ {"View", NULL, N_("_View"), NULL, NULL, NULL },
+ {"Message", NULL, N_("_Message"), NULL, NULL, NULL },
+ {"Tools", NULL, N_("_Tools"), NULL, NULL, NULL },
+ {"Help", NULL, N_("_Help"), NULL, NULL, NULL },
+ {"PlaceHolder", NULL, "Placeholder", NULL, NULL, G_CALLBACK(messageview_nothing_cb) },
/* File menu */
- {"File/SaveAs", NULL, N_("_Save email as..."), "<control>S", NULL, G_CALLBACK(save_as_cb) },
- {"File/SavePartAs", NULL, N_("_Save part as..."), "Y", NULL, G_CALLBACK(save_part_as_cb) },
- {"File/PageSetup", NULL, N_("Page setup..."), NULL, NULL, G_CALLBACK(page_setup_cb) },
- {"File/Print", NULL, N_("_Print..."), "<control>P", NULL, G_CALLBACK(print_cb) },
- {"File/---", NULL, "---", NULL, NULL, NULL },
- {"File/Close", NULL, N_("_Close"), "<control>W", NULL, G_CALLBACK(close_cb) },
+ {"File/SaveAs", NULL, N_("_Save email as..."), "<control>S", NULL, G_CALLBACK(save_as_cb) },
+ {"File/SavePartAs", NULL, N_("_Save part as..."), "Y", NULL, G_CALLBACK(save_part_as_cb) },
+ {"File/PageSetup", NULL, N_("Page setup..."), NULL, NULL, G_CALLBACK(page_setup_cb) },
+ {"File/Print", NULL, N_("_Print..."), "<control>P", NULL, G_CALLBACK(print_cb) },
+ {"File/---", NULL, "---", NULL, NULL, NULL },
+ {"File/Close", NULL, N_("_Close"), "<control>W", NULL, G_CALLBACK(close_cb) },
/* Edit menu */
- {"Edit/Copy", NULL, N_("_Copy"), "<control>C", NULL, G_CALLBACK(copy_cb) },
- {"Edit/SelectAll", NULL, N_("_Select all"), "<control>A", NULL, G_CALLBACK(allsel_cb) },
- {"Edit/---", NULL, "---", NULL, NULL, NULL },
- {"Edit/Find", NULL, N_("_Find"), "<control>F", NULL, G_CALLBACK(search_cb) },
+ {"Edit/Copy", NULL, N_("_Copy"), "<control>C", NULL, G_CALLBACK(copy_cb) },
+ {"Edit/SelectAll", NULL, N_("_Select all"), "<control>A", NULL, G_CALLBACK(allsel_cb) },
+ {"Edit/---", NULL, "---", NULL, NULL, NULL },
+ {"Edit/Find", NULL, N_("_Find"), "<control>F", NULL, G_CALLBACK(search_cb) },
/* View menu */
- {"View/Goto", NULL, N_("_Go to") },
- {"View/Goto/Prev", NULL, N_("_Previous message"), "P", NULL, G_CALLBACK(prev_cb) },
- {"View/Goto/Next", NULL, N_("_Next message"), "N", NULL, G_CALLBACK(next_cb) },
- {"View/Goto/---", NULL, "---", NULL, NULL, NULL },
- {"View/Goto/PrevUnread", NULL, N_("P_revious unread message"), "<shift>P", NULL, G_CALLBACK(prev_unread_cb) },
- {"View/Goto/NextUnread", NULL, N_("N_ext unread message"), "<shift>N", NULL, G_CALLBACK(next_unread_cb) },
- /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Goto/PrevNew", NULL, N_("Previous ne_w message"), NULL, NULL, G_CALLBACK(prev_new_cb) },
- {"View/Goto/NextNew", NULL, N_("Ne_xt new message"), NULL, NULL, G_CALLBACK(next_new_cb) },
- /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Goto/PrevMarked", NULL, N_("Previous _marked message"), NULL, NULL, G_CALLBACK(prev_marked_cb) },
- {"View/Goto/NextMarked", NULL, N_("Next m_arked message"), NULL, NULL, G_CALLBACK(next_marked_cb) },
- /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Goto/PrevLabeled", NULL, N_("Previous _labeled message"), NULL, NULL, G_CALLBACK(prev_labeled_cb) },
- {"View/Goto/NextLabeled", NULL, N_("Next la_beled message"), NULL, NULL, G_CALLBACK(next_labeled_cb) },
- /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Goto/PrevHistory", NULL, N_("Previous opened message"), "<alt>Left", NULL, G_CALLBACK(prev_history_cb) },
- {"View/Goto/NextHistory", NULL, N_("Next opened message"), "<alt>Right", NULL, G_CALLBACK(next_history_cb) },
- /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Goto/ParentMessage", NULL, N_("Parent message"), "<control>Up", NULL, G_CALLBACK(parent_cb) },
- /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Goto/NextUnreadFolder", NULL, N_("Next unread _folder"), "<shift>G", NULL, G_CALLBACK(goto_unread_folder_cb) },
- {"View/Goto/Folder", NULL, N_("F_older..."), "G", NULL, G_CALLBACK(goto_folder_cb) },
- /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
- {"View/Goto/NextPart", NULL, N_("Next part"), "A", NULL, G_CALLBACK(goto_next_part_cb) },
- {"View/Goto/PrevPart", NULL, N_("Previous part"), "Z", NULL, G_CALLBACK(goto_prev_part_cb) },
- {"View/Scroll", NULL, N_("Message scroll") },
- {"View/Scroll/PrevLine", NULL, N_("Previous line"), NULL, NULL, G_CALLBACK(scroll_prev_line_cb) },
- {"View/Scroll/NextLine", NULL, N_("Next line"), NULL, NULL, G_CALLBACK(scroll_next_line_cb) },
- {"View/Scroll/PrevPage", NULL, N_("Previous page"), NULL, NULL, G_CALLBACK(scroll_prev_page_cb) },
- {"View/Scroll/NextPage", NULL, N_("Next page"), NULL, NULL, G_CALLBACK(scroll_next_page_cb) },
- /* {"View/Scroll/---", NULL, "---", NULL, NULL, NULL }, */
-
- {"View/Encoding", NULL, N_("Character _encoding") }, /* set_charset_cb */
- {"View/Encoding/---", NULL, "---" },
+ {"View/Goto", NULL, N_("_Go to"), NULL, NULL, NULL },
+ {"View/Goto/Prev", NULL, N_("_Previous message"), "P", NULL, G_CALLBACK(prev_cb) },
+ {"View/Goto/Next", NULL, N_("_Next message"), "N", NULL, G_CALLBACK(next_cb) },
+ {"View/Goto/---", NULL, "---", NULL, NULL, NULL },
+ {"View/Goto/PrevUnread", NULL, N_("P_revious unread message"), "<shift>P", NULL, G_CALLBACK(prev_unread_cb) },
+ {"View/Goto/NextUnread", NULL, N_("N_ext unread message"), "<shift>N", NULL, G_CALLBACK(next_unread_cb) },
+ /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
+ {"View/Goto/PrevNew", NULL, N_("Previous ne_w message"), NULL, NULL, G_CALLBACK(prev_new_cb) },
+ {"View/Goto/NextNew", NULL, N_("Ne_xt new message"), NULL, NULL, G_CALLBACK(next_new_cb) },
+ /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
+ {"View/Goto/PrevMarked", NULL, N_("Previous _marked message"), NULL, NULL, G_CALLBACK(prev_marked_cb) },
+ {"View/Goto/NextMarked", NULL, N_("Next m_arked message"), NULL, NULL, G_CALLBACK(next_marked_cb) },
+ /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
+ {"View/Goto/PrevLabeled", NULL, N_("Previous _labeled message"), NULL, NULL, G_CALLBACK(prev_labeled_cb) },
+ {"View/Goto/NextLabeled", NULL, N_("Next la_beled message"), NULL, NULL, G_CALLBACK(next_labeled_cb) },
+ /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
+ {"View/Goto/PrevHistory", NULL, N_("Previous opened message"), "<alt>Left", NULL, G_CALLBACK(prev_history_cb) },
+ {"View/Goto/NextHistory", NULL, N_("Next opened message"), "<alt>Right", NULL, G_CALLBACK(next_history_cb) },
+ /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
+ {"View/Goto/ParentMessage", NULL, N_("Parent message"), "<control>Up", NULL, G_CALLBACK(parent_cb) },
+ /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
+ {"View/Goto/NextUnreadFolder", NULL, N_("Next unread _folder"), "<shift>G", NULL, G_CALLBACK(goto_unread_folder_cb) },
+ {"View/Goto/Folder", NULL, N_("F_older..."), "G", NULL, G_CALLBACK(goto_folder_cb) },
+ /* {"View/Goto/---", NULL, "---", NULL, NULL, NULL }, */
+ {"View/Goto/NextPart", NULL, N_("Next part"), "A", NULL, G_CALLBACK(goto_next_part_cb) },
+ {"View/Goto/PrevPart", NULL, N_("Previous part"), "Z", NULL, G_CALLBACK(goto_prev_part_cb) },
+ {"View/Scroll", NULL, N_("Message scroll"), NULL, NULL, NULL },
+ {"View/Scroll/PrevLine", NULL, N_("Previous line"), NULL, NULL, G_CALLBACK(scroll_prev_line_cb) },
+ {"View/Scroll/NextLine", NULL, N_("Next line"), NULL, NULL, G_CALLBACK(scroll_next_line_cb) },
+ {"View/Scroll/PrevPage", NULL, N_("Previous page"), NULL, NULL, G_CALLBACK(scroll_prev_page_cb) },
+ {"View/Scroll/NextPage", NULL, N_("Next page"), NULL, NULL, G_CALLBACK(scroll_next_page_cb) },
+ /* {"View/Scroll/---", NULL, "---", NULL, NULL, NULL }, */
+
+ {"View/Encoding", NULL, N_("Character _encoding"), NULL, NULL, NULL }, /* set_charset_cb */
+ {"View/Encoding/---", NULL, "---", NULL, NULL, NULL },
#define ENC_ACTION(cs_char,c_char,string) \
{ "View/Encoding/" cs_char, NULL, N_(string), NULL, NULL, c_char }
- {"View/Encoding/Western", NULL, N_("Western European") },
- {"View/Encoding/Baltic", NULL, N_("Baltic") },
- {"View/Encoding/Hebrew", NULL, N_("Hebrew") },
- {"View/Encoding/Arabic", NULL, N_("Arabic") },
- {"View/Encoding/Cyrillic", NULL, N_("Cyrillic") },
- {"View/Encoding/Japanese", NULL, N_("Japanese") },
- {"View/Encoding/Chinese", NULL, N_("Chinese") },
- {"View/Encoding/Korean", NULL, N_("Korean") },
- {"View/Encoding/Thai", NULL, N_("Thai") },
+ {"View/Encoding/Western", NULL, N_("Western European"), NULL, NULL, NULL },
+ {"View/Encoding/Baltic", NULL, N_("Baltic"), NULL, NULL, NULL },
+ {"View/Encoding/Hebrew", NULL, N_("Hebrew"), NULL, NULL, NULL },
+ {"View/Encoding/Arabic", NULL, N_("Arabic"), NULL, NULL, NULL },
+ {"View/Encoding/Cyrillic", NULL, N_("Cyrillic"), NULL, NULL, NULL },
+ {"View/Encoding/Japanese", NULL, N_("Japanese"), NULL, NULL, NULL },
+ {"View/Encoding/Chinese", NULL, N_("Chinese"), NULL, NULL, NULL },
+ {"View/Encoding/Korean", NULL, N_("Korean"), NULL, NULL, NULL },
+ {"View/Encoding/Thai", NULL, N_("Thai"), NULL, NULL, NULL },
- {"View/Decode", NULL, N_("Decode") }, /* set_decode_cb */
- {"View/Decode/---", NULL, "---" },
+ {"View/Decode", NULL, N_("Decode"), NULL, NULL, NULL }, /* set_decode_cb */
+ {"View/Decode/---", NULL, "---", NULL, NULL, NULL },
#define DEC_ACTION(cs_type,c_type,string) \
{ "View/Decode/" cs_type, NULL, N_(string), NULL, NULL, c_type }
- {"View/---", NULL, "---", NULL, NULL, NULL },
- {"View/MessageSource", NULL, N_("Mess_age source"), "<control>U", NULL, G_CALLBACK(view_source_cb) },
- {"View/Part", NULL, N_("Message part") },
- {"View/Part/AsText", NULL, N_("View as text"), "T", NULL, G_CALLBACK(view_part_as_text_cb) },
- {"View/Part/Open", NULL, N_("Open"), "L", NULL, G_CALLBACK(open_part_cb) },
+ {"View/---", NULL, "---", NULL, NULL, NULL },
+ {"View/MessageSource", NULL, N_("Mess_age source"), "<control>U", NULL, G_CALLBACK(view_source_cb) },
+ {"View/Part", NULL, N_("Message part"), NULL, NULL, NULL },
+ {"View/Part/AsText", NULL, N_("View as text"), "T", NULL, G_CALLBACK(view_part_as_text_cb) },
+ {"View/Part/Open", NULL, N_("Open"), "L", NULL, G_CALLBACK(open_part_cb) },
#ifndef G_OS_WIN32
- {"View/Part/OpenWith", NULL, N_("Open with..."), "O", NULL, G_CALLBACK(open_part_with_cb) },
+ {"View/Part/OpenWith", NULL, N_("Open with..."), "O", NULL, G_CALLBACK(open_part_with_cb) },
#endif
- {"View/Quotes", NULL, N_("Quotes") },
+ {"View/Quotes", NULL, N_("Quotes"), NULL, NULL, NULL },
/* Message menu */
- {"Message/Compose", NULL, N_("Compose _new message"), "<control>M", NULL, G_CALLBACK(compose_cb) },
- {"Message/---", NULL, "---", NULL, NULL, NULL },
+ {"Message/Compose", NULL, N_("Compose _new message"), "<control>M", NULL, G_CALLBACK(compose_cb) },
+ {"Message/---", NULL, "---", NULL, NULL, NULL },
- {"Message/Reply", NULL, N_("_Reply"), "<control>R", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY */
- {"Message/ReplyTo", NULL, N_("Repl_y to") },
- {"Message/ReplyTo/All", NULL, N_("_All"), "<control><shift>R", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_ALL */
- {"Message/ReplyTo/Sender", NULL, N_("_Sender"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_SENDER */
- {"Message/ReplyTo/List", NULL, N_("Mailing _list"), "<control>L", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_LIST */
- /* {"Message/---", NULL, "---", NULL, NULL, NULL }, */
+ {"Message/Reply", NULL, N_("_Reply"), "<control>R", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY */
+ {"Message/ReplyTo", NULL, N_("Repl_y to"), NULL, NULL, NULL },
+ {"Message/ReplyTo/All", NULL, N_("_All"), "<control><shift>R", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_ALL */
+ {"Message/ReplyTo/Sender", NULL, N_("_Sender"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_SENDER */
+ {"Message/ReplyTo/List", NULL, N_("Mailing _list"), "<control>L", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REPLY_TO_LIST */
+ /* {"Message/---", NULL, "---", NULL, NULL, NULL }, */
- {"Message/Forward", NULL, N_("_Forward"), "<control><alt>F", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_FORWARD_INLINE */
- {"Message/ForwardAtt", NULL, N_("For_ward as attachment"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_FORWARD_AS_ATTACH */
- {"Message/Redirect", NULL, N_("Redirec_t"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REDIRECT */
- {"Message/CheckSignature", NULL, N_("Check signature"), "C", NULL, G_CALLBACK(check_signature_cb) },
+ {"Message/Forward", NULL, N_("_Forward"), "<control><alt>F", NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_FORWARD_INLINE */
+ {"Message/ForwardAtt", NULL, N_("For_ward as attachment"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_FORWARD_AS_ATTACH */
+ {"Message/Redirect", NULL, N_("Redirec_t"), NULL, NULL, G_CALLBACK(reply_cb) }, /* COMPOSE_REDIRECT */
+ {"Message/CheckSignature", NULL, N_("Check signature"), "C", NULL, G_CALLBACK(check_signature_cb) },
/* Tools menu */
- {"Tools/AddressBook", NULL, N_("_Address book"), "<control><shift>A", NULL, G_CALLBACK(addressbook_open_cb) },
- {"Tools/AddSenderToAB", NULL, N_("Add sender to address boo_k"), NULL, NULL, G_CALLBACK(add_address_cb) },
- {"Tools/---", NULL, "---", NULL, NULL, NULL },
-
- {"Tools/CreateFilterRule", NULL, N_("_Create filter rule") },
- {"Tools/CreateFilterRule/Automatically", NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_AUTO */
- {"Tools/CreateFilterRule/ByFrom", NULL, N_("By _From"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_FROM */
- {"Tools/CreateFilterRule/ByTo", NULL, N_("By _To"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_TO */
- {"Tools/CreateFilterRule/BySubject", NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_SUBJECT */
+ {"Tools/AddressBook", NULL, N_("_Address book"), "<control><shift>A", NULL, G_CALLBACK(addressbook_open_cb) },
+ {"Tools/AddSenderToAB", NULL, N_("Add sender to address boo_k"), NULL, NULL, G_CALLBACK(add_address_cb) },
+ {"Tools/---", NULL, "---", NULL, NULL, NULL },
- {"Tools/CreateProcessingRule", NULL, N_("Create processing rule") },
- {"Tools/CreateProcessingRule/Automatically", NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(create_processing_cb) },
- {"Tools/CreateProcessingRule/ByFrom", NULL, N_("By _From"), NULL, NULL, G_CALLBACK(create_processing_cb) },
- {"Tools/CreateProcessingRule/ByTo", NULL, N_("By _To"), NULL, NULL, G_CALLBACK(create_processing_cb) },
- {"Tools/CreateProcessingRule/BySubject", NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(create_processing_cb) },
+ {"Tools/CreateFilterRule", NULL, N_("_Create filter rule"), NULL, NULL, NULL },
+ {"Tools/CreateFilterRule/Automatically", NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_AUTO */
+ {"Tools/CreateFilterRule/ByFrom", NULL, N_("By _From"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_FROM */
+ {"Tools/CreateFilterRule/ByTo", NULL, N_("By _To"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_TO */
+ {"Tools/CreateFilterRule/BySubject", NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(create_filter_cb) }, /* FILTER_BY_SUBJECT */
- /* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */
+ {"Tools/CreateProcessingRule", NULL, N_("Create processing rule"), NULL, NULL, NULL },
+ {"Tools/CreateProcessingRule/Automatically", NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(create_processing_cb) },
+ {"Tools/CreateProcessingRule/ByFrom", NULL, N_("By _From"), NULL, NULL, G_CALLBACK(create_processing_cb) },
+ {"Tools/CreateProcessingRule/ByTo", NULL, N_("By _To"), NULL, NULL, G_CALLBACK(create_processing_cb) },
+ {"Tools/CreateProcessingRule/BySubject", NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(create_processing_cb) },
+ /* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */
- {"Tools/ListUrls", NULL, N_("List _URLs..."), "<control><shift>U", NULL, G_CALLBACK(open_urls_cb) },
+ {"Tools/ListUrls", NULL, N_("List _URLs..."), "<control><shift>U", NULL, G_CALLBACK(open_urls_cb) },
- /* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */
- {"Tools/Actions", NULL, N_("Actio_ns") },
- {"Tools/Actions/PlaceHolder", NULL, "Placeholder", NULL, NULL, G_CALLBACK(messageview_nothing_cb) },
+ /* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */
+ {"Tools/Actions", NULL, N_("Actio_ns"), NULL, NULL, NULL },
+ {"Tools/Actions/PlaceHolder", NULL, "Placeholder", NULL, NULL, G_CALLBACK(messageview_nothing_cb) },
/* Help menu */
- {"Help/About", NULL, N_("_About"), NULL, NULL, G_CALLBACK(about_cb) },
+ {"Help/About", NULL, N_("_About"), NULL, NULL, G_CALLBACK(about_cb) },
};
static GtkToggleActionEntry msgview_toggle_entries[] =
{
- {"View/AllHeaders", NULL, N_("Show all _headers"), "<control>H", NULL, G_CALLBACK(show_all_header_cb) }, /* toggle */
- {"View/Quotes/CollapseAll", NULL, N_("_Collapse all"), "<control><shift>Q", NULL, G_CALLBACK(msg_hide_quotes_cb) }, /* 1 toggle */
- {"View/Quotes/Collapse2", NULL, N_("Collapse from level _2"), NULL, NULL, G_CALLBACK(msg_hide_quotes_cb) }, /* 2 toggle */
- {"View/Quotes/Collapse3", NULL, N_("Collapse from level _3"), NULL, NULL, G_CALLBACK(msg_hide_quotes_cb) }, /* 3 toggle */
+ {"View/AllHeaders", NULL, N_("Show all _headers"), "<control>H", NULL, G_CALLBACK(show_all_header_cb), FALSE }, /* toggle */
+ {"View/Quotes/CollapseAll", NULL, N_("_Collapse all"), "<control><shift>Q", NULL, G_CALLBACK(msg_hide_quotes_cb), FALSE }, /* 1 toggle */
+ {"View/Quotes/Collapse2", NULL, N_("Collapse from level _2"), NULL, NULL, G_CALLBACK(msg_hide_quotes_cb), FALSE }, /* 2 toggle */
+ {"View/Quotes/Collapse3", NULL, N_("Collapse from level _3"), NULL, NULL, G_CALLBACK(msg_hide_quotes_cb), FALSE }, /* 3 toggle */
};
static GtkRadioActionEntry msgview_radio_enc_entries[] =
noticeview_hide(messageview->noticeview);
}
-static void notification_convert_header(gchar *dest, gint len,
+static void notification_convert_header(gchar **dest,
const gchar *src_,
gint header_len)
{
char *src;
cm_return_if_fail(src_ != NULL);
- cm_return_if_fail(dest != NULL);
- if (len < 1) return;
+ if (header_len < 1) {
+ *dest = g_strdup("");
+ return;
+ }
- Xstrndup_a(src, src_, len, return);
+ Xstrndup_a(src, src_, strlen(src_), return);
remove_return(src);
if (is_ascii_str(src)) {
- strncpy2(dest, src, len);
- dest[len - 1] = '\0';
+ *dest = g_strdup(src);
return;
- } else
- conv_encode_header(dest, len, src, header_len, FALSE);
+ } else {
+ *dest = g_malloc(BUFFSIZE);
+ conv_encode_header(*dest, BUFFSIZE, src, header_len, FALSE);
+ }
}
static gint disposition_notification_send(MsgInfo *msginfo)
{
- gchar buf[BUFFSIZE];
+ gchar *buf = NULL;
gchar tmp[MAXPATHLEN + 1];
FILE *fp;
GList *ac_list;
gchar *foo = NULL;
gboolean queued_removed = FALSE;
gchar *boundary = NULL;
+ gchar buf_date[RFC822_DATE_BUFFSIZE];
gchar *date = NULL;
gchar *orig_to = NULL;
gchar *enc_sub = NULL;
else
to = msginfo->extradata->returnreceiptto;
- ok = procheader_get_header_from_msginfo(msginfo, buf, sizeof(buf),
- "Return-Path:");
+ ok = procheader_get_header_from_msginfo(msginfo, &buf, "Return-Path:");
if (ok == 0) {
gchar *to_addr = g_strdup(to);
extract_address(to_addr);
ok = strcasecmp(to_addr, buf);
g_free(to_addr);
} else {
- g_strlcpy(buf, _("<No Return-Path found>"),
- sizeof(buf));
+ buf = g_strdup(_("<No Return-Path found>"));
}
if (ok != 0) {
"It is advised to not send the return receipt."),
to, buf);
val = alertpanel_full(_("Warning"), message,
- _("_Don't Send"), _("_Send"), NULL, FALSE,
- NULL, ALERT_WARNING, G_ALERTDEFAULT);
+ _("_Don't Send"), _("_Send"), NULL, ALERTFOCUS_FIRST, FALSE,
+ NULL, ALERT_WARNING);
g_free(message);
- if (val != G_ALERTALTERNATE)
+ if (val != G_ALERTALTERNATE) {
+ g_free(buf);
return -1;
+ }
}
+ g_free(buf);
+ buf = NULL;
ac_list = account_find_all_from_address(NULL, msginfo->to);
ac_list = account_find_all_from_address(ac_list, msginfo->cc);
if (ac_list == NULL) {
- AlertValue val =
- alertpanel_full(_("Warning"),
- _("This message is asking for a return receipt notification\n"
- "but according to its 'To:' and 'CC:' headers it was not\n"
- "officially addressed to you.\n"
- "It is advised to not send the return receipt."),
- _("_Don't Send"), _("_Send"), NULL, FALSE,
- NULL, ALERT_WARNING, G_ALERTDEFAULT);
- if (val != G_ALERTALTERNATE)
+ ac_list = account_find_all();
+ if ((account = select_account_from_list(ac_list, FALSE)) == NULL)
return -1;
- }
-
- if (g_list_length(ac_list) > 1) {
- if ((account = select_account_from_list(ac_list)) == NULL)
+ } else if (g_list_length(ac_list) > 1) {
+ if ((account = select_account_from_list(ac_list, TRUE)) == NULL)
return -1;
- }
- else if (ac_list != NULL)
+ } else if (ac_list != NULL)
account = (PrefsAccount *) ac_list->data;
g_list_free(ac_list);
g_snprintf(tmp, sizeof(tmp), "%s%ctmpmsg%p",
get_rc_dir(), G_DIR_SEPARATOR, msginfo);
- if ((fp = g_fopen(tmp, "wb")) == NULL) {
- FILE_OP_ERROR(tmp, "fopen");
+ if ((fp = claws_fopen(tmp, "wb")) == NULL) {
+ FILE_OP_ERROR(tmp, "claws_fopen");
return -1;
}
goto FILE_ERROR;
/* Date */
- get_rfc822_date(buf, sizeof(buf));
- if (fprintf(fp, "Date: %s\n", buf) < 0)
+ get_rfc822_date(buf_date, sizeof(buf_date));
+ if (fprintf(fp, "Date: %s\n", buf_date) < 0)
goto FILE_ERROR;
/* From */
if (account->name && *account->name) {
- notification_convert_header
- (buf, sizeof(buf), account->name,
- strlen("From: "));
- if (fprintf(fp, "From: %s <%s>\n", buf, account->address) < 0)
+ notification_convert_header(&buf, account->name, strlen("From: "));
+ if (buf == NULL)
goto FILE_ERROR;
- } else
- if (fprintf(fp, "From: %s\n", account->address) < 0)
+ if (fprintf(fp, "From: %s <%s>\n", buf, account->address) < 0) {
+ g_free(buf);
goto FILE_ERROR;
+ }
+ g_free(buf);
+ buf = NULL;
+ } else
+ goto FILE_ERROR;
if (fprintf(fp, "To: %s\n", to) < 0)
goto FILE_ERROR;
/* Subject */
- notification_convert_header(buf, sizeof(buf), msginfo->subject,
- strlen("Subject: "));
- if (fprintf(fp, "Subject: Disposition notification: %s\n", buf) < 0)
+ notification_convert_header(&buf, msginfo->subject, strlen("Subject: "));
+ if (buf == NULL)
+ goto FILE_ERROR;
+ if (fprintf(fp, "Subject: Disposition notification: %s\n", buf) < 0) {
+ g_free(buf);
goto FILE_ERROR;
+ }
+ g_free(buf);
+ buf = NULL;
/* Message ID */
if (account->gen_msgid) {
}
boundary = generate_mime_boundary("DN");
- get_rfc822_date(buf, sizeof(buf));
- date = g_strdup(buf);
+ date = g_strdup(buf_date);
if (msginfo->to) {
orig_to = g_strdup(msginfo->to);
extract_address(orig_to);
if (ok < 0)
goto FILE_ERROR;
- if (fclose(fp) == EOF) {
- FILE_OP_ERROR(tmp, "fclose");
+ if (claws_safe_fclose(fp) == EOF) {
+ FILE_OP_ERROR(tmp, "claws_fclose");
claws_unlink(tmp);
return -1;
}
return ok;
FILE_ERROR:
- fclose(fp);
+ claws_fclose(fp);
claws_unlink(tmp);
return -1;
}
if (end->prev) {
end->prev->next = NULL;
end->prev = NULL;
- list_free_strings(end);
- g_list_free(end);
+ list_free_strings_full(end);
} else {
- list_free_strings(messageview->trail);
- g_list_free(messageview->trail);
+ list_free_strings_full(messageview->trail);
messageview->trail = NULL;
}
}
messageview->trail = g_list_append(messageview->trail, id);
- messageview->trail_pos = g_list_length(messageview->trail) - 1;
+ messageview->trail_pos = (gint)g_list_length(messageview->trail) - 1;
/* Cut the beginning if needed */
while (messageview->trail_pos > prefs_common.nav_history_length) {
return TRUE;
} else if (!strcasecmp(mimeinfo->subtype, "html")
&& mimeinfo->disposition != DISPOSITIONTYPE_ATTACHMENT
- && (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_ALWAYS
- || (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_DEFAULT
+ && ((msginfo->folder && msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_ALWAYS)
+ || ((msginfo->folder && msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_DEFAULT)
&& prefs_common.promote_html_part))) {
mimeview_select_mimepart_icon(messageview->mimeview, mimeinfo);
return TRUE;
messageview->updating = TRUE;
if (msginfo->size > 1024*1024)
- statuswindow_print_all(_("Fetching message (%s)..."),
+ statusbar_print_all(_("Fetching message (%s)..."),
to_human_readable(msginfo->size));
file = procmsg_get_message_file_path(msginfo);
if (msginfo->size > 1024*1024)
- statuswindow_pop_all();
+ statusbar_pop_all();
if (!file) {
g_warning("can't get message file path.");
g_free(subject);
}
- if (msginfo && msginfo->folder) {
+ if (msginfo->folder) {
msginfo->folder->last_seen = msginfo->msgnum;
}
}
messageview_find_part_depth_first(&context, MIMETYPE_TEXT, "html");
if (context.found &&
- (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_ALWAYS ||
- (msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_DEFAULT &&
+ ((msginfo->folder && msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_ALWAYS) ||
+ ((msginfo->folder && msginfo->folder->prefs->promote_html_part == HTML_PROMOTE_DEFAULT) &&
prefs_common.promote_html_part))) { /* html found */
mimeinfo = context.found;
if (messageview_try_select_mimeinfo(messageview, msginfo, mimeinfo))
g_free(messageview->toolbar);
}
- list_free_strings(messageview->trail);
- g_list_free(messageview->trail);
+ message_search_close(messageview);
+
+ list_free_strings_full(messageview->trail);
msgview_list = g_list_remove(msgview_list, messageview);
if (messageview->window)
return messageview->visible;
}
-static void messageview_save_as(MessageView *messageview)
-{
- gchar *filename = NULL;
- MsgInfo *msginfo;
- gchar *src, *dest, *tmp;
-
- if (!messageview->msginfo) return;
- msginfo = messageview->msginfo;
-
- if (msginfo->subject) {
- Xstrdup_a(filename, msginfo->subject, return);
- subst_for_filename(filename);
- }
- if (filename && !g_utf8_validate(filename, -1, NULL)) {
- gchar *oldstr = filename;
- filename = conv_codeset_strdup(filename,
- conv_get_locale_charset_str(),
- CS_UTF_8);
- if (!filename) {
- g_warning("messageview_save_as(): failed to convert character set.");
- filename = g_strdup(oldstr);
- }
- dest = filesel_select_file_save(_("Save as"), filename);
- g_free(filename);
- } else
- dest = filesel_select_file_save(_("Save as"), filename);
- if (!dest) return;
- if (is_file_exist(dest)) {
- AlertValue aval;
-
- aval = alertpanel(_("Overwrite"),
- _("Overwrite existing file?"),
- GTK_STOCK_CANCEL, GTK_STOCK_OK, NULL);
- if (G_ALERTALTERNATE != aval) return;
- }
-
- src = procmsg_get_message_file(msginfo);
- if (copy_file(src, dest, TRUE) < 0) {
- tmp = g_path_get_basename(dest);
- alertpanel_error(_("Couldn't save the file '%s'."), tmp);
- g_free(tmp);
- }
- g_free(dest);
- g_free(src);
-}
-
static gint messageview_delete_cb(GtkWidget *widget, GdkEventAny *event,
MessageView *messageview)
{
*(gint*)data = combobox_get_active_data(GTK_COMBO_BOX(w));
}
-static PrefsAccount *select_account_from_list(GList *ac_list)
+static PrefsAccount *select_account_from_list(GList *ac_list, gboolean has_accounts)
{
GtkWidget *optmenu;
gint account_id;
+ AlertValue val;
cm_return_val_if_fail(ac_list != NULL, NULL);
cm_return_val_if_fail(ac_list->data != NULL, NULL);
-
+
optmenu = gtkut_account_menu_new(ac_list,
G_CALLBACK(select_account_cb),
&account_id);
if (!optmenu)
return NULL;
account_id = ((PrefsAccount *) ac_list->data)->account_id;
- if (alertpanel_with_widget(
+ if (!has_accounts) {
+ gchar *tr;
+ gchar *text;
+ tr = g_strdup(C_("'%s' stands for 'To' then 'Cc'",
+ "This message is asking for a return receipt notification\n"
+ "but according to its '%s' and '%s' headers it was not\n"
+ "officially addressed to you.\n"
+ "It is advised to not send the return receipt."));
+ text = g_strdup_printf(tr,
+ prefs_common_translated_header_name("To"),
+ prefs_common_translated_header_name("Cc"));
+ val = alertpanel_with_widget(
+ _("Return Receipt Notification"),
+ text,
+ _("_Cancel"), _("_Send Notification"), NULL,
+ ALERTFOCUS_FIRST, FALSE, optmenu);
+ g_free(tr);
+ g_free(text);
+ } else
+ val = alertpanel_with_widget(
_("Return Receipt Notification"),
_("More than one of your accounts uses the "
- "address that this message was sent to.\n"
- "Please choose which account you want to "
- "use for sending the receipt notification:"),
- _("_Cancel"), _("_Send Notification"), NULL,
- FALSE, G_ALERTDEFAULT, optmenu) != G_ALERTALTERNATE)
+ "address that this message was sent to.\n"
+ "Please choose which account you want to "
+ "use for sending the receipt notification:"),
+ _("_Cancel"), _("_Send Notification"), NULL,
+ ALERTFOCUS_FIRST, FALSE, optmenu);
+
+ if (val != G_ALERTALTERNATE)
return NULL;
- return account_find_from_id(account_id);
+ else
+ return account_find_from_id(account_id);
}
/*
static void save_as_cb(GtkAction *action, gpointer data)
{
MessageView *messageview = (MessageView *)data;
- messageview_save_as(messageview);
+ summary_save_as(messageview->mainwin->summaryview);
}
static void print_mimeview(MimeView *mimeview, gint sel_start, gint sel_end, gint partnum)
MessageView *messageview = (MessageView *)data;
FolderItem *to_folder;
- to_folder = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL, FALSE);
+ to_folder = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL, FALSE,
+ _("Select folder to go to"));
if (to_folder) {
folderview_select(messageview->mainwin->folderview, to_folder);