commit - 6f1b42f263b7acd091cfae63c46a15c26e82a721
commit + a00047c8ca49fe4b9529d03c403a093b438847ac
blob - 2d29ee5f78448955e7e95fc357c4117142309068 (mode 644)
blob + /dev/null
--- src/export.c
+++ /dev/null
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#include "defs.h"
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#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
-/*
- * 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 <http://www.gnu.org/licenses/>.
- *
- */
-
-#ifndef __EXPORT_H__
-#define __EXPORT_H__
-
-#include <glib.h>
-
-#include "folder.h"
-
-gint export_mbox(FolderItem *default_src);
-
-#endif /* __EXPORT_H__ */
blob - 5b807c82b3cb5c7e37fa5144cbdcabe11a348d0b
blob + ff8056081e163f6a672f4900d0f8b677bb65f741
--- src/folderview.c
+++ src/folderview.c
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
"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);
}
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;
}
}
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
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#include "defs.h"
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#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
-/*
- * 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 <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __IMPORT_H__
-#define __IMPORT_H__
-
-#include <glib.h>
-
-#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
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();
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) {
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;
}
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;
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);
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"),
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);
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);
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);
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
#include "inc.h"
#include "imap.h"
#include "send_message.h"
-#include "import.h"
#include "manage_window.h"
#include "alertpanel.h"
#include "statusbar.h"
const gchar *target;
gboolean debug;
const gchar *geometry;
- const gchar *import_mbox;
} cmd;
static void parse_cmd_opt(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) {
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 */
" 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"));
} 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], "://")) {
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 =
} 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
#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"
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,
{"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"), "<shift>D", NULL, G_CALLBACK(empty_trash_cb) },
/* {"File/---", NULL, "---", NULL, NULL, NULL }, */
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)
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;
&& 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
}
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
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
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,
{"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
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
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;
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
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;
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);
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);
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;
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",
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(
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
+<?xml version="1.0" encoding="utf-8"?>
+<interface>
+ <object id="folder-list" class="GtkBox">
+ <property name="orientation">GTK_ORIENTATION_VERTICAL</property>
+ <property name="border-width">8</property>
+
+ <child>
+ <object class="GtkBox">
+ <property name="spacing">8</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="label">Displayed columns</property>
+ </object>
+ </child>
+ <child>
+ <object id="dispitem" class="GtkButton">
+ <property name="label">Edit</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ <child>
+ <object id="startup-folder" class="GtkBox">
+ <property name="spacing">8</property>
+ <child>
+ <object id="startup-folder-checkbutton" class="GtkCheckButton">
+ <property name="label">Open folder on startup</property>
+ </object>
+ </child>
+ <child>
+ <object id="startup-folder-entry" class="GtkEntry">
+ <property name="width-chars">32</property>
+ </object>
+ </child>
+ <child>
+ <object id="startup-folder-button" class="GtkButton">
+ <property name="label">Select...</property>
+ </object>
+ </child>
+ </object>
+ </child>
+
+ </object>
+</interface>
blob - 400bf6015e423f4161bdff135f36defac37fca2b
blob + ba09256908f24c618c2f264ba595498e282430a7
--- src/prefs_summaries.c
+++ src/prefs_summaries.c
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;
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)
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;
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;
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",
(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;
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),
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),
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);
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));
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
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
(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);