gint plugin_init(gchar **error) { gchar *rcpath; hook_id = HOOK_NONE; if (!check_plugin_version(MAKE_NUMERIC_VERSION(2,9,2,72), VERSION_NUMERIC, PLUGIN_NAME, error)) return -1; prefs_set_default(param); rcpath = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S, COMMON_RC, NULL); prefs_read_config(param, "Bogofilter", rcpath, NULL); g_free(rcpath); bogofilter_gtk_init(); debug_print("Bogofilter plugin loaded\n"); #ifdef USE_PTHREAD bogofilter_start_thread(); #endif if (config.process_emails) { bogofilter_register_hook(); } procmsg_register_spam_learner(bogofilter_learn); procmsg_spam_set_folder(config.save_folder, bogofilter_get_spam_folder); return 0; }
static void bogofilter_save_func(PrefsPage *_page) { struct BogofilterPage *page = (struct BogofilterPage *) _page; BogofilterConfig *config; debug_print("Saving Bogofilter Page\n"); config = bogofilter_get_config(); /* process_emails */ config->process_emails = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->process_emails)); /* receive_spam */ config->receive_spam = gtk_combo_box_get_active(GTK_COMBO_BOX(page->receive_spam)); /* save_folder */ g_free(config->save_folder); config->save_folder = gtk_editable_get_chars(GTK_EDITABLE(page->save_folder), 0, -1); /* save_unsure */ config->save_unsure = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->save_unsure)); /* save_unsure_folder */ g_free(config->save_unsure_folder); config->save_unsure_folder = gtk_editable_get_chars(GTK_EDITABLE(page->save_unsure_folder), 0, -1); /* insert_header */ config->insert_header = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->insert_header)); /* whitelist_ab */ config->whitelist_ab = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->whitelist_ab)); g_free(config->whitelist_ab_folder); config->whitelist_ab_folder = gtk_editable_get_chars( GTK_EDITABLE(gtk_bin_get_child(GTK_BIN((page->whitelist_ab_folder_combo)))), 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); config->bogopath = gtk_editable_get_chars(GTK_EDITABLE(page->bogopath), 0, -1); /* max_size */ config->max_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(page->max_size)); /* mark_as_read */ config->mark_as_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->mark_as_read)); if (config->process_emails) { bogofilter_register_hook(); } else { bogofilter_unregister_hook(); } procmsg_register_spam_learner(bogofilter_learn); procmsg_spam_set_folder(config->save_folder, bogofilter_get_spam_folder); bogofilter_save_config(); }