add an easy way to open any folder on start-up
This commit is contained in:
parent
102602650e
commit
ca89ade8eb
5 changed files with 111 additions and 6 deletions
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Claws Mail -- a GTK based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2023 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
|
||||
|
@ -189,6 +189,8 @@ static void folderview_search_cb (GtkAction *action,
|
|||
gpointer data);
|
||||
static void folderview_run_processing_cb(GtkAction *action,
|
||||
gpointer data);
|
||||
static void folderview_startup_folder_cb(GtkAction *action,
|
||||
gpointer data);
|
||||
|
||||
static void folderview_property_cb (GtkAction *action,
|
||||
gpointer data);
|
||||
|
@ -252,6 +254,7 @@ static GtkActionEntry folderview_common_popup_entries[] =
|
|||
{"FolderViewPopup/---", NULL, "---", NULL, NULL , NULL},
|
||||
{"FolderViewPopup/RunProcessing", NULL, N_("R_un processing rules"), NULL, NULL, G_CALLBACK(folderview_run_processing_cb) },
|
||||
{"FolderViewPopup/SearchFolder", NULL, N_("_Search folder..."), NULL, NULL, G_CALLBACK(folderview_search_cb) },
|
||||
{"FolderViewPopup/OpenFolder", NULL, N_("Open on start-up"), NULL, NULL, G_CALLBACK(folderview_startup_folder_cb) },
|
||||
{"FolderViewPopup/Properties", NULL, N_("_Properties..."), NULL, NULL, G_CALLBACK(folderview_property_cb) },
|
||||
{"FolderViewPopup/Processing", NULL, N_("Process_ing..."), NULL, NULL, G_CALLBACK(folderview_processing_cb) },
|
||||
{"FolderViewPopup/EmptyTrash", NULL, N_("Empty _trash..."), NULL, NULL, G_CALLBACK(folderview_empty_trash_cb) },
|
||||
|
@ -1956,6 +1959,7 @@ static void folderview_set_sens_and_popup_menu(FolderView *folderview, gint row,
|
|||
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Separator1", "FolderViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
|
||||
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "RunProcessing", "FolderViewPopup/RunProcessing", GTK_UI_MANAGER_MENUITEM)
|
||||
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "SearchFolder", "FolderViewPopup/SearchFolder", GTK_UI_MANAGER_MENUITEM)
|
||||
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "OpenFolder", "FolderViewPopup/OpenFolder", GTK_UI_MANAGER_MENUITEM)
|
||||
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Properties", "FolderViewPopup/Properties", GTK_UI_MANAGER_MENUITEM)
|
||||
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Processing", "FolderViewPopup/Processing", GTK_UI_MANAGER_MENUITEM)
|
||||
|
||||
|
@ -2574,6 +2578,20 @@ static void folderview_search_cb(GtkAction *action, gpointer data)
|
|||
summary_search(folderview->summaryview);
|
||||
}
|
||||
|
||||
static void folderview_startup_folder_cb(GtkAction *action, gpointer data)
|
||||
{
|
||||
FolderView *folderview = (FolderView *)data;
|
||||
FolderItem *item;
|
||||
|
||||
if (!folderview->selected) return;
|
||||
|
||||
item = folderview_get_selected_item(folderview);
|
||||
|
||||
prefs_common.goto_last_folder_on_startup = FALSE;
|
||||
prefs_common.goto_folder_on_startup = TRUE;
|
||||
prefs_common.startup_folder = folder_item_get_identifier(item);
|
||||
}
|
||||
|
||||
static void folderview_run_processing_cb(GtkAction *action, gpointer data)
|
||||
{
|
||||
FolderView *folderview = (FolderView *)data;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Claws Mail -- a GTK based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2023 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
|
||||
|
@ -1605,7 +1605,11 @@ int main(int argc, char *argv[])
|
|||
folderview_thaw(mainwin->folderview);
|
||||
main_window_cursor_normal(mainwin);
|
||||
|
||||
if (!cmd.target && prefs_common.goto_last_folder_on_startup &&
|
||||
if (!cmd.target && prefs_common.goto_folder_on_startup &&
|
||||
folder_find_item_from_identifier(prefs_common.startup_folder) != NULL &&
|
||||
!claws_crashed()) {
|
||||
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 &&
|
||||
!claws_crashed()) {
|
||||
cmd.target = prefs_common.last_opened_folder;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Claws Mail -- a GTK based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2023 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
|
||||
|
@ -1212,6 +1212,10 @@ static PrefParam param[] = {
|
|||
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,
|
||||
P_BOOL, NULL, NULL, NULL },
|
||||
{"summary_quicksearch_sticky", "1", &prefs_common.summary_quicksearch_sticky, P_INT,
|
||||
NULL, NULL, NULL},
|
||||
{"summary_quicksearch_dynamic", "0", &prefs_common.summary_quicksearch_dynamic, P_INT,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Claws Mail -- a GTK based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 1999-2022 the Claws Mail team and Hiroyuki Yamamoto
|
||||
* Copyright (C) 1999-2023 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
|
||||
|
@ -277,6 +277,8 @@ struct _PrefsCommon
|
|||
|
||||
gchar *last_opened_folder;
|
||||
gboolean goto_last_folder_on_startup;
|
||||
gchar *startup_folder;
|
||||
gboolean goto_folder_on_startup;
|
||||
|
||||
ToolbarStyle toolbar_style;
|
||||
gboolean show_statusbar;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Claws Mail -- a GTK based, lightweight, and fast e-mail client
|
||||
* Copyright (C) 2005-2022 Colin Leroy and The Claws Mail Team
|
||||
* Copyright (C) 2005-2023 the Claws Mail Team and Colin Leroy
|
||||
*
|
||||
* 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
|
||||
|
@ -31,6 +31,7 @@
|
|||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkkeysyms.h>
|
||||
|
||||
#include "foldersel.h"
|
||||
#include "prefs_common.h"
|
||||
#include "prefs_gtk.h"
|
||||
#include "prefs_summary_open.h"
|
||||
|
@ -59,6 +60,9 @@ typedef struct _SummariesPage
|
|||
GtkWidget *entry_datefmt;
|
||||
|
||||
GtkWidget *checkbtn_reopen_last_folder;
|
||||
GtkWidget *checkbtn_startup_folder;
|
||||
GtkWidget *startup_folder_entry;
|
||||
GtkWidget *startup_folder_select;
|
||||
GtkWidget *checkbtn_always_show_msg;
|
||||
GtkWidget *checkbtn_show_on_folder_open;
|
||||
GtkWidget *checkbtn_show_on_search_results;
|
||||
|
@ -111,6 +115,41 @@ static void mark_as_read_toggled (GtkToggleButton *button,
|
|||
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 *entry = (GtkWidget *) data;
|
||||
FolderItem *item;
|
||||
gchar *item_id;
|
||||
gint newpos = 0;
|
||||
|
||||
item = foldersel_folder_sel(NULL, FOLDER_SEL_ALL, NULL, FALSE, NULL);
|
||||
if (item && (item_id = folder_item_get_identifier(item)) != NULL) {
|
||||
gtk_editable_delete_text(GTK_EDITABLE(entry), 0, -1);
|
||||
gtk_editable_insert_text(GTK_EDITABLE(entry), item_id, strlen(item_id), &newpos);
|
||||
g_free(item_id);
|
||||
}
|
||||
}
|
||||
|
||||
static GtkWidget *date_format_create(GtkButton *button, void *data)
|
||||
{
|
||||
static GtkWidget *datefmt_win = NULL;
|
||||
|
@ -339,6 +378,9 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
|
|||
GtkWidget *entry_datefmt;
|
||||
GtkWidget *button_dispitem;
|
||||
GtkWidget *checkbtn_reopen_last_folder;
|
||||
GtkWidget *checkbtn_startup_folder;
|
||||
GtkWidget *startup_folder_entry;
|
||||
GtkWidget *startup_folder_select;
|
||||
GtkWidget *checkbtn_always_show_msg;
|
||||
GtkWidget *checkbtn_show_on_folder_open;
|
||||
GtkWidget *checkbtn_show_on_search_results;
|
||||
|
@ -414,6 +456,31 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
|
|||
(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);
|
||||
|
||||
PACK_CHECK_BUTTON
|
||||
(vbox1, checkbtn_run_processingrules_mark_all_read,
|
||||
_("Run processing rules before marking all messages in a folder as read or unread"));
|
||||
|
@ -681,6 +748,8 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
|
|||
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->checkbtn_always_show_msg = checkbtn_always_show_msg;
|
||||
prefs_summaries->checkbtn_show_on_folder_open = checkbtn_show_on_folder_open;
|
||||
|
@ -731,6 +800,10 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
|
|||
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),
|
||||
prefs_common.startup_folder?prefs_common.startup_folder:"");
|
||||
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_always_show_msg),
|
||||
prefs_common.always_show_msg);
|
||||
|
@ -809,6 +882,10 @@ static void prefs_summaries_save(PrefsPage *_page)
|
|||
|
||||
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(
|
||||
GTK_EDITABLE(page->startup_folder_entry), 0, -1);
|
||||
|
||||
prefs_common.always_show_msg = gtk_toggle_button_get_active(
|
||||
GTK_TOGGLE_BUTTON(page->checkbtn_always_show_msg));
|
||||
|
|
Loading…
Reference in a new issue