static void spamassassin_whitelist_ab_select_cb(GtkWidget *widget, gpointer data)
{
struct SpamAssassinPage *page = (struct SpamAssassinPage *) 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 foldersel_cb(GtkWidget *widget, gpointer data)
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(page->save_folder), 0, -1);
gtk_editable_insert_text(GTK_EDITABLE(page->save_folder), item_id, strlen(item_id), &newpos);
{
struct SpamAssassinPage *page = (struct SpamAssassinPage *) data;
struct Transport *transport;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ g_return_if_fail(gtk_combo_box_get_active_iter(
+ GTK_COMBO_BOX(page->transport_optmenu), &iter));
+
+ model = gtk_combo_box_get_model(GTK_COMBO_BOX(page->transport_optmenu));
+ gtk_tree_model_get(model, &iter, 1, &transport, -1);
- transport = (struct Transport *) g_object_get_data(G_OBJECT(menuitem), MENU_VAL_ID);
show_transport(page, transport);
}
GtkWidget *transport_label;
GtkWidget *transport_optmenu;
- GtkWidget *transport_menu;
GtkWidget *user_label;
GtkWidget *user_entry;
GtkWidget *mark_as_read_checkbtn;
GtkTooltips *tooltips;
+
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
+ GtkTreeIter iter;
tooltips = gtk_tooltips_new();
gtk_label_set_justify(GTK_LABEL(transport_label), GTK_JUSTIFY_RIGHT);
gtk_misc_set_alignment(GTK_MISC(transport_label), 1, 0.5);
- transport_optmenu = gtk_option_menu_new();
+ store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER);
+ transport_optmenu = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(transport_optmenu),
+ renderer, TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(transport_optmenu),
+ renderer, "text", 0, NULL);
gtk_widget_show(transport_optmenu);
gtk_table_attach (GTK_TABLE (table_transport), transport_optmenu, 1, 2, 0, 1,
(GtkAttachOptions) (GTK_EXPAND | GTK_FILL),
(GtkAttachOptions) (0), 0, 0);
- transport_menu = gtk_menu_new();
user_label = gtk_label_new(_("User"));
gtk_widget_show(user_label);
gtk_entry_set_text(GTK_ENTRY(spamd_hostname_entry), config->hostname);
if (config->socket != NULL)
gtk_entry_set_text(GTK_ENTRY(spamd_socket_entry), config->socket);
- if (config->whitelist_ab_folder != NULL)
- gtk_entry_set_text(GTK_ENTRY(GTK_BIN(whitelist_ab_folder_combo)->child),
- config->whitelist_ab_folder);
+ 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);
+ }
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spamd_port_spinbtn), (float) config->port);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(max_size_spinbtn), (float) config->max_size);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(timeout_spinbtn), (float) config->timeout);
active = 0;
for (i = 0; i < (sizeof(transports) / sizeof(struct Transport)); i++) {
- GtkWidget *menuitem;
-
- menuitem = gtk_menu_item_new_with_label(gettext(transports[i].name));
- g_object_set_data(G_OBJECT(menuitem), MENU_VAL_ID, &transports[i]);
- g_signal_connect(G_OBJECT(menuitem), "activate",
- G_CALLBACK(transport_sel_cb), page);
- gtk_widget_show(menuitem);
- gtk_menu_append(GTK_MENU(transport_menu), menuitem);
+
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, gettext(transports[i].name),
+ 1, &transports[i], -1);
if (config->transport == transports[i].transport) {
show_transport(page, &transports[i]);
config->enable);
}
}
- gtk_option_menu_set_menu(GTK_OPTION_MENU(transport_optmenu), transport_menu);
- gtk_option_menu_set_history(GTK_OPTION_MENU(transport_optmenu), active);
+ gtk_combo_box_set_active(GTK_COMBO_BOX(transport_optmenu), active);
+ g_signal_connect(G_OBJECT(transport_optmenu), "changed",
+ G_CALLBACK(transport_sel_cb), page);
page->page.widget = vbox1;
}
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");
+ }
if (config->process_emails) {
spamassassin_register_hook();