+ gtk_list_store_append (GTK_LIST_STORE(model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE(model), &iter,
+ LST_DSPTPL_DATAS, entry,
+ LST_DSPTPL_NAME, entry->memo,
+ -1);
+
+ //DB( g_print(" populate_treeview: %d %08x\n", i, list->data) );
+
+ list = g_list_next(list);
+ }
+}
+
+
+static void
+deftransaction_template_popover_refilter (GtkWidget *widget, gpointer user_data)
+{
+struct deftransaction_data *data = user_data;
+
+ DB( g_print(" text changed\n") );
+
+ gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(data->modelfilter));
+}
+
+
+static gboolean deftransaction_template_popover_func_visible (GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
+{
+struct deftransaction_data *data = user_data;
+Archive *entry;
+gchar *str;
+gboolean visible = TRUE;
+gboolean showsched;
+
+ showsched = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(data->CM_showsched));
+
+ gchar *needle = g_ascii_strdown(gtk_entry_get_text(GTK_ENTRY(data->ST_search)), -1);
+
+ gtk_tree_model_get (model, iter,
+ LST_DSPTPL_DATAS, &entry,
+ LST_DSPTPL_NAME, &str, -1);
+
+ if( entry )
+ {
+ if( (entry->flags & OF_AUTO) && !showsched)
+ {
+ visible = FALSE;
+ }
+ else
+ {
+ gchar *haystack = g_ascii_strdown(str, -1);
+
+ if (str && g_strrstr (haystack, needle) == NULL )
+ {
+ visible = FALSE;
+ }
+
+ DB( g_print("filter: '%s' '%s' %d\n", str, needle, visible) );
+
+ g_free(haystack);
+ }
+ }
+ g_free(needle);
+ g_free (str);
+
+ return visible;
+}
+
+
+static GtkWidget *deftransaction_template_popover_create(struct deftransaction_data *data)
+{
+GtkListStore *store;
+GtkCellRenderer *renderer;
+GtkTreeViewColumn *column;
+GtkWidget *box, *widget, *scrollwin, *treeview;
+
+ box = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
+
+ widget = make_search(NULL);
+ data->ST_search = widget;
+ gtk_box_pack_start (GTK_BOX(box), widget, FALSE, FALSE, 0);
+
+
+ scrollwin = gtk_scrolled_window_new(NULL,NULL);
+ gtk_box_pack_start (GTK_BOX(box), scrollwin, TRUE, TRUE, 0);
+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ store = gtk_list_store_new(NUM_LST_DSPTPL,
+ G_TYPE_POINTER,
+ G_TYPE_STRING);
+
+ data->model = GTK_TREE_MODEL(store);
+
+ data->modelfilter = GTK_TREE_MODEL_FILTER(gtk_tree_model_filter_new(GTK_TREE_MODEL(data->model), NULL));
+ gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(data->modelfilter), deftransaction_template_popover_func_visible, data, NULL);
+
+
+ treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(data->modelfilter));
+ data->LV_arc = treeview;
+ gtk_container_add(GTK_CONTAINER(scrollwin), treeview);
+
+ gtk_widget_grab_focus(treeview);
+
+ /* column for bug numbers */
+ renderer = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes (NULL,
+ renderer,
+ "text",
+ LST_DSPTPL_NAME,
+ NULL);
+ //gtk_tree_view_column_set_resizable (column, TRUE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(treeview), FALSE);
+
+ widget = gtk_check_button_new_with_mnemonic(_("Show _scheduled"));
+ data->CM_showsched = widget;
+ gtk_box_pack_start (GTK_BOX(box), widget, FALSE, FALSE, 0);
+
+ gtk_widget_show_all (box);
+
+ //signals
+ g_signal_connect (data->CM_showsched, "toggled", G_CALLBACK (deftransaction_template_popover_refilter), data);
+ g_signal_connect (data->ST_search, "search-changed", G_CALLBACK (deftransaction_template_popover_refilter), data);
+
+ return box;