GtkWidget *bogopath;
GtkWidget *whitelist_ab;
GtkWidget *whitelist_ab_folder_combo;
+ GtkWidget *learn_from_whitelist_chkbtn;
GtkWidget *mark_as_read;
};
gchar *item_id;
gint newpos = 0;
- item = foldersel_folder_sel(NULL, FOLDER_SEL_MOVE, NULL);
+ item = foldersel_folder_sel(NULL, FOLDER_SEL_MOVE, NULL, FALSE);
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);
static void bogofilter_whitelist_ab_select_cb(GtkWidget *widget, gpointer data)
{
struct BogofilterPage *page = (struct BogofilterPage *) data;
- gchar *folderpath = NULL;
- gboolean ret = FALSE;
-
- folderpath = (gchar *) gtk_entry_get_text(GTK_ENTRY(GTK_BIN(page->whitelist_ab_folder_combo)->child));
- ret = addressbook_folder_selection(&folderpath);
- if ( ret != FALSE && folderpath != NULL)
- gtk_entry_set_text(GTK_ENTRY(GTK_BIN(page->whitelist_ab_folder_combo)->child), folderpath);
+ const gchar *folderpath = NULL;
+ gchar *new_path = NULL;
+
+ folderpath = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(page->whitelist_ab_folder_combo)->child));
+ new_path = addressbook_folder_selection(folderpath);
+ if (new_path) {
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(page->whitelist_ab_folder_combo)->child), new_path);
+ g_free(new_path);
+ }
}
static void bogofilter_create_widget_func(PrefsPage * _page,
GtkWidget *insert_header_checkbtn;
GtkWidget *whitelist_ab_checkbtn;
+ GtkWidget *learn_from_whitelist_chkbtn;
GtkWidget *bogopath_label;
GtkWidget *bogopath_entry;
_("Click this button to select a book or folder in the address book"),
NULL);
+ learn_from_whitelist_chkbtn = gtk_check_button_new_with_label(_("Learn whitelisted emails as ham"));
+ gtk_tooltips_set_tip(tooltips, learn_from_whitelist_chkbtn,
+ _("If Bogofilter thought an email was spam or unsure, but it was whitelisted, "
+ "learn it as ham."), NULL);
+ gtk_widget_show(learn_from_whitelist_chkbtn);
+ gtk_box_pack_start (GTK_BOX (vbox2), learn_from_whitelist_chkbtn, TRUE, TRUE, 0);
+
hbox_bogopath = gtk_hbox_new(FALSE, 8);
gtk_widget_show(hbox_bogopath);
gtk_box_pack_start (GTK_BOX (vbox2), hbox_bogopath, FALSE, FALSE, 0);
SET_TOGGLE_SENSITIVITY(save_unsure_checkbtn, save_unsure_folder_select);
SET_TOGGLE_SENSITIVITY(whitelist_ab_checkbtn, whitelist_ab_folder_combo);
SET_TOGGLE_SENSITIVITY(whitelist_ab_checkbtn, whitelist_ab_select_btn);
+ SET_TOGGLE_SENSITIVITY(whitelist_ab_checkbtn, learn_from_whitelist_chkbtn);
SET_TOGGLE_SENSITIVITY(save_spam_checkbtn, mark_as_read_checkbtn);
config = bogofilter_get_config();
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(save_unsure_checkbtn), config->save_unsure);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(insert_header_checkbtn), config->insert_header);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(whitelist_ab_checkbtn), config->whitelist_ab);
- if (config->whitelist_ab_folder != NULL)
- gtk_entry_set_text(GTK_ENTRY(GTK_BIN(whitelist_ab_folder_combo)->child),
- config->whitelist_ab_folder);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(learn_from_whitelist_chkbtn), config->learn_from_whitelist);
+ if (config->whitelist_ab_folder != NULL) {
+ /* translate "Any" (stored UNtranslated) */
+ if (strcasecmp(config->whitelist_ab_folder, "Any") == 0)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(whitelist_ab_folder_combo)->child),
+ config->whitelist_ab_folder);
+ else
+ /* backward compatibility (when translated "Any" was stored) */
+ if (g_utf8_collate(config->whitelist_ab_folder, _("Any")) == 0)
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(whitelist_ab_folder_combo)->child),
+ config->whitelist_ab_folder);
+ else
+ gtk_entry_set_text(GTK_ENTRY(GTK_BIN(whitelist_ab_folder_combo)->child),
+ config->whitelist_ab_folder);
+ }
if (config->save_folder != NULL)
gtk_entry_set_text(GTK_ENTRY(save_spam_folder_entry), config->save_folder);
if (config->save_unsure_folder != NULL)
page->insert_header = insert_header_checkbtn;
page->whitelist_ab = whitelist_ab_checkbtn;
page->whitelist_ab_folder_combo = whitelist_ab_folder_combo;
+ page->learn_from_whitelist_chkbtn = learn_from_whitelist_chkbtn;
page->bogopath = bogopath_entry;
page->mark_as_read = mark_as_read_checkbtn;
g_free(config->whitelist_ab_folder);
config->whitelist_ab_folder = gtk_editable_get_chars(
GTK_EDITABLE(GTK_BIN(page->whitelist_ab_folder_combo)->child), 0, -1);
+ /* store UNtranslated "Any" */
+ if (g_utf8_collate(config->whitelist_ab_folder, _("Any")) == 0) {
+ g_free(config->whitelist_ab_folder);
+ config->whitelist_ab_folder = g_strdup("Any");
+ }
+
+ /* learn_from_whitelist_chkbtn */
+ config->learn_from_whitelist = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->learn_from_whitelist_chkbtn));
/* bogopath */
g_free(config->bogopath);