#include "prefs_filtering.h"
#include "prefs_account.h"
#include "prefs_summary_column.h"
+#include "prefs_folder_column.h"
#include "prefs_template.h"
#include "action.h"
#include "account.h"
static void delete_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
+static void delete_trash_cb (MainWindow *mainwin,
+ guint action,
+ GtkWidget *widget);
static void cancel_cb (MainWindow *mainwin,
guint action,
guint action,
GtkWidget *widget);
-static void set_display_item_cb (MainWindow *mainwin,
+static void set_summary_display_item_cb (MainWindow *mainwin,
+ guint action,
+ GtkWidget *widget);
+static void set_folder_display_item_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
static void sort_summary_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
-static void prefs_common_open_cb (MainWindow *mainwin,
- guint action,
- GtkWidget *widget);
static void prefs_template_open_cb (MainWindow *mainwin,
guint action,
GtkWidget *widget);
gboolean mainwindow_progressindicator_hook (gpointer source,
gpointer userdata);
#define SEPARATE_ACTION 500
+static void mainwindow_quicksearch (MainWindow *mainwin,
+ guint action,
+ GtkWidget *widget);
static GtkItemFactoryEntry mainwin_entries[] =
{
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_File/_Import mbox file..."), NULL, import_mbox_cb, 0, NULL},
{N_("/_File/_Export to mbox file..."), NULL, export_mbox_cb, 0, NULL},
- {N_("/_File/_Export selected to mbox file..."),
+ {N_("/_File/Exp_ort selected to mbox file..."),
NULL, export_list_mbox_cb, 0, NULL},
{N_("/_File/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_File/Empty all _Trash folders"), "<shift>D", empty_trash_cb, 0, NULL},
{N_("/_Edit/_Find in current message..."),
"<control>F", search_cb, 0, NULL},
{N_("/_Edit/_Search folder..."), "<shift><control>F", search_cb, 1, NULL},
+ {N_("/_Edit/_Quick search"), "slash", mainwindow_quicksearch, 0, NULL},
{N_("/_View"), NULL, NULL, 0, "<Branch>"},
{N_("/_View/Show or hi_de"), NULL, NULL, 0, "<Branch>"},
{N_("/_View/Show or hi_de/_Folder tree"),
{N_("/_View/E_xpand all threads"), NULL, expand_threads_cb, 0, NULL},
{N_("/_View/Co_llapse all threads"), NULL, collapse_threads_cb, 0, NULL},
{N_("/_View/_Hide read messages"), NULL, hide_read_messages, 0, "<ToggleItem>"},
- {N_("/_View/Set displayed _items..."), NULL, set_display_item_cb, 0, NULL},
+ {N_("/_View/Set displayed columns"), NULL, NULL, 0, "<Branch>"},
+ {N_("/_View/Set displayed columns/in Folder list..."), NULL, set_folder_display_item_cb, 0, NULL},
+ {N_("/_View/Set displayed columns/in Message list..."),NULL, set_summary_display_item_cb, 0, NULL},
{N_("/_View/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_View/_Go to"), NULL, NULL, 0, "<Branch>"},
ENC_ACTION(C_ISO_8859_7)},
ENC_SEPARATOR,
+ {N_("/_View/Character _encoding/Hebrew (ISO-8859-_8)"),
+ ENC_ACTION(C_ISO_8859_8)},
+ {N_("/_View/Character _encoding/Hebrew (Windows-1255)"),
+ ENC_ACTION(C_CP1255)},
+ ENC_SEPARATOR,
+
{N_("/_View/Character _encoding/Turkish (ISO-8859-_9)"),
ENC_ACTION(C_ISO_8859_9)},
ENC_SEPARATOR,
{N_("/_View/Character _encoding/Simplified Chinese (_GB2312)"),
ENC_ACTION(C_GB2312)},
+ {N_("/_View/Character _encoding/Simplified Chinese (GBK)"),
+ ENC_ACTION(C_GBK)},
{N_("/_View/Character _encoding/Traditional Chinese (_Big5)"),
ENC_ACTION(C_BIG5)},
{N_("/_View/Character _encoding/Traditional Chinese (EUC-_TW)"),
{N_("/_View/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_View/Open in new _window"), "<control><alt>N", open_msg_cb, 0, NULL},
{N_("/_View/Mess_age source"), "<control>U", view_source_cb, 0, NULL},
- {N_("/_View/Show all _headers"), "<control>H", show_all_header_cb, 0, "<ToggleItem>"},
+ {N_("/_View/Show all headers"), "<control>H", show_all_header_cb, 0, "<ToggleItem>"},
{N_("/_View/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_View/_Update summary"), "<control><alt>U", update_summary_cb, 0, NULL},
{N_("/_Message/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Message/M_ove..."), "<control>O", move_to_cb, 0, NULL},
{N_("/_Message/_Copy..."), "<shift><control>O", copy_to_cb, 0, NULL},
- {N_("/_Message/_Delete"), "<control>D", delete_cb, 0, NULL},
+ {N_("/_Message/Move to _trash"), "<control>D", delete_trash_cb, 0, NULL},
+ {N_("/_Message/_Delete..."), NULL, delete_cb, 0, NULL},
{N_("/_Message/Cancel a news message"), "", cancel_cb, 0, NULL},
{N_("/_Message/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Message/_Mark"), NULL, NULL, 0, "<Branch>"},
NULL, create_filter_cb, FILTER_BY_TO, NULL},
{N_("/_Tools/_Create filter rule/by _Subject"),
NULL, create_filter_cb, FILTER_BY_SUBJECT, NULL},
- {N_("/_Tools/_Create processing rule"), NULL, NULL, 0, "<Branch>"},
- {N_("/_Tools/_Create processing rule/_Automatically"),
+ {N_("/_Tools/C_reate processing rule"), NULL, NULL, 0, "<Branch>"},
+ {N_("/_Tools/C_reate processing rule/_Automatically"),
NULL, create_processing_cb, FILTER_BY_AUTO, NULL},
- {N_("/_Tools/_Create processing rule/by _From"),
+ {N_("/_Tools/C_reate processing rule/by _From"),
NULL, create_processing_cb, FILTER_BY_FROM, NULL},
- {N_("/_Tools/_Create processing rule/by _To"),
+ {N_("/_Tools/C_reate processing rule/by _To"),
NULL, create_processing_cb, FILTER_BY_TO, NULL},
- {N_("/_Tools/_Create processing rule/by _Subject"),
+ {N_("/_Tools/C_reate processing rule/by _Subject"),
NULL, create_processing_cb, FILTER_BY_SUBJECT, NULL},
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Tools/Actio_ns"), NULL, NULL, 0, "<Branch>"},
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_Tools/_Check for new messages in all folders"),
+ {N_("/_Tools/Ch_eck for new messages in all folders"),
NULL, update_folderview_cb, 0, NULL},
{N_("/_Tools/Delete du_plicated messages"),
NULL, NULL, 0, "<Branch>"},
{N_("/_Tools/E_xecute"), "X", execute_summary_cb, 0, NULL},
#ifdef USE_OPENSSL
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_Tools/SSL certi_ficates..."),
+ {N_("/_Tools/SSL cer_tificates..."),
NULL, ssl_manager_open_cb, 0, NULL},
#endif
{N_("/_Tools/---"), NULL, NULL, 0, "<Separator>"},
{N_("/_Configuration/_Edit accounts..."),
NULL, account_edit_open, 0, NULL},
{N_("/_Configuration/---"), NULL, NULL, 0, "<Separator>"},
- {N_("/_Configuration/_Preferences..."),
+ {N_("/_Configuration/P_references..."),
NULL, prefs_open_cb, 0, NULL},
- {N_("/_Configuration/Pre-processing..."),
+ {N_("/_Configuration/Pre-pr_ocessing..."),
NULL, prefs_pre_processing_open_cb, 0, NULL},
- {N_("/_Configuration/Post-processing..."),
+ {N_("/_Configuration/Post-pro_cessing..."),
NULL, prefs_post_processing_open_cb, 0, NULL},
{N_("/_Configuration/_Filtering..."),
NULL, prefs_filtering_open_cb, 0, NULL},
{N_("/_Configuration/_Templates..."), NULL, prefs_template_open_cb, 0, NULL},
{N_("/_Configuration/_Actions..."), NULL, prefs_actions_open_cb, 0, NULL},
- {N_("/_Configuration/Plugins..."), NULL, plugins_open_cb, 0, NULL},
+ {N_("/_Configuration/Plu_gins..."), NULL, plugins_open_cb, 0, NULL},
{N_("/_Help"), NULL, NULL, 0, "<Branch>"},
{N_("/_Help/_Manual (Local)"), NULL, manual_open_cb, MANUAL_MANUAL_LOCAL, NULL},
- {N_("/_Help/_Manual (Sylpheed Doc Homepage)"),
+ {N_("/_Help/Ma_nual (Sylpheed Doc Homepage)"),
NULL, manual_open_cb, MANUAL_MANUAL_SYLDOC, NULL},
{N_("/_Help/_FAQ (Local)"), NULL, manual_open_cb, MANUAL_FAQ_LOCAL, NULL},
- {N_("/_Help/_FAQ (Sylpheed Doc Homepage)"),
+ {N_("/_Help/FA_Q (Sylpheed Doc Homepage)"),
NULL, manual_open_cb, MANUAL_FAQ_SYLDOC, NULL},
{N_("/_Help/_Claws FAQ (Claws Documentation)"),
NULL, manual_open_cb, MANUAL_FAQ_CLAWS, NULL},
menu_set_sensitive(ifactory, "/Help/Manual (Local)", manual_available(MANUAL_MANUAL_LOCAL));
menu_set_sensitive(ifactory, "/Help/FAQ (Local)", manual_available(MANUAL_FAQ_LOCAL));
- handlebox = gtk_handle_box_new();
- gtk_widget_show(handlebox);
- gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
- g_signal_connect(G_OBJECT(handlebox), "child_attached",
- G_CALLBACK(toolbar_child_attached), mainwin);
- g_signal_connect(G_OBJECT(handlebox), "child_detached",
- G_CALLBACK(toolbar_child_detached), mainwin);
-
+ if (prefs_common.toolbar_detachable) {
+ handlebox = gtk_handle_box_new();
+ gtk_widget_show(handlebox);
+ gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
+ g_signal_connect(G_OBJECT(handlebox), "child_attached",
+ G_CALLBACK(toolbar_child_attached), mainwin);
+ g_signal_connect(G_OBJECT(handlebox), "child_detached",
+ G_CALLBACK(toolbar_child_detached), mainwin);
+ } else {
+ handlebox = gtk_hbox_new(FALSE, 0);
+ gtk_widget_show(handlebox);
+ gtk_box_pack_start(GTK_BOX(vbox), handlebox, FALSE, FALSE, 0);
+ }
/* link window to mainwin->window to avoid gdk warnings */
mainwin->window = window;
mainwin->menu_lock_count--;
}
+static guint prefs_tag = 0;
+
void main_window_reflect_prefs_all(void)
{
main_window_reflect_prefs_all_real(FALSE);
}
-void main_window_reflect_prefs_all_real(gboolean pixmap_theme_changed)
+static gboolean reflect_prefs_timeout_cb(gpointer data)
{
+ gboolean pixmap_theme_changed = GPOINTER_TO_INT(data);
GList *cur;
MainWindow *mainwin;
GtkWidget *pixmap;
mainwin->offline_pixmap = pixmap;
}
- summary_redisplay_msg(mainwin->summaryview);
headerview_set_visibility(mainwin->messageview->headerview,
prefs_common.display_header_pane);
+
+ textview_reflect_prefs(mainwin->messageview->mimeview->textview);
+ folderview_reflect_prefs();
+ summary_reflect_prefs();
+ summary_redisplay_msg(mainwin->summaryview);
+ }
+ prefs_tag = 0;
+ return FALSE;
+}
+
+void main_window_reflect_prefs_all_real(gboolean pixmap_theme_changed)
+{
+ if (prefs_tag == 0 || pixmap_theme_changed) {
+ prefs_tag = g_timeout_add(500, reflect_prefs_timeout_cb,
+ GINT_TO_POINTER(pixmap_theme_changed));
}
}
}
}
+void main_window_set_folder_column(void)
+{
+ GList *cur;
+ MainWindow *mainwin;
+
+ for (cur = mainwin_list; cur != NULL; cur = cur->next) {
+ mainwin = (MainWindow *)cur->data;
+ folderview_set_column_order(mainwin->folderview);
+ }
+}
+
static void main_window_set_account_selector_menu(MainWindow *mainwin,
GList *account_list)
{
"Mail");
if (!path) return;
if (folder_find_from_path(path)) {
- alertpanel_error(_("The mailbox `%s' already exists."), path);
+ alertpanel_error(_("The mailbox '%s' already exists."), path);
g_free(path);
return;
}
{"/Message/Compose a news message", M_HAVE_NEWS_ACCOUNT},
{"/Message/Reply" , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
- {"/Message/Reply to" , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
+ {"/Message/Reply to" , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
{"/Message/Follow-up and reply to", M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST|M_NEWS},
{"/Message/Forward" , M_HAVE_ACCOUNT|M_TARGET_EXIST},
{"/Message/Redirect" , M_HAVE_ACCOUNT|M_SINGLE_TARGET_EXIST},
{"/Message/Move..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED},
{"/Message/Copy..." , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
- {"/Message/Delete" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
+ {"/Message/Move to trash" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
+ {"/Message/Delete..." , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NOT_NEWS},
{"/Message/Cancel a news message" , M_TARGET_EXIST|M_ALLOW_DELETE|M_UNLOCKED|M_NEWS},
{"/Message/Mark" , M_TARGET_EXIST},
- {"/Message/Re-edit" , M_HAVE_ACCOUNT|M_ALLOW_REEDIT},
+ {"/Message/Re-edit" , M_HAVE_ACCOUNT|M_ALLOW_REEDIT},
{"/Tools/Add sender to address book" , M_SINGLE_TARGET_EXIST},
{"/Tools/Harvest addresses" , M_UNLOCKED},
+ {"/Tools/Harvest addresses/from Folder..."
+ , M_UNLOCKED|M_MSG_EXIST},
+ {"/Tools/Harvest addresses/from Messages..."
+ , M_UNLOCKED|M_MSG_EXIST|M_TARGET_EXIST},
+ {"/Tools/Harvest addresses" , M_UNLOCKED},
{"/Tools/Filter all messages in folder", M_MSG_EXIST|M_EXEC|M_UNLOCKED},
{"/Tools/Filter selected messages" , M_TARGET_EXIST|M_EXEC|M_UNLOCKED},
{"/Tools/Create filter rule" , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
prefs_common.mainwin_x,
prefs_common.mainwin_y);
- gtk_widget_set_usize(GTK_WIDGET_PTR(mainwin->folderview),
+ gtk_widget_set_size_request(GTK_WIDGET_PTR(mainwin->folderview),
prefs_common.folderview_width,
prefs_common.folderview_height);
- gtk_widget_set_usize(GTK_WIDGET_PTR(mainwin->summaryview),
+ gtk_widget_set_size_request(GTK_WIDGET_PTR(mainwin->summaryview),
prefs_common.summaryview_width,
prefs_common.summaryview_height);
- gtk_widget_set_usize(GTK_WIDGET_PTR(mainwin->messageview),
+ gtk_widget_set_size_request(GTK_WIDGET_PTR(mainwin->messageview),
prefs_common.msgview_width,
prefs_common.msgview_height);
/* create separated window(s) if needed */
if (type & SEPARATE_FOLDER) {
+ static GdkGeometry folderwin_geometry;
+
folderwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(folderwin),
_("Sylpheed - Folder View"));
- gtk_window_set_resizable(GTK_WINDOW(folderwin), TRUE);
- gtk_window_move(GTK_WINDOW(folderwin), prefs_common.folderwin_x,
+
+ gtk_window_move(GTK_WINDOW(folderwin),
+ prefs_common.folderwin_x,
prefs_common.folderwin_y);
+
+ if (!folderwin_geometry.min_height) {
+ folderwin_geometry.min_width = 320;
+ folderwin_geometry.min_height = 200;
+ }
+ gtk_window_set_geometry_hints(GTK_WINDOW(folderwin), NULL,
+ &folderwin_geometry, GDK_HINT_MIN_SIZE);
+
+ gtk_widget_set_size_request(folderwin,
+ prefs_common.folderview_width,
+ prefs_common.folderview_height);
+
gtk_container_set_border_width(GTK_CONTAINER(folderwin),
BORDER_WIDTH);
+
g_signal_connect(G_OBJECT(folderwin), "delete_event",
G_CALLBACK(folder_window_close_cb),
mainwin);
gtk_container_add(GTK_CONTAINER(folderwin),
GTK_WIDGET_PTR(mainwin->folderview));
gtk_widget_realize(folderwin);
+
if (prefs_common.folderview_visible)
gtk_widget_show(folderwin);
}
if (type & SEPARATE_MESSAGE) {
+ static GdkGeometry msgwin_geometry;
+
messagewin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(messagewin),
_("Sylpheed - Message View"));
- gtk_window_set_resizable(GTK_WINDOW(messagewin), TRUE);
+
gtk_window_move(GTK_WINDOW(messagewin),
prefs_common.main_msgwin_x,
prefs_common.main_msgwin_y);
+
+ if (!msgwin_geometry.min_height) {
+ msgwin_geometry.min_width = 320;
+ msgwin_geometry.min_height = 200;
+ }
+ gtk_window_set_geometry_hints(GTK_WINDOW(messagewin), NULL,
+ &msgwin_geometry, GDK_HINT_MIN_SIZE);
+
gtk_widget_set_size_request(messagewin,
prefs_common.msgwin_width,
prefs_common.msgwin_height);
+
gtk_container_set_border_width(GTK_CONTAINER(messagewin),
BORDER_WIDTH);
g_signal_connect(G_OBJECT(messagewin), "delete_event",
static void toolbar_child_attached(GtkWidget *widget, GtkWidget *child,
gpointer data)
{
- gtk_widget_set_usize(child, 1, -1);
+ gtk_widget_set_size_request(child, 1, -1);
}
static void toolbar_child_detached(GtkWidget *widget, GtkWidget *child,
gpointer data)
{
- gtk_widget_set_usize(child, -1, -1);
+ gtk_widget_set_size_request(child, -1, -1);
}
static gboolean ac_label_button_pressed(GtkWidget *widget, GdkEventButton *event,
message_search(mainwin->messageview);
}
+static void mainwindow_quicksearch(MainWindow *mainwin, guint action, GtkWidget *widget)
+{
+ prefs_common.show_searchbar = TRUE;
+ quicksearch_show(mainwin->summaryview->quicksearch);
+}
+
static void toggle_folder_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
summary_delete(mainwin->summaryview);
}
+static void delete_trash_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
+{
+ summary_delete_trash(mainwin->summaryview);
+}
+
static void cancel_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
{
summary_cancel(mainwin->summaryview);
GtkWidget *widget)
{
if (mainwin->menu_lock_count) return;
+ mainwin->summaryview->messageview->all_headers =
+ GTK_CHECK_MENU_ITEM(widget)->active;
summary_display_msg_selected(mainwin->summaryview,
GTK_CHECK_MENU_ITEM(widget)->active);
}
summary_collapse_threads(mainwin->summaryview);
}
-static void set_display_item_cb(MainWindow *mainwin, guint action,
+static void set_summary_display_item_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
prefs_summary_column_open();
}
+static void set_folder_display_item_cb(MainWindow *mainwin, guint action,
+ GtkWidget *widget)
+{
+ prefs_folder_column_open();
+}
+
static void sort_summary_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{
struct DelDupsData data = {0, 0};
folder_func_to_all_folders(deldup_all, &data);
- alertpanel_notice(_("Deleted %d duplicate message(s) in %d folders.\n"),
+ alertpanel_notice(ngettext("Deleted %d duplicate message in %d folders.\n",
+ "Deleted %d duplicate messages in %d folders.\n",
+ data.dups),
data.dups, data.folders);
}
summary_filter_open(mainwin->summaryview, (PrefsFilterType)action, 1);
}
-static void prefs_common_open_cb(MainWindow *mainwin, guint action,
- GtkWidget *widget)
-{
- /* prefs_common_open(); */
-}
-
static void prefs_pre_processing_open_cb(MainWindow *mainwin, guint action,
GtkWidget *widget)
{