+ if( data->showtemplate )
+ {
+ deftransaction_template_popover_populate (data, GLOBALS->arc_list);
+ gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(data->modelfilter));
+ }
+}
+
+static GtkWidget *
+create_popover (GtkWidget *parent,
+ GtkWidget *child,
+ GtkPositionType pos)
+{
+ GtkWidget *popover;
+
+ popover = gtk_popover_new (parent);
+ gtk_popover_set_position (GTK_POPOVER (popover), pos);
+ gtk_container_add (GTK_CONTAINER (popover), child);
+ gtk_container_set_border_width (GTK_CONTAINER (popover), SPACING_SMALL);
+ gtk_widget_show (child);
+
+/* gtk_widget_set_margin_start (popover, SPACING_MEDIUM);
+ gtk_widget_set_margin_end (popover, SPACING_MEDIUM);
+ gtk_widget_set_margin_top (popover, SPACING_MEDIUM);
+ gtk_widget_set_margin_bottom (popover, SPACING_MEDIUM);*/
+
+ return popover;
+}
+
+
+static void deftransaction_template_popover_onRowActivated(GtkTreeView *treeview,
+ GtkTreePath *path,
+ GtkTreeViewColumn *col,
+ gpointer userdata)
+{
+struct deftransaction_data *data;
+GtkTreeModel *model;
+GtkTreeIter iter;
+
+ data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(treeview), GTK_TYPE_WINDOW)), "inst_data");
+ model = gtk_tree_view_get_model(treeview);
+
+ if (gtk_tree_model_get_iter(model, &iter, path))
+ {
+ Archive *arc;
+ Transaction *txn;
+
+ gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, LST_DSPTPL_DATAS, &arc, -1);
+
+ txn = data->ope;
+ da_transaction_init_from_template(txn, arc);
+ if( da_splits_clone(arc->splits, txn->splits) > 0)
+ txn->flags |= OF_SPLIT; //Flag that Splits are active
+
+ DB( g_print(" calls\n") );
+
+ deftransaction_set(GTK_WIDGET(treeview), NULL);
+ deftransaction_paymode(GTK_WIDGET(treeview), NULL);
+ deftransaction_update(GTK_WIDGET(treeview), NULL);
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(data->MB_template), FALSE);
+ }
+}
+
+
+
+static void deftransaction_template_popover_populate(struct deftransaction_data *data, GList *srclist)
+{
+GtkTreeModel *model;
+GtkTreeIter iter;
+GList *list;
+
+ //insert all glist item into treeview
+ model = data->model;
+ gtk_list_store_clear(GTK_LIST_STORE(model));
+
+ list = g_list_first(srclist);
+ while (list != NULL)
+ {
+ Archive *entry = list->data;
+
+ 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->wording,
+ -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);