commit a00047c8ca49fe4b9529d03c403a093b438847ac from: Oliver Lowe date: Thu Jan 1 08:38:53 2026 UTC Delete prefs and import/export features Can use something like imapsync. commit - 6f1b42f263b7acd091cfae63c46a15c26e82a721 commit + a00047c8ca49fe4b9529d03c403a093b438847ac blob - 2d29ee5f78448955e7e95fc357c4117142309068 (mode 644) blob + /dev/null --- src/export.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2024 the Claws Mail team and Hiroyuki Yamamoto - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "defs.h" - -#include -#include -#include -#include - -#include "claws.h" -#include "main.h" -#include "inc.h" -#include "mbox.h" -#include "filesel.h" -#include "foldersel.h" -#include "gtkutils.h" -#include "manage_window.h" -#include "folder.h" -#include "utils.h" -#include "codeconv.h" -#include "alertpanel.h" - -static GtkWidget *window; -static GtkWidget *src_entry; -static GtkWidget *file_entry; -static GtkWidget *src_button; -static GtkWidget *file_button; -static GtkWidget *ok_button; -static GtkWidget *cancel_button; -static gboolean export_ok; /* see export_mbox() return values */ - -static void export_create(void); -static void export_ok_cb(GtkWidget *widget, gpointer data); -static void export_cancel_cb(GtkWidget *widget, gpointer data); -static void export_srcsel_cb(GtkWidget *widget, gpointer data); -static void export_filesel_cb(GtkWidget *widget, gpointer data); -static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data); - -gint export_mbox(FolderItem *default_src) -/* return values: -2 skipped/cancelled, -1 error, 0 OK */ -{ - gchar *src_id = NULL; - - export_ok = -2; // skipped or cancelled - - if (!window) { - export_create(); - } - else { - gtk_widget_show(window); - } - - gtk_window_set_modal(GTK_WINDOW(window), TRUE); - change_dir(claws_get_startup_dir()); - - if (default_src && default_src->path) { - src_id = folder_item_get_identifier(default_src); - } - - if (src_id) { - gtk_entry_set_text(GTK_ENTRY(src_entry), src_id); - g_free(src_id); - } else { - gtk_entry_set_text(GTK_ENTRY(src_entry), ""); - } - gtk_entry_set_text(GTK_ENTRY(file_entry), ""); - gtk_widget_grab_focus(file_entry); - - manage_window_set_transient(GTK_WINDOW(window)); - - gtk_main(); - - gtk_widget_hide(window); - gtk_window_set_modal(GTK_WINDOW(window), FALSE); - - return export_ok; -} - -static void export_create(void) -{ - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *desc_label; - GtkWidget *table; - GtkWidget *file_label; - GtkWidget *src_label; - GtkWidget *confirm_area; - - window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "export"); - gtk_window_set_title(GTK_WINDOW(window), _("Export to mbox file")); - gtk_container_set_border_width(GTK_CONTAINER(window), 5); - gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); - gtk_window_set_resizable(GTK_WINDOW(window), TRUE); - gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); - g_signal_connect(G_OBJECT(window), "delete_event", - G_CALLBACK(delete_event), NULL); - MANAGE_WINDOW_SIGNALS_CONNECT(window); - - vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4); - gtk_container_add(GTK_CONTAINER(window), vbox); - - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 4); - - desc_label = gtk_label_new - (_("Locate the folder to export and specify the mbox file.")); - gtk_label_set_line_wrap(GTK_LABEL(desc_label), TRUE); - gtk_box_pack_start(GTK_BOX(hbox), desc_label, FALSE, FALSE, 0); - - table = gtk_grid_new(); - gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(table), 8); - gtk_grid_set_row_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_spacing(GTK_GRID(table), 8); - gtk_widget_set_size_request(table, 420, -1); - - src_label = gtk_label_new(_("Source folder:")); - gtk_label_set_xalign(GTK_LABEL(src_label), 1.0); - gtk_grid_attach(GTK_GRID(table), src_label, 0, 0, 1, 1); - - file_label = gtk_label_new(_("Mbox file:")); - gtk_label_set_xalign(GTK_LABEL(file_label), 1.0); - gtk_grid_attach(GTK_GRID(table), file_label, 0, 1, 1, 1); - - src_entry = gtk_entry_new(); - gtk_grid_attach(GTK_GRID(table), src_entry, 1, 0, 1, 1); - gtk_widget_set_hexpand(src_entry, TRUE); - gtk_widget_set_halign(src_entry, GTK_ALIGN_FILL); - - file_entry = gtk_entry_new(); - gtk_entry_set_activates_default(GTK_ENTRY(file_entry), TRUE); - gtk_grid_attach(GTK_GRID(table), file_entry, 1, 1, 1, 1); - gtk_widget_set_hexpand(file_entry, TRUE); - gtk_widget_set_halign(file_entry, GTK_ALIGN_FILL); - - src_button = gtkut_get_browse_directory_btn(_("_Browse")); - gtk_grid_attach(GTK_GRID(table), src_button, 2, 0, 1, 1); - - g_signal_connect(G_OBJECT(src_button), "clicked", - G_CALLBACK(export_srcsel_cb), NULL); - - file_button = gtkut_get_browse_file_btn(_("B_rowse")); - gtk_grid_attach(GTK_GRID(table), file_button, 2, 1, 1, 1); - - g_signal_connect(G_OBJECT(file_button), "clicked", - G_CALLBACK(export_filesel_cb), NULL); - - gtkut_stock_button_set_create(&confirm_area, - &cancel_button, NULL, _("_Cancel"), - &ok_button, NULL, _("_OK"), - NULL, NULL, NULL); - gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0); - gtk_widget_grab_default(ok_button); - - g_signal_connect(G_OBJECT(ok_button), "clicked", - G_CALLBACK(export_ok_cb), NULL); - g_signal_connect(G_OBJECT(cancel_button), "clicked", - G_CALLBACK(export_cancel_cb), NULL); - - gtk_widget_show_all(window); -} - -static void export_ok_cb(GtkWidget *widget, gpointer data) -{ - const gchar *srcdir, *utf8mbox; - FolderItem *src; - gchar *mbox; - - srcdir = gtk_entry_get_text(GTK_ENTRY(src_entry)); - utf8mbox = gtk_entry_get_text(GTK_ENTRY(file_entry)); - - if (!utf8mbox || !*utf8mbox) { - alertpanel_error(_("Mbox file can't be left empty.")); - gtk_widget_grab_focus(file_entry); - return; - } - if (!srcdir || !*srcdir) { - alertpanel_error(_("Source folder can't be left empty.")); - gtk_widget_grab_focus(src_entry); - return; - } - - mbox = g_filename_from_utf8(utf8mbox, -1, NULL, NULL, NULL); - if (!mbox) { - g_warning("export_ok_cb(): failed to convert character set"); - mbox = g_strdup(utf8mbox); - } - - src = folder_find_item_from_identifier(srcdir); - if (!src) { - alertpanel_error(_("Couldn't find the source folder.")); - gtk_widget_grab_focus(src_entry); - g_free(mbox); - return; - } else { - export_ok = export_to_mbox(src, mbox); - } - - g_free(mbox); - - if (gtk_main_level() > 1) - gtk_main_quit(); -} - -static void export_cancel_cb(GtkWidget *widget, gpointer data) -{ - if (gtk_main_level() > 1) - gtk_main_quit(); -} - -static void export_filesel_cb(GtkWidget *widget, gpointer data) -{ - gchar *filename; - - filename = filesel_select_file_save(_("Select exporting file"), NULL); - if (!filename) return; - - if (g_getenv ("G_BROKEN_FILENAMES")) { - const gchar *oldstr = filename; - filename = conv_codeset_strdup (filename, - conv_get_locale_charset_str(), - CS_UTF_8); - if (!filename) { - g_warning("export_filesel_cb(): failed to convert character set"); - filename = g_strdup(oldstr); - } - gtk_entry_set_text(GTK_ENTRY(file_entry), filename); - g_free(filename); - } else - gtk_entry_set_text(GTK_ENTRY(file_entry), filename); -} - -static void export_srcsel_cb(GtkWidget *widget, gpointer data) -{ - FolderItem *src; - - src = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL, FALSE, - _("Select folder to export")); - if (src && src->path) - gtk_entry_set_text(GTK_ENTRY(src_entry), src->path); -} - -static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data) -{ - export_cancel_cb(NULL, NULL); - return TRUE; -} blob - c56ef212b7afa75b74470fbb24d2c154a1dea014 (mode 644) blob + /dev/null --- src/export.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#ifndef __EXPORT_H__ -#define __EXPORT_H__ - -#include - -#include "folder.h" - -gint export_mbox(FolderItem *default_src); - -#endif /* __EXPORT_H__ */ blob - 5b807c82b3cb5c7e37fa5144cbdcabe11a348d0b blob + ff8056081e163f6a672f4900d0f8b677bb65f741 --- src/folderview.c +++ src/folderview.c @@ -2471,7 +2471,6 @@ static void folderview_startup_folder_cb(GtkAction *ac item = folderview_get_selected_item(folderview); - prefs_common.goto_last_folder_on_startup = FALSE; prefs_common.startup_folder = folder_item_get_identifier(item); prefs_common.goto_folder_on_startup = prefs_common.startup_folder? TRUE : FALSE; } blob - 7bcd5382abb660b0ed07e823c16fc3f34b452241 blob + 24b8ec400f59cba75f149aad556ced44672ce505 --- src/imap.c +++ src/imap.c @@ -976,15 +976,9 @@ static gint imap_auth(IMAPSession *session, const gcha "account preferences."); } if (time(NULL) - last_login_err > 10) { - if (prefs_common.show_recv_err_dialog) { - alertpanel_error_log(_("Connection to %s failed: " - "login refused.%s"), - server, ext_info); - } else { - log_error(LOG_PROTOCOL, _("Connection to %s failed: " - "login refused.%s\n"), - server, ext_info); - } + char msg[BUFSIZ]; + snprintf(msg, sizeof(msg), "login to %s: login refused: %s", server, ext_info); + alertpanel_error_log("%s", msg); } last_login_err = time(NULL); } @@ -1182,14 +1176,7 @@ static IMAPSession *imap_session_new(Folder * folder, else imap_handle_error(NULL, account->recv_server, r); - if(prefs_common.show_recv_err_dialog) { - alertpanel_error_log(_("Can't connect to IMAP server: %s:%d"), - account->recv_server, port); - } else { - log_error(LOG_PROTOCOL, _("Can't connect to IMAP server: %s:%d\n"), - account->recv_server, port); - } - + alertpanel_error_log("Cannot connect to IMAP server: %s:%d", account->recv_server, port); return NULL; } @@ -1282,11 +1269,7 @@ try_again: } goto try_again; } else { - if (!prefs_common.show_recv_err_dialog) { - log_error(LOG_PROTOCOL, _("Couldn't login to IMAP server %s.\n"), account->recv_server); - mainwindow_show_error(); - } else - alertpanel_error_log(_("Couldn't login to IMAP server %s."), account->recv_server); + alertpanel_error_log("Cannot login to IMAP server %s", account->recv_server); } if (acc_pass != NULL) { blob - d0ebe04cef5b4b3bceeeea6885648894f810f7bd (mode 644) blob + /dev/null --- src/import.c +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2024 the Claws Mail team and Hiroyuki Yamamoto - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "defs.h" - -#include -#include -#include -#include - -#include "claws.h" -#include "main.h" -#include "inc.h" -#include "mbox.h" -#include "folderview.h" -#include "filesel.h" -#include "foldersel.h" -#include "gtkutils.h" -#include "manage_window.h" -#include "folder.h" -#include "codeconv.h" -#include "alertpanel.h" - -static GtkWidget *window; -static GtkWidget *file_entry; -static GtkWidget *dest_entry; -static GtkWidget *file_button; -static GtkWidget *dest_button; -static GtkWidget *ok_button; -static GtkWidget *cancel_button; -static gboolean import_ok; /* see import_mbox() return values */ - -static void import_create(void); -static void import_ok_cb(GtkWidget *widget, gpointer data); -static void import_cancel_cb(GtkWidget *widget, gpointer data); -static void import_filesel_cb(GtkWidget *widget, gpointer data); -static void import_destsel_cb(GtkWidget *widget, gpointer data); -static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data); - -gint import_mbox(FolderItem *default_dest, const gchar* mbox_file) -/* return values: -2 skipped/cancelled, -1 error, 0 OK */ -{ - gchar *dest_id = NULL; - - import_ok = -2; // skipped or cancelled - - if (!window) { - import_create(); - } - else { - gtk_widget_show(window); - } - - gtk_window_set_modal(GTK_WINDOW(window), TRUE); - change_dir(claws_get_startup_dir()); - - if (default_dest && default_dest->path) { - dest_id = folder_item_get_identifier(default_dest); - } - - if (dest_id) { - gtk_entry_set_text(GTK_ENTRY(dest_entry), dest_id); - g_free(dest_id); - } else { - gtk_entry_set_text(GTK_ENTRY(dest_entry), ""); - } - if (mbox_file) - gtk_entry_set_text(GTK_ENTRY(file_entry), mbox_file); - else - gtk_entry_set_text(GTK_ENTRY(file_entry), ""); - gtk_widget_grab_focus(file_entry); - - manage_window_set_transient(GTK_WINDOW(window)); - - gtk_main(); - - gtk_widget_hide(window); - gtk_window_set_modal(GTK_WINDOW(window), FALSE); - - return import_ok; -} - -static void import_create(void) -{ - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *desc_label; - GtkWidget *table; - GtkWidget *file_label; - GtkWidget *dest_label; - GtkWidget *confirm_area; - - window = gtkut_window_new(GTK_WINDOW_TOPLEVEL, "import"); - gtk_window_set_title(GTK_WINDOW(window), _("Import mbox file")); - gtk_window_set_modal(GTK_WINDOW(window), TRUE); - gtk_container_set_border_width(GTK_CONTAINER(window), 5); - gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); - gtk_window_set_resizable(GTK_WINDOW(window), TRUE); - gtk_window_set_type_hint(GTK_WINDOW(window), GDK_WINDOW_TYPE_HINT_DIALOG); - g_signal_connect(G_OBJECT(window), "delete_event", - G_CALLBACK(delete_event), NULL); - MANAGE_WINDOW_SIGNALS_CONNECT(window); - - vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4); - gtk_container_add(GTK_CONTAINER(window), vbox); - - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(hbox), 4); - - desc_label = gtk_label_new - (_("Locate the mbox file and specify the destination folder.")); - gtk_label_set_line_wrap(GTK_LABEL(desc_label), TRUE); - gtk_box_pack_start(GTK_BOX(hbox), desc_label, FALSE, FALSE, 0); - - table = gtk_grid_new(); - gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); - gtk_container_set_border_width(GTK_CONTAINER(table), 8); - gtk_grid_set_row_spacing(GTK_GRID(table), 8); - gtk_grid_set_column_spacing(GTK_GRID(table), 8); - gtk_widget_set_size_request(table, 420, -1); - - file_label = gtk_label_new(_("Mbox file:")); - gtk_label_set_xalign(GTK_LABEL(file_label), 1.0); - gtk_grid_attach(GTK_GRID(table), file_label, 0, 0, 1, 1); - - dest_label = gtk_label_new(_("Destination folder:")); - gtk_label_set_xalign(GTK_LABEL(dest_label), 1.0); - gtk_grid_attach(GTK_GRID(table), dest_label, 0, 1, 1, 1); - - file_entry = gtk_entry_new(); - gtk_grid_attach(GTK_GRID(table), file_entry, 1, 0, 1, 1); - gtk_widget_set_hexpand(file_entry, TRUE); - gtk_widget_set_halign(file_entry, GTK_ALIGN_FILL); - - dest_entry = gtk_entry_new(); - gtk_grid_attach(GTK_GRID(table), dest_entry, 1, 1, 1, 1); - gtk_widget_set_hexpand(dest_entry, TRUE); - gtk_widget_set_halign(dest_entry, GTK_ALIGN_FILL); - - file_button = gtkut_get_browse_file_btn(_("_Browse")); - gtk_grid_attach(GTK_GRID(table), file_button, 2, 0, 1, 1); - - g_signal_connect(G_OBJECT(file_button), "clicked", - G_CALLBACK(import_filesel_cb), NULL); - - dest_button = gtkut_get_browse_directory_btn(_("B_rowse")); - gtk_grid_attach(GTK_GRID(table), dest_button, 2, 1, 1, 1); - - g_signal_connect(G_OBJECT(dest_button), "clicked", - G_CALLBACK(import_destsel_cb), NULL); - - gtkut_stock_button_set_create(&confirm_area, - &cancel_button, NULL, _("_Cancel"), - &ok_button, NULL, _("_OK"), - NULL, NULL, NULL); - gtk_box_pack_end(GTK_BOX(vbox), confirm_area, FALSE, FALSE, 0); - gtk_widget_grab_default(ok_button); - - g_signal_connect(G_OBJECT(ok_button), "clicked", - G_CALLBACK(import_ok_cb), NULL); - g_signal_connect(G_OBJECT(cancel_button), "clicked", - G_CALLBACK(import_cancel_cb), NULL); - - gtk_widget_show_all(window); -} - -static void import_ok_cb(GtkWidget *widget, gpointer data) -{ - GtkWidget *window; - const gchar *utf8mbox, *destdir; - FolderItem *dest; - gchar *mbox; - - utf8mbox = gtk_entry_get_text(GTK_ENTRY(file_entry)); - destdir = gtk_entry_get_text(GTK_ENTRY(dest_entry)); - - cm_return_if_fail(utf8mbox); - cm_return_if_fail(destdir); - - if (!*utf8mbox) { - alertpanel_error(_("Mbox file can't be left empty.")); - gtk_widget_grab_focus(file_entry); - return; - } - if (!*destdir) { - alertpanel_error(_("Destination folder can't be left empty.")); - gtk_widget_grab_focus(dest_entry); - return; - } - - mbox = g_filename_from_utf8(utf8mbox, -1, NULL, NULL, NULL); - if (!mbox) { - g_warning("import_ok_cb(): failed to convert character set"); - mbox = g_strdup(utf8mbox); - } - - dest = folder_find_item_from_identifier(destdir); - - if (!dest) { - alertpanel_error(_("Can't find the destination folder.")); - gtk_widget_grab_focus(dest_entry); - g_free(mbox); - return; - } else { - window = label_window_create(_("Importing mbox file...")); - import_ok = proc_mbox(dest, mbox, NULL); - label_window_destroy(window); - } - - g_free(mbox); - - if (gtk_main_level() > 0) - gtk_main_quit(); -} - -static void import_cancel_cb(GtkWidget *widget, gpointer data) -{ - if (gtk_main_level() > 0) - gtk_main_quit(); -} - -static void import_filesel_cb(GtkWidget *widget, gpointer data) -{ - gchar *filename; - gchar *utf8_filename; - - filename = filesel_select_file_open(_("Select importing file"), NULL); - if (!filename) return; - - utf8_filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); - if (!utf8_filename) { - g_warning("import_filesel_cb(): failed to convert character set"); - utf8_filename = g_strdup(filename); - } - gtk_entry_set_text(GTK_ENTRY(file_entry), utf8_filename); - g_free(utf8_filename); -} - -static void import_destsel_cb(GtkWidget *widget, gpointer data) -{ - FolderItem *dest; - gchar *path; - - dest = foldersel_folder_sel(NULL, FOLDER_SEL_COPY, NULL, FALSE, - _("Select folder to import to")); - if (!dest) - return; - path = folder_item_get_identifier(dest); - gtk_entry_set_text(GTK_ENTRY(dest_entry), path); - g_free(path); -} - -static gint delete_event(GtkWidget *widget, GdkEventAny *event, gpointer data) -{ - import_cancel_cb(NULL, NULL); - return TRUE; -} blob - 33eb733c8664e9a8db874dfcabbc71ca4d7a183b (mode 644) blob + /dev/null --- src/import.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Claws Mail -- a GTK based, lightweight, and fast e-mail client - * Copyright (C) 1999-2024 Hiroyuki Yamamoto and the Claws Mail team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef __IMPORT_H__ -#define __IMPORT_H__ - -#include - -#include "folder.h" - -gint import_mbox(FolderItem *default_dest, const gchar* mbox_file); - -#endif /* __IMPORT_H__ */ blob - a7c869026a6666c82ab8a9c55a7f50e720ff43a9 blob + 549f2e7a1059c7c2df696cf53f672176caf30cc0 --- src/inc.c +++ src/inc.c @@ -417,13 +417,6 @@ static IncProgressDialog *inc_progress_dialog_create(g gtk_widget_set_size_request(progress->window, prefs_common.receivewin_width, prefs_common.receivewin_height); - if (prefs_common.recv_dialog_mode == RECV_DIALOG_ALWAYS || - (prefs_common.recv_dialog_mode == RECV_DIALOG_MANUAL && - !autocheck)) { - dialog->show_dialog = TRUE; - gtk_widget_show_now(progress->window); - } - dialog->dialog = progress; dialog->progress_tv = g_date_time_new_now_local(); dialog->folder_tv = g_date_time_new_now_local(); @@ -644,14 +637,6 @@ static gint inc_start(IncProgressDialog *inc_dialog) break; } - if (pop3_session->error_val == PS_AUTHFAIL) { - if(prefs_common.show_recv_err_dialog) { - if((prefs_common.recv_dialog_mode == RECV_DIALOG_ALWAYS) || - ((prefs_common.recv_dialog_mode == RECV_DIALOG_MANUAL) && focus_window)) - manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL); - } - } - /* CLAWS: perform filtering actions on dropped message */ /* CLAWS: get default inbox (perhaps per account) */ if (pop3_session->ac_prefs->inbox) { @@ -710,16 +695,7 @@ static gint inc_start(IncProgressDialog *inc_dialog) inc_session_destroy(session); inc_dialog->queue_list = g_list_remove(inc_dialog->queue_list, session); } - - if (prefs_common.close_recv_dialog || !inc_dialog->show_dialog) { - inc_progress_dialog_destroy(inc_dialog); - } else { - gtk_window_set_title(GTK_WINDOW(inc_dialog->dialog->window), fin_msg); - gtk_button_set_label(GTK_BUTTON(inc_dialog->dialog->cancel_btn), "_Close"); - gtk_button_set_image(GTK_BUTTON(inc_dialog->dialog->cancel_btn), - gtk_image_new_from_icon_name("window-close-symbolic", GTK_ICON_SIZE_BUTTON)); - } - + inc_progress_dialog_destroy(inc_dialog); return new_msgs; } @@ -766,18 +742,11 @@ static IncState inc_pop3_session_do(IncSession *sessio prefs_common.io_timeout_secs * 1000); if (session_connect(SESSION(pop3_session), server, port) < 0) { - if(prefs_common.show_recv_err_dialog) { - if((prefs_common.recv_dialog_mode == RECV_DIALOG_ALWAYS) || - ((prefs_common.recv_dialog_mode == RECV_DIALOG_MANUAL) && focus_window)) { - manage_window_focus_in(inc_dialog->dialog->window, NULL, NULL); - } - alertpanel_error(_("Can't connect to POP3 server: %s:%d"), - server, port); - manage_window_focus_out(inc_dialog->dialog->window, NULL, NULL); - } else { - log_error(LOG_PROTOCOL, _("Can't connect to POP3 server: %s:%d\n"), - server, port); - } + char msg[BUFSIZ]; + snprintf(msg, sizeof(msg), "Cannot connect to POP3 server at %s:%d", server, port); + alertpanel_error(msg); + manage_window_focus_out(inc_dialog->dialog->window, NULL, NULL); + log_error(LOG_PROTOCOL, msg); session->inc_state = INC_CONNECT_ERROR; statusbar_pop_all(); return INC_CONNECT_ERROR; @@ -1066,8 +1035,6 @@ static void inc_put_error(IncState istate, Pop3Session switch (istate) { case INC_CONNECT_ERROR: fatal_error = TRUE; - if (!prefs_common.show_recv_err_dialog) - break; err_msg = g_strdup_printf(_("Connection to %s:%d failed."), SESSION(session)->server, SESSION(session)->port); @@ -1075,8 +1042,6 @@ static void inc_put_error(IncState istate, Pop3Session case INC_ERROR: log_msg = _("Error occurred while processing mail."); fatal_error = TRUE; - if (!prefs_common.show_recv_err_dialog) - break; if (session->error_msg) err_msg = g_strdup_printf (_("Error occurred while processing mail:\n%s"), @@ -1096,24 +1061,18 @@ static void inc_put_error(IncState istate, Pop3Session break; case INC_SOCKET_ERROR: log_msg = _("Socket error."); - if (!prefs_common.show_recv_err_dialog) - break; err_msg = g_strdup_printf(_("Socket error on connection to %s:%d."), SESSION(session)->server, SESSION(session)->port); break; case INC_EOF: log_msg = _("Connection closed by the remote host."); - if (!prefs_common.show_recv_err_dialog) - break; err_msg = g_strdup_printf(_("Connection to %s:%d closed by the remote host."), SESSION(session)->server, SESSION(session)->port); break; case INC_LOCKED: log_msg = _("Mailbox is locked."); - if (!prefs_common.show_recv_err_dialog) - break; if (session->error_msg) err_msg = g_strdup_printf(_("Mailbox is locked:\n%s"), session->error_msg); @@ -1123,8 +1082,6 @@ static void inc_put_error(IncState istate, Pop3Session case INC_AUTH_FAILED: log_msg = _("Authentication failed."); fatal_error = TRUE; - if (!prefs_common.show_recv_err_dialog) - break; if (session->error_msg) err_msg = g_strdup_printf (_("Authentication failed:\n%s"), session->error_msg); @@ -1135,8 +1092,6 @@ static void inc_put_error(IncState istate, Pop3Session log_msg = _("Session timed out. You may be able to " "recover by increasing the timeout value in " "Preferences/Other/Miscellaneous."); - if (!prefs_common.show_recv_err_dialog) - break; err_msg = g_strdup_printf(_("Connection to %s:%d timed out."), SESSION(session)->server, SESSION(session)->port); @@ -1151,8 +1106,6 @@ static void inc_put_error(IncState istate, Pop3Session else log_warning(LOG_PROTOCOL, "%s\n", log_msg); } - if (!prefs_common.show_recv_err_dialog && fatal_error) - mainwindow_show_error(); if (err_msg) { alertpanel_error_log("%s", err_msg); blob - 950fd90232125bb635d5095dece6d78d0998b856 blob + 9e20c709981d8cc970ba99f5fb3345eb49703e07 --- src/main.c +++ src/main.c @@ -59,7 +59,6 @@ #include "inc.h" #include "imap.h" #include "send_message.h" -#include "import.h" #include "manage_window.h" #include "alertpanel.h" #include "statusbar.h" @@ -124,7 +123,6 @@ static struct RemoteCmd { const gchar *target; gboolean debug; const gchar *geometry; - const gchar *import_mbox; } cmd; static void parse_cmd_opt(int argc, char *argv[]); @@ -511,16 +509,9 @@ int main(int argc, char *argv[]) folderview_thaw(mainwin->folderview); main_window_cursor_normal(mainwin); - if (cmd.import_mbox) { - mainwindow_import_mbox(cmd.import_mbox); - } - if (!cmd.target && prefs_common.goto_folder_on_startup && folder_find_item_from_identifier(prefs_common.startup_folder) != NULL) { cmd.target = prefs_common.startup_folder; - } else if (!cmd.target && prefs_common.goto_last_folder_on_startup && - folder_find_item_from_identifier(prefs_common.last_opened_folder) != NULL) { - cmd.target = prefs_common.last_opened_folder; } if (cmd.receive_all && !cmd.target) { @@ -602,11 +593,6 @@ static void exit_claws(MainWindow *mainwin) if((item = folderview_get_opened_item(mainwin->folderview)) != NULL) { summary_save_prefs_to_folderitem( mainwin->summaryview, item); - if (prefs_common.last_opened_folder != NULL) - g_free(prefs_common.last_opened_folder); - prefs_common.last_opened_folder = - !prefs_common.goto_last_folder_on_startup ? NULL : - folder_item_get_identifier(item); } /* save all state before exiting */ @@ -933,7 +919,6 @@ static void parse_cmd_opt(int argc, char *argv[]) " show the status of each folder")); g_print("%s\n", _(" --select folder[/msg] jump to the specified folder/message\n" " folder is a folder id like 'folder/subfolder', a file:// uri or an absolute path")); - g_print("%s\n", _(" --import-mbox file import the specified mbox file\n")); g_print("%s\n", _(" --online switch to online mode")); g_print("%s\n", _(" --offline switch to offline mode")); g_print("%s\n", _(" --exit --quit -q exit Claws Mail")); @@ -975,13 +960,6 @@ static void parse_cmd_opt(int argc, char *argv[]) } else { parse_cmd_opt_error(_("Missing folder argument for option %s"), argv[i]); } - } else if (!strcmp(argv[i], "--import-mbox")) { - if (i+1 < argc) { - cmd.import_mbox = argv[i+1]; - i++; - } else { - parse_cmd_opt_error(_("Missing file argument for option %s"), argv[i]); - } } else if (i == 1 && argc == 2) { /* only one parameter. Do something intelligent about it */ if ((strstr(argv[i], "@") || !STRNCMP(argv[i], "mailto:")) && !strstr(argv[i], "://")) { @@ -1283,10 +1261,6 @@ static gint prohibit_duplicate_launch(int *argc, char gchar *str = g_strdup_printf("select %s\n", cmd.target); CM_FD_WRITE_ALL(str); g_free(str); - } else if (cmd.import_mbox) { - gchar *str = g_strdup_printf("import %s\n", cmd.import_mbox); - CM_FD_WRITE_ALL(str); - g_free(str); } else if (cmd.search) { gchar buf[BUFFSIZE]; gchar *str = @@ -1469,9 +1443,6 @@ static void lock_socket_input_cb(gpointer data, } else if (!STRNCMP(buf, "select ")) { const gchar *target = buf+7; mainwindow_jump_to(target, TRUE); - } else if (!STRNCMP(buf, "import ")) { - const gchar *mbox_file = buf + 7; - mainwindow_import_mbox(mbox_file); } else if (!STRNCMP(buf, "exit")) { app_will_exit(NULL, mainwin); } blob - f648114613c5b64dfeecabdb2836029d4e817f58 blob + 79b008002735b0346ecbfce17d9173fbcbdf1a73 --- src/mainwindow.c +++ src/mainwindow.c @@ -41,8 +41,6 @@ #include "log.h" #include "compose.h" #include "procmsg.h" -#include "import.h" -#include "export.h" #include "password.h" #include "prefs_common.h" #include "prefs_actions.h" @@ -123,12 +121,6 @@ static void add_mailbox_cb (GtkAction *action, gpointer data); static void foldersort_cb (GtkAction *action, gpointer data); -static void import_mbox_cb (GtkAction *action, - gpointer data); -static void export_mbox_cb (GtkAction *action, - gpointer data); -static void export_list_mbox_cb (GtkAction *action, - gpointer data); static void empty_trash_cb (GtkAction *action, gpointer data); static void save_as_cb (GtkAction *action, @@ -433,11 +425,6 @@ static GtkActionEntry mainwin_entries[] = {"File/SortMailboxes", NULL, N_("Change mailbox order..."), NULL, NULL, G_CALLBACK(foldersort_cb) }, - /* {"File/---", NULL, "---", NULL, NULL, NULL }, */ - {"File/ImportMbox", NULL, N_("_Import mbox file..."), NULL, NULL, G_CALLBACK(import_mbox_cb) }, - {"File/ExportMbox", NULL, N_("_Export to mbox file..."), NULL, NULL, G_CALLBACK(export_mbox_cb) }, - {"File/ExportSelMbox", NULL, N_("_Export selected to mbox file..."), NULL, NULL, G_CALLBACK(export_list_mbox_cb) }, - /* {"File/---", NULL, "---", NULL, NULL, NULL }, */ {"File/EmptyTrashes", NULL, N_("Empty all _Trash folders"), "D", NULL, G_CALLBACK(empty_trash_cb) }, /* {"File/---", NULL, "---", NULL, NULL, NULL }, */ @@ -959,10 +946,6 @@ MainWindow *main_window_create() MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File/AddMailbox", "MH", "File/AddMailbox/MH", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "Separator1", "File/---", GTK_UI_MANAGER_SEPARATOR) MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "SortMailboxes", "File/SortMailboxes", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "Separator2", "File/---", GTK_UI_MANAGER_SEPARATOR) - MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "ImportMbox", "File/ImportMbox", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "ExportMbox", "File/ExportMbox", GTK_UI_MANAGER_MENUITEM) - MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "ExportSelMbox", "File/ExportSelMbox", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "Separator3", "File/---", GTK_UI_MANAGER_SEPARATOR) MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "EmptyTrashes", "File/EmptyTrashes", GTK_UI_MANAGER_MENUITEM) MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/File", "Separator4", "File/---", GTK_UI_MANAGER_SEPARATOR) @@ -2967,33 +2950,6 @@ static void foldersort_cb(GtkAction *action, gpointer foldersort_open(); } -static void import_mbox_cb(GtkAction *action, gpointer data) -{ - MainWindow *mainwin = (MainWindow *)data; - /* only notify if import has failed */ - if (import_mbox(mainwin->summaryview->folder_item, NULL) == -1) { - alertpanel_error(_("Mbox import has failed.")); - } -} - -static void export_mbox_cb(GtkAction *action, gpointer data) -{ - MainWindow *mainwin = (MainWindow *)data; - /* only notify if export has failed */ - if (export_mbox(mainwin->summaryview->folder_item) == -1) { - alertpanel_error(_("Export to mbox has failed.")); - } -} - -static void export_list_mbox_cb(GtkAction *action, gpointer data) -{ - MainWindow *mainwin = (MainWindow *)data; - /* only notify if export has failed */ - if (summaryview_export_mbox_list(mainwin->summaryview) == -1) { - alertpanel_error(_("Export to mbox has failed.")); - } -} - static void empty_trash_cb(GtkAction *action, gpointer data) { MainWindow *mainwin = (MainWindow *)data; @@ -4165,14 +4121,3 @@ static void goto_prev_part_cb(GtkAction *action, gpoin && mainwin->messageview->mimeview) mimeview_select_prev_part(mainwin->messageview->mimeview); } - -void mainwindow_import_mbox(const gchar* mbox_file) -{ - MainWindow *mainwin = mainwindow_get_mainwindow(); - - strcrlftrunc((gchar *) mbox_file); - /* only notify if import has failed */ - if (import_mbox(mainwin->summaryview->folder_item, mbox_file) == -1) { - alertpanel_error(_("Mbox import has failed.")); - } -} blob - b97f118e9a897827e685b6f7850ea821c3427594 blob + 3f05add1efc094af4e57289cf7ff33fcecffd948 --- src/mbox.c +++ src/mbox.c @@ -266,141 +266,3 @@ int copy_mbox(gint srcfd, const gchar *dest) { } return fclose(dest_fp); } - -gint export_list_to_mbox(GSList *mlist, const gchar *mbox) -/* return values: -2 skipped, -1 error, 0 OK */ -{ - GSList *cur; - MsgInfo *msginfo; - FILE *msg_fp; - FILE *mbox_fp; - gchar buf[BUFFSIZE]; - int err = 0; - - gint msgs = 1, total = g_slist_length(mlist); - if (g_file_test(mbox, G_FILE_TEST_EXISTS) == TRUE) { - if (alertpanel_full(_("Overwrite mbox file"), - _("This file already exists. Do you want to overwrite it?"), - NULL, _("_Cancel"), NULL, _("Overwrite"), NULL, NULL, - ALERTFOCUS_FIRST, FALSE, NULL, ALERT_WARNING) - != G_ALERTALTERNATE) { - return -2; - } - } - - if ((mbox_fp = g_fopen(mbox, "wb")) == NULL) { - FILE_OP_ERROR(mbox, "g_fopen"); - alertpanel_error(_("Could not create mbox file:\n%s\n"), mbox); - return -1; - } - - statusbar_print_all(_("Exporting to mbox...")); - for (cur = mlist; cur != NULL; cur = cur->next) { - int len; - gchar buft[BUFFSIZE]; - msginfo = (MsgInfo *)cur->data; - - msg_fp = procmsg_open_message(msginfo, TRUE); - if (!msg_fp) { - continue; - } - - strncpy2(buf, - msginfo->from ? msginfo->from : - cur_account && cur_account->address ? - cur_account->address : "unknown", - sizeof(buf)); - extract_address(buf); - - if (fprintf(mbox_fp, "From %s %s", - buf, ctime_r(&msginfo->date_t, buft)) < 0) { - err = -1; - fclose(msg_fp); - goto out; - } - - buf[0] = '\0'; - - /* write email to mboxrc */ - while (fgets(buf, sizeof(buf), msg_fp) != NULL) { - /* quote any From, >From, >>From, etc., according to mbox format specs */ - int offset; - - offset = 0; - /* detect leading '>' char(s) */ - while (buf[offset] == '>') { - offset++; - } - if (!strncmp(buf+offset, "From ", 5)) { - if (fputc('>', mbox_fp) == EOF) { - err = -1; - fclose(msg_fp); - goto out; - } - } - if (fputs(buf, mbox_fp) == EOF) { - err = -1; - fclose(msg_fp); - goto out; - } - } - - /* force last line to end w/ a newline */ - len = strlen(buf); - if (len > 0) { - len--; - if ((buf[len] != '\n') && (buf[len] != '\r')) { - if (fputc('\n', mbox_fp) == EOF) { - err = -1; - fclose(msg_fp); - goto out; - } - } - } - - /* add a trailing empty line */ - if (fputc('\n', mbox_fp) == EOF) { - err = -1; - fclose(msg_fp); - goto out; - } - - fclose(msg_fp); - statusbar_progress_all(msgs++,total, 500); - if (msgs%500 == 0) - GTK_EVENTS_FLUSH(); - } - -out: - statusbar_progress_all(0,0,0); - statusbar_pop_all(); - - fclose(mbox_fp); - - return err; -} - -/* read all messages in SRC, and store them into one MBOX file. */ -/* return values: -2 skipped, -1 error, 0 OK */ -gint export_to_mbox(FolderItem *src, const gchar *mbox) -{ - GSList *mlist; - gint ret; - - cm_return_val_if_fail(src != NULL, -1); - cm_return_val_if_fail(src->folder != NULL, -1); - cm_return_val_if_fail(mbox != NULL, -1); - - debug_print("Exporting messages from %s into %s...\n", - src->path, mbox); - - mlist = folder_item_get_msg_list(src); - - folder_item_update_freeze(); - ret = export_list_to_mbox(mlist, mbox); - folder_item_update_thaw(); - - procmsg_msg_list_free(mlist); - - return ret; -} blob - 890b165b08684f9d066b621b633681fcbc18ff80 blob + ff987fadfd9690a8b9d878c0aefa4e07f8e7bb1f --- src/mbox.h +++ src/mbox.h @@ -26,7 +26,5 @@ gint proc_mbox(FolderItem *dest, const gchar *mbox, PrefsAccount *account); gint copy_mbox(gint srcfd, const gchar *dest); -gint export_to_mbox (FolderItem *src, const gchar *mbox); -gint export_list_to_mbox(GSList *mlist, const gchar *mbox); #endif /* __MBOX_H__ */ blob - 341b8d4745379897a64537d53dbc32680ddd06ad blob + de92c5cfec760e3066120f1022937d864e2341ae --- src/prefs_common.c +++ src/prefs_common.c @@ -88,18 +88,10 @@ static PrefParam param[] = { P_BOOL, NULL, NULL, NULL}, {"newmail_notify_cmd", "", &prefs_common.newmail_notify_cmd, P_STRING, NULL, NULL, NULL}, - {"receive_dialog_mode", "2", &prefs_common.recv_dialog_mode, P_ENUM, - NULL, NULL, NULL}, {"receivewin_width", "460", &prefs_common.receivewin_width, P_INT, NULL, NULL, NULL}, {"receivewin_height", "-1", &prefs_common.receivewin_height, P_INT, NULL, NULL, NULL}, - {"no_receive_error_panel", "FALSE", &prefs_common.no_recv_err_panel, - P_BOOL, NULL, NULL, NULL}, /* deprecated */ - {"show_receive_error_dialog", "TRUE", &prefs_common.show_recv_err_dialog, - P_BOOL, NULL, NULL, NULL}, - {"close_receive_dialog", "TRUE", &prefs_common.close_recv_dialog, - P_BOOL, NULL, NULL, NULL}, /* Send */ {"save_message", "TRUE", &prefs_common.savemsg, P_BOOL, @@ -792,10 +784,6 @@ static PrefParam param[] = { {"thread_by_subject_max_age", "10", &prefs_common.thread_by_subject_max_age, P_INT, NULL, NULL, NULL }, - {"last_opened_folder", "", &prefs_common.last_opened_folder, - P_STRING, NULL, NULL, NULL }, - {"goto_last_folder_on_startup", "FALSE", &prefs_common.goto_last_folder_on_startup, - P_BOOL, NULL, NULL, NULL }, {"startup_folder", "", &prefs_common.startup_folder, P_STRING, NULL, NULL, NULL }, {"goto_folder_on_startup", "FALSE", &prefs_common.goto_folder_on_startup, blob - 08ba425530831de503bcf416445d2a4d04148433 blob + 156d264b58496ef320af88cb191359044e6dff9e --- src/prefs_common.h +++ src/prefs_common.h @@ -34,12 +34,6 @@ typedef struct _PrefsCommon PrefsCommon; typedef enum { - RECV_DIALOG_ALWAYS, - RECV_DIALOG_MANUAL, - RECV_DIALOG_NEVER -} RecvDialogMode; - -typedef enum { COMPOSE_DND_ASK, COMPOSE_DND_INSERT, COMPOSE_DND_ATTACH @@ -140,12 +134,8 @@ struct _PrefsCommon gboolean newmail_notify_auto; gboolean newmail_notify_manu; gchar *newmail_notify_cmd; - RecvDialogMode recv_dialog_mode; gint receivewin_width; gint receivewin_height; - gboolean close_recv_dialog; - gboolean no_recv_err_panel; - gboolean show_recv_err_dialog; /* Send */ gboolean savemsg; @@ -223,8 +213,6 @@ struct _PrefsCommon gboolean folder_default_hide_read_msgs; gboolean folder_default_hide_del_msgs; - gchar *last_opened_folder; - gboolean goto_last_folder_on_startup; gchar *startup_folder; gboolean goto_folder_on_startup; blob - 1e8e9adcf016cc9c4bd898d79c75cd8c20fc143e blob + 30d2c048bf5d086a3ba3d5b5050bb272076f8d2e --- src/prefs_receive.c +++ src/prefs_receive.c @@ -50,9 +50,6 @@ typedef struct _ReceivePage GtkWidget *checkbtn_newmail_manu; GtkWidget *entry_newmail_notify_cmd; GtkWidget *hbox_newmail_notify; - GtkWidget *optmenu_recvdialog; - GtkWidget *checkbtn_show_recv_err_dialog; - GtkWidget *checkbtn_close_recv_dialog; } ReceivePage; ReceivePage *prefs_receive; @@ -89,13 +86,6 @@ static void prefs_receive_create_widget(PrefsPage *_pa GtkWidget *label_newmail_notify_cmd; GtkWidget *label_newmail_notify_cmd_syntax; - GtkWidget *label_recvdialog; - GtkListStore *menu; - GtkTreeIter iter; - GtkWidget *optmenu_recvdialog; - GtkWidget *checkbtn_show_recv_err_dialog; - GtkWidget *checkbtn_close_recv_dialog; - vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, VSPACING); gtk_widget_show (vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER); @@ -119,35 +109,6 @@ static void prefs_receive_create_widget(PrefsPage *_pa gtk_widget_show (entry_incext); gtk_box_pack_start (GTK_BOX (hbox), entry_incext, TRUE, TRUE, 0); - /* receive dialog */ - vbox2 = gtkut_get_options_frame(vbox1, &frame, _("Dialogs")); - - label_recvdialog = gtk_label_new (_("Show receive dialog")); - gtk_label_set_xalign(GTK_LABEL(label_recvdialog), 0.0); - gtk_widget_show (label_recvdialog); - - optmenu_recvdialog = gtkut_sc_combobox_create(NULL, FALSE); - gtk_widget_show (optmenu_recvdialog); - - menu = GTK_LIST_STORE(gtk_combo_box_get_model( - GTK_COMBO_BOX(optmenu_recvdialog))); - COMBOBOX_ADD (menu, _("Always"), RECV_DIALOG_ALWAYS); - COMBOBOX_ADD (menu, _("Only on manual receiving"), RECV_DIALOG_MANUAL); - COMBOBOX_ADD (menu, _("Never"), RECV_DIALOG_NEVER); - - hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 20); - gtk_widget_show(hbox); - gtk_box_pack_start(GTK_BOX(hbox), label_recvdialog, FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(hbox), optmenu_recvdialog, FALSE, FALSE, 0); - - gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); - - PACK_CHECK_BUTTON (vbox2, checkbtn_close_recv_dialog, - _("Close receive dialog when finished")); - - PACK_CHECK_BUTTON (vbox2, checkbtn_show_recv_err_dialog, - _("Show error dialog on receive error")); - vbox3 = gtkut_get_options_frame(vbox1, &frame, _("Run command after receiving new mail")); hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); @@ -193,15 +154,9 @@ static void prefs_receive_create_widget(PrefsPage *_pa prefs_common.newmail_notify_cmd); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_incext), prefs_common.use_extinc); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_show_recv_err_dialog), - prefs_common.show_recv_err_dialog); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_close_recv_dialog), - prefs_common.close_recv_dialog); gtk_entry_set_text(GTK_ENTRY(entry_incext), prefs_common.extinc_cmd); - combobox_select_by_data(GTK_COMBO_BOX(optmenu_recvdialog), - prefs_common.recv_dialog_mode); prefs_receive->window = GTK_WIDGET(window); prefs_receive->checkbtn_incext = checkbtn_incext; @@ -211,9 +166,6 @@ static void prefs_receive_create_widget(PrefsPage *_pa prefs_receive->entry_newmail_notify_cmd = entry_newmail_notify_cmd; prefs_receive->hbox_newmail_notify = hbox_newmail_notify; - prefs_receive->optmenu_recvdialog = optmenu_recvdialog; - prefs_receive->checkbtn_show_recv_err_dialog = checkbtn_show_recv_err_dialog; - prefs_receive->checkbtn_close_recv_dialog = checkbtn_close_recv_dialog; prefs_receive->page.widget = vbox1; g_signal_connect(G_OBJECT(checkbtn_newmail_auto), "toggled", @@ -231,11 +183,6 @@ static void prefs_receive_save(PrefsPage *_page) prefs_common.use_extinc = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_incext)); - prefs_common.show_recv_err_dialog = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(page->checkbtn_show_recv_err_dialog)); - prefs_common.close_recv_dialog = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(page->checkbtn_close_recv_dialog)); - prefs_common.newmail_notify_auto = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_newmail_auto)); prefs_common.newmail_notify_manu = gtk_toggle_button_get_active( @@ -248,8 +195,6 @@ static void prefs_receive_save(PrefsPage *_page) tmp = gtk_editable_get_chars(GTK_EDITABLE(page->entry_newmail_notify_cmd), 0, -1); g_free(prefs_common.newmail_notify_cmd); prefs_common.newmail_notify_cmd = tmp; - prefs_common.recv_dialog_mode = - combobox_get_active_data(GTK_COMBO_BOX(page->optmenu_recvdialog)); } static void prefs_receive_destroy_widget(PrefsPage *_page) {} blob - /dev/null blob + 19f46de8dc3248b2d5ce3c0366dda093a3db8b1a (mode 644) --- /dev/null +++ src/prefs_summaries.ui @@ -0,0 +1,45 @@ + + + + GTK_ORIENTATION_VERTICAL + 8 + + + + 8 + + + Displayed columns + + + + + Edit + + + + + + + + 8 + + + Open folder on startup + + + + + 32 + + + + + Select... + + + + + + + blob - 400bf6015e423f4161bdff135f36defac37fca2b blob + ba09256908f24c618c2f264ba595498e282430a7 --- src/prefs_summaries.c +++ src/prefs_summaries.c @@ -46,14 +46,12 @@ typedef struct _SummariesPage GtkWidget *window; - GtkWidget *optmenu_folder_unread; GtkWidget *checkbtn_useaddrbook; GtkWidget *checkbtn_show_tooltips; GtkWidget *checkbtn_threadsubj; GtkWidget *button_datefmt; GtkWidget *entry_datefmt; - GtkWidget *checkbtn_reopen_last_folder; GtkWidget *checkbtn_startup_folder; GtkWidget *startup_folder_entry; GtkWidget *startup_folder_select; @@ -104,24 +102,12 @@ static void mark_as_read_toggled (GtkToggleButton *bu static void always_show_msg_toggled (GtkToggleButton *button, gpointer user_data); -static void reopen_last_folder_toggled(GtkToggleButton *toggle_btn, GtkWidget *widget) -{ - gboolean is_active; - - is_active = gtk_toggle_button_get_active(toggle_btn); - gtk_widget_set_sensitive(widget, !is_active); - if (is_active) - prefs_common.goto_folder_on_startup = FALSE; -} - static void startup_folder_toggled(GtkToggleButton *toggle_btn, GtkWidget *widget) { gboolean is_active; is_active = gtk_toggle_button_get_active(toggle_btn); gtk_widget_set_sensitive(widget, !is_active); - if (is_active) - prefs_common.goto_last_folder_on_startup = FALSE; } static void foldersel_cb(GtkWidget *widget, gpointer data) @@ -350,7 +336,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ GtkWidget *hbox0, *hbox1, *hbox2; GtkWidget *vbox1, *vbox2, *vbox3, *vbox4; GtkWidget *frame_new_folders; - GtkWidget *optmenu_folder_unread; GtkWidget *checkbtn_useaddrbook; GtkWidget *checkbtn_show_tooltips; GtkWidget *checkbtn_threadsubj; @@ -358,7 +343,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ GtkWidget *button_datefmt; GtkWidget *entry_datefmt; GtkWidget *button_dispitem; - GtkWidget *checkbtn_reopen_last_folder; GtkWidget *checkbtn_startup_folder; GtkWidget *startup_folder_entry; GtkWidget *startup_folder_select; @@ -392,88 +376,36 @@ static void prefs_summaries_create_widget(PrefsPage *_ notebook = gtk_notebook_new(); gtk_widget_show(notebook); - vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, VSPACING); - gtk_widget_show (vbox1); - gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER); - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox1, - gtk_label_new(_("Folder list"))); + char path[PATH_MAX]; + strlcpy(path, getenv("HOME"), sizeof(path)); + strlcat(path, "/.local/share/talons/prefs_summaries.ui", sizeof(path)); + GtkBuilder *builder = gtk_builder_new_from_file(path); - hbox0 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); - gtk_widget_show (hbox0); - gtk_box_pack_start(GTK_BOX(vbox1), hbox0, FALSE, TRUE, 0); + button_dispitem = GTK_WIDGET(gtk_builder_get_object(builder, "dispitem")); + g_signal_connect(G_OBJECT (button_dispitem), "clicked", G_CALLBACK(prefs_folder_column_open), NULL); - label = gtk_label_new(_("Displayed columns")); - gtk_widget_show(label); - gtk_box_pack_start(GTK_BOX(hbox0), label, FALSE, FALSE, 0); - button_dispitem = gtk_button_new_with_mnemonic(_("_Edit")); - gtk_widget_show (button_dispitem); - gtk_box_pack_start (GTK_BOX (hbox0), button_dispitem, FALSE, FALSE, 0); - g_signal_connect (G_OBJECT (button_dispitem), "clicked", - G_CALLBACK (prefs_folder_column_open), - NULL); + startup_folder_entry = GTK_WIDGET(gtk_builder_get_object(builder, "startup-folder-entry")); + startup_folder_select = GTK_WIDGET(gtk_builder_get_object(builder, "startup-folder-button")); + checkbtn_startup_folder = GTK_WIDGET(gtk_builder_get_object(builder, "startup-folder-checkbutton")); + g_signal_connect(startup_folder_select, "clicked", G_CALLBACK(foldersel_cb), startup_folder_entry); - hbox0 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); - gtk_widget_show (hbox0); - gtk_box_pack_start(GTK_BOX (vbox1), hbox0, FALSE, FALSE, 0); + GtkWidget *folderlist = GTK_WIDGET(gtk_builder_get_object(builder, "folder-list")); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), folderlist, gtk_label_new("Folder list")); + gtk_widget_show_all(folderlist); - label = gtk_label_new (_("Display message count next to folder name")); - gtk_widget_show (label); - gtk_box_pack_start(GTK_BOX(hbox0), label, FALSE, FALSE, 0); - - optmenu_folder_unread = gtkut_sc_combobox_create(NULL, FALSE); - menu = GTK_LIST_STORE(gtk_combo_box_get_model( - GTK_COMBO_BOX(optmenu_folder_unread))); - gtk_widget_show (optmenu_folder_unread); - - COMBOBOX_ADD (menu, _("No"), 0); - COMBOBOX_ADD (menu, _("Unread messages"), 1); - COMBOBOX_ADD (menu, _("Unread and Total messages"), 2); - - gtk_box_pack_start(GTK_BOX(hbox0), optmenu_folder_unread, FALSE, FALSE, 0); - - PACK_CHECK_BUTTON - (vbox1, checkbtn_reopen_last_folder, - _("Open last opened folder at start-up")); - - hbox0 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); - gtk_widget_show(hbox0); - gtk_box_pack_start(GTK_BOX(vbox1), hbox0, FALSE, FALSE, 0); - - PACK_CHECK_BUTTON - (hbox0, checkbtn_startup_folder, - _("Open selected folder at start-up")); - - startup_folder_entry = gtk_entry_new(); - gtk_widget_show(startup_folder_entry); - gtk_box_pack_start(GTK_BOX(hbox0), startup_folder_entry, TRUE, TRUE, 0); - startup_folder_select = gtkut_get_browse_directory_btn(_("_Browse")); - gtk_widget_show(startup_folder_select); - gtk_box_pack_start(GTK_BOX(hbox0), startup_folder_select, FALSE, FALSE, 0); - - SET_TOGGLE_SENSITIVITY(checkbtn_startup_folder, startup_folder_entry) - SET_TOGGLE_SENSITIVITY(checkbtn_startup_folder, startup_folder_select) - - g_signal_connect(G_OBJECT(checkbtn_reopen_last_folder), "toggled", - G_CALLBACK(reopen_last_folder_toggled), checkbtn_startup_folder); - g_signal_connect(G_OBJECT(checkbtn_startup_folder), "toggled", - G_CALLBACK(startup_folder_toggled), checkbtn_reopen_last_folder); - g_signal_connect(G_OBJECT(startup_folder_select), "clicked", - G_CALLBACK(foldersel_cb), startup_folder_entry); - vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, VSPACING); gtk_widget_show (vbox1); gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER); - gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox1, - gtk_label_new(_("Message list"))); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox1, gtk_label_new("Message list")); hbox0 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8); gtk_widget_show (hbox0); gtk_box_pack_start(GTK_BOX(vbox1), hbox0, FALSE, TRUE, 0); - label = gtk_label_new(_("Displayed columns")); + label = gtk_label_new("Displayed columns"); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox0), label, FALSE, FALSE, 0); - button_dispitem = gtk_button_new_with_mnemonic(_("_Edit")); + button_dispitem = gtk_button_new_with_mnemonic("Edit"); gtk_widget_show (button_dispitem); gtk_box_pack_start (GTK_BOX (hbox0), button_dispitem, FALSE, FALSE, 0); g_signal_connect (G_OBJECT (button_dispitem), "clicked", @@ -690,12 +622,10 @@ static void prefs_summaries_create_widget(PrefsPage *_ (vbox2, checkbtn_folder_default_hide_del_msgs, _("Hide deleted messages")); - prefs_summaries->optmenu_folder_unread = optmenu_folder_unread; prefs_summaries->checkbtn_useaddrbook = checkbtn_useaddrbook; prefs_summaries->checkbtn_show_tooltips = checkbtn_show_tooltips; prefs_summaries->checkbtn_threadsubj = checkbtn_threadsubj; prefs_summaries->entry_datefmt = entry_datefmt; - prefs_summaries->checkbtn_reopen_last_folder = checkbtn_reopen_last_folder; prefs_summaries->checkbtn_startup_folder = checkbtn_startup_folder; prefs_summaries->startup_folder_entry = startup_folder_entry; @@ -732,8 +662,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ prefs_summaries->window = GTK_WIDGET(window); - combobox_select_by_data(GTK_COMBO_BOX(optmenu_folder_unread), - prefs_common.display_folder_unread); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_useaddrbook), prefs_common.use_addr_book); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_show_tooltips), @@ -742,8 +670,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ prefs_common.thread_by_subject); gtk_entry_set_text(GTK_ENTRY(entry_datefmt), prefs_common.date_format?prefs_common.date_format:""); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_reopen_last_folder), - prefs_common.goto_last_folder_on_startup); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_startup_folder), prefs_common.goto_folder_on_startup); gtk_entry_set_text(GTK_ENTRY(startup_folder_entry), @@ -776,9 +702,6 @@ static void prefs_summaries_create_widget(PrefsPage *_ combobox_select_by_data(GTK_COMBO_BOX(optmenu_sort_type), prefs_common.default_sort_type); - combobox_select_by_data(GTK_COMBO_BOX(optmenu_summaryfromshow), - prefs_common.summary_from_show); - combobox_select_by_data(GTK_COMBO_BOX(optmenu_nextunreadmsgdialog), prefs_common.next_unread_msg_dialog); @@ -800,12 +723,15 @@ static void prefs_summaries_create_widget(PrefsPage *_ prefs_summaries->page.widget = notebook; } +#define MESSAGECOUNT_NONE 0 +#define MESSAGECOUNT_UNREAD 1 +#define MESSAGECOUNT_ALL 2 + static void prefs_summaries_save(PrefsPage *_page) { SummariesPage *page = (SummariesPage *) _page; - prefs_common.display_folder_unread = combobox_get_active_data( - GTK_COMBO_BOX(page->optmenu_folder_unread)); + prefs_common.display_folder_unread = MESSAGECOUNT_NONE; prefs_common.use_addr_book = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_useaddrbook)); @@ -814,12 +740,10 @@ static void prefs_summaries_save(PrefsPage *_page) prefs_common.thread_by_subject = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_threadsubj)); - g_free(prefs_common.date_format); + free(prefs_common.date_format); prefs_common.date_format = gtk_editable_get_chars( GTK_EDITABLE(page->entry_datefmt), 0, -1); - prefs_common.goto_last_folder_on_startup = gtk_toggle_button_get_active( - GTK_TOGGLE_BUTTON(page->checkbtn_reopen_last_folder)); prefs_common.goto_folder_on_startup = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(page->checkbtn_startup_folder)); prefs_common.startup_folder = gtk_editable_get_chars( blob - 1dfdaa000fa48c6b729bb178efa5e4828076b0ec blob + 9fe6840cbeb78063e7c7c729f3c3e88af7388e58 --- src/summaryview.c +++ src/summaryview.c @@ -6631,26 +6631,6 @@ static gboolean summary_update_folder_hook(gpointer so return FALSE; } -gint summaryview_export_mbox_list(SummaryView *summaryview) -/* return values: -2 skipped, -1 error, 0 OK */ -{ - GSList *list = summary_get_selected_msg_list(summaryview); - gchar *mbox = filesel_select_file_save("Export to mbox file", NULL); - gint ret; - - if (mbox == NULL) - return -2; - if (list == NULL) - return -1; - - ret = export_list_to_mbox(list, mbox); - - g_slist_free(list); - g_free(mbox); - - return ret; -} - static void summary_reedit_cb(GtkAction *gaction, gpointer data) { SummaryView *summaryview = (SummaryView *)data; blob - fe141d0ae1637095ad074e5a1b7a74ae55b016df blob + 49281071a207154175bbc7eef9b050b78d68e308 --- src/summaryview.h +++ src/summaryview.h @@ -305,7 +305,6 @@ void summary_set_prefs_from_folderitem (SummaryView *summaryview, FolderItem *item); void summary_save_prefs_to_folderitem (SummaryView *summaryview, FolderItem *item); -gint summaryview_export_mbox_list (SummaryView *summaryview); void summary_set_menu_sensitive (SummaryView *summaryview); void summary_relayout(SummaryView *summaryview); void summary_update_unread(SummaryView *summaryview, FolderItem *removed_item);