]> Dogcows Code - chaz/homebank/blobdiff - src/ui-filter.c
import homebank-5.1.7
[chaz/homebank] / src / ui-filter.c
index 6a8664543701f7ef30a19555649fad8a2ee4841b..5279f436ca5b51f312598c692d3f9bdadf8fa155 100644 (file)
@@ -1,5 +1,5 @@
 /*  HomeBank -- Free, easy, personal accounting for everyone.
- *  Copyright (C) 1995-2017 Maxime DOYEN
+ *  Copyright (C) 1995-2018 Maxime DOYEN
  *
  *  This file is part of HomeBank.
  *
@@ -106,47 +106,271 @@ gchar *CYA_SELECT[] =
 
 /* = = = = = = = = = = = = = = = = = = = = */
 
-/*
-**
-*/
-static void ui_flt_manage_acc_select(GtkWidget *widget, gpointer user_data)
+
+static void ui_flt_panel_category_get(struct ui_flt_manage_data *data)
+{
+gint i;
+
+       DB( g_print("(ui_flt_panel_category) get\n") );
+
+       if(data->filter !=NULL)
+       {
+       GtkTreeModel *model;
+       //GtkTreeSelection *selection;
+       GtkTreeIter     iter, child;
+       gint n_child;
+       gboolean valid;
+       gboolean toggled;
+
+
+       // category
+               DB( g_print(" category\n") );
+
+               model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_cat));
+               //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
+               i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
+               while (valid)
+               {
+               Category *catitem;
+
+                       gtk_tree_model_get (model, &iter,
+                               LST_DEFCAT_TOGGLE, &toggled,
+                               LST_DEFCAT_DATAS, &catitem,
+                               -1);
+
+                       //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
+                       //data->filter->cat[i] = toggled;
+                       catitem->filter = toggled;
+
+                       n_child = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model), &iter);
+                       gtk_tree_model_iter_children (GTK_TREE_MODEL(model), &child, &iter);
+                       while(n_child > 0)
+                       {
+                               i++;
+
+                               gtk_tree_model_get (model, &child,
+                                       LST_DEFCAT_TOGGLE, &toggled,
+                                       LST_DEFCAT_DATAS, &catitem,
+                                       -1);
+
+
+                               //data->filter->cat[i] = toggled;
+                               //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &child);
+                               catitem->filter = toggled;
+
+                               n_child--;
+                               gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child);
+                       }
+
+                       /* Make iter point to the next row in the list store */
+                       i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
+               }
+
+       }
+}
+
+
+static void ui_flt_panel_category_set(struct ui_flt_manage_data *data)
+{
+
+       DB( g_print("(ui_flt_panel_category) set\n") );
+
+       if(data->filter != NULL)
+       {
+       GtkTreeModel *model;
+       //GtkTreeSelection *selection;
+       GtkTreeIter     iter, child;
+
+       gint n_child;
+       gboolean valid;
+       gint i;
+
+
+       // category
+               DB( g_print(" category\n") );
+
+               model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_cat));
+               //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
+               i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
+               while (valid)
+               {
+               Category *catitem;
+
+                       gtk_tree_model_get (model, &iter,
+                               LST_DEFCAT_DATAS, &catitem,
+                               -1);
+
+                       if(catitem->filter == TRUE)
+                               gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, TRUE, -1);
+
+                       n_child = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model), &iter);
+                       gtk_tree_model_iter_children (GTK_TREE_MODEL(model), &child, &iter);
+                       while(n_child > 0)
+                       {
+                               i++;
+
+                               gtk_tree_model_get (model, &child,
+                                       LST_DEFCAT_DATAS, &catitem,
+                                       -1);
+
+                               if(catitem->filter == TRUE)
+                                       gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, TRUE, -1);
+
+                               n_child--;
+                               gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child);
+                       }
+
+                       /* Make iter point to the next row in the list store */
+                       i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
+               }
+
+
+       }
+}
+
+
+
+static void ui_flt_manage_cat_select(GtkWidget *widget, gpointer user_data)
 {
 struct ui_flt_manage_data *data;
 gint select = GPOINTER_TO_INT(user_data);
 GtkTreeModel *model;
-GtkTreeIter    iter;
+GtkTreeIter    iter, child;
 gboolean valid;
+gint n_child;
 gboolean toggle;
 
-       DB( g_print("(ui_flt_manage) acc select\n") );
+       DB( g_print("(ui_flt_manage) pay select\n") );
 
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
 
-       model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_acc));
+       model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_cat));
        valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
        while (valid)
        {
                switch(select)
                {
                        case BUTTON_ALL:
-                               gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, TRUE, -1);
+                               gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, TRUE, -1);
                                break;
                        case BUTTON_NONE:
-                               gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, FALSE, -1);
+                               gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, FALSE, -1);
                                break;
                        case BUTTON_INVERT:
-                                       gtk_tree_model_get (model, &iter, LST_DEFACC_TOGGLE, &toggle, -1);
+                                       gtk_tree_model_get (model, &iter, LST_DEFCAT_TOGGLE, &toggle, -1);
                                        toggle ^= 1;
-                                       gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, toggle, -1);
+                                       gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, toggle, -1);
                                break;
                }
+
+               n_child = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model), &iter);
+               gtk_tree_model_iter_children (GTK_TREE_MODEL(model), &child, &iter);
+               while(n_child > 0)
+               {
+
+                       switch(select)
+                       {
+                               case BUTTON_ALL:
+                                       gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, TRUE, -1);
+                                       break;
+                               case BUTTON_NONE:
+                                       gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, FALSE, -1);
+                                       break;
+                               case BUTTON_INVERT:
+                                               gtk_tree_model_get (model, &child, LST_DEFCAT_TOGGLE, &toggle, -1);
+                                               toggle ^= 1;
+                                               gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, toggle, -1);
+                                       break;
+                       }
+
+                       n_child--;
+                       gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child);
+               }
+
                valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
        }
+
 }
 
-/*
-**
-*/
+
+
+static gboolean
+ui_flt_panel_category_activate_link (GtkWidget   *label,
+               const gchar *uri,
+               gpointer     data)
+{
+       DB( g_print(" comboboxlink '%s' \n", uri) );
+
+       if (g_strcmp0 (uri, "all") == 0)        
+       {
+               ui_flt_manage_cat_select(label, GINT_TO_POINTER(BUTTON_ALL) );
+       }
+       else
+       if (g_strcmp0 (uri, "non") == 0)        
+       {
+               ui_flt_manage_cat_select(label, GINT_TO_POINTER(BUTTON_NONE) );
+       }
+       else
+       if (g_strcmp0 (uri, "inv") == 0)        
+       {
+               ui_flt_manage_cat_select(label, GINT_TO_POINTER(BUTTON_INVERT) );
+       }
+
+    return TRUE;
+}
+
+
+static GtkWidget *
+ui_flt_panel_category_new (struct ui_flt_manage_data *data)
+{
+GtkWidget *scrollwin, *hbox, *vbox, *label;
+
+       vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
+
+       label = make_label (_("Categories"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
+       gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);    
+
+       hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
+       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+
+       label = make_label (_("Select:"), 0, 0.5);
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+       label = make_clicklabel("all", _("All"));
+       data->BT_cat[BUTTON_ALL] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link), NULL);
+       
+       label = make_clicklabel("non", _("None"));
+       data->BT_cat[BUTTON_NONE] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link), NULL);
+
+       label = make_clicklabel("inv", _("Invert"));
+       data->BT_cat[BUTTON_INVERT] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link), NULL);
+
+
+       scrollwin = gtk_scrolled_window_new(NULL,NULL);
+       gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
+
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
+       //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
+
+       data->LV_cat = (GtkWidget *)ui_cat_listview_new(TRUE, FALSE);
+       gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_cat);
+
+
+       return(vbox);
+}
+
+
+/* = = = = = = = = = = = = = = = = */
+
+
 static void ui_flt_manage_pay_select(GtkWidget *widget, gpointer user_data)
 {
 struct ui_flt_manage_data *data;
@@ -182,71 +406,201 @@ gboolean toggle;
        }
 }
 
-/*
-**
-*/
-static void ui_flt_manage_cat_select(GtkWidget *widget, gpointer user_data)
+
+
+static gboolean
+ui_flt_panel_payee_activate_link (GtkWidget   *label,
+               const gchar *uri,
+               gpointer     data)
+{
+       DB( g_print(" comboboxlink '%s' \n", uri) );
+
+       if (g_strcmp0 (uri, "all") == 0)        
+       {
+               ui_flt_manage_pay_select(label, GINT_TO_POINTER(BUTTON_ALL) );
+       }
+       else
+       if (g_strcmp0 (uri, "non") == 0)        
+       {
+               ui_flt_manage_pay_select(label, GINT_TO_POINTER(BUTTON_NONE) );
+       }
+       else
+       if (g_strcmp0 (uri, "inv") == 0)        
+       {
+               ui_flt_manage_pay_select(label, GINT_TO_POINTER(BUTTON_INVERT) );
+       }
+
+    return TRUE;
+}
+
+
+static GtkWidget *
+ui_flt_panel_payee_new (struct ui_flt_manage_data *data)
+{
+GtkWidget *scrollwin, *hbox, *vbox, *label;
+
+       vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
+
+       label = make_label (_("Payees"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
+       gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);    
+
+       hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
+       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+
+       label = make_label (_("Select:"), 0, 0.5);
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+       label = make_clicklabel("all", _("All"));
+       data->BT_pay[BUTTON_ALL] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link), NULL);
+       
+       label = make_clicklabel("non", _("None"));
+       data->BT_pay[BUTTON_NONE] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link), NULL);
+
+       label = make_clicklabel("inv", _("Invert"));
+       data->BT_pay[BUTTON_INVERT] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link), NULL);
+
+       scrollwin = gtk_scrolled_window_new(NULL,NULL);
+       gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
+
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
+       //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
+
+       data->LV_pay = (GtkWidget *)ui_pay_listview_new(TRUE, FALSE);
+       gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_pay);
+
+       return(vbox);
+}
+
+
+
+
+
+
+
+/* = = = = = = = = = = = = = = = = */
+
+static void ui_flt_manage_acc_select(GtkWidget *widget, gpointer user_data)
 {
 struct ui_flt_manage_data *data;
 gint select = GPOINTER_TO_INT(user_data);
 GtkTreeModel *model;
-GtkTreeIter    iter, child;
+GtkTreeIter    iter;
 gboolean valid;
-gint n_child;
 gboolean toggle;
 
-       DB( g_print("(ui_flt_manage) pay select\n") );
+       DB( g_print("(ui_flt_manage) acc select\n") );
 
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
 
-       model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_cat));
+       model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_acc));
        valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
        while (valid)
        {
                switch(select)
                {
                        case BUTTON_ALL:
-                               gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, TRUE, -1);
+                               gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, TRUE, -1);
                                break;
                        case BUTTON_NONE:
-                               gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, FALSE, -1);
+                               gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, FALSE, -1);
                                break;
                        case BUTTON_INVERT:
-                                       gtk_tree_model_get (model, &iter, LST_DEFCAT_TOGGLE, &toggle, -1);
+                                       gtk_tree_model_get (model, &iter, LST_DEFACC_TOGGLE, &toggle, -1);
                                        toggle ^= 1;
-                                       gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, toggle, -1);
+                                       gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, toggle, -1);
                                break;
                }
+               valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
+       }
+}
 
-               n_child = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model), &iter);
-               gtk_tree_model_iter_children (GTK_TREE_MODEL(model), &child, &iter);
-               while(n_child > 0)
-               {
 
-                       switch(select)
-                       {
-                               case BUTTON_ALL:
-                                       gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, TRUE, -1);
-                                       break;
-                               case BUTTON_NONE:
-                                       gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, FALSE, -1);
-                                       break;
-                               case BUTTON_INVERT:
-                                               gtk_tree_model_get (model, &child, LST_DEFCAT_TOGGLE, &toggle, -1);
-                                               toggle ^= 1;
-                                               gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, toggle, -1);
-                                       break;
-                       }
+static gboolean
+ui_flt_panel_account_activate_link (GtkWidget   *label,
+               const gchar *uri,
+               gpointer     data)
+{
+       DB( g_print(" comboboxlink '%s' \n", uri) );
+
+       if (g_strcmp0 (uri, "all") == 0)        
+       {
+               ui_flt_manage_acc_select(label, GINT_TO_POINTER(BUTTON_ALL) );
+       }
+       else
+       if (g_strcmp0 (uri, "non") == 0)        
+       {
+               ui_flt_manage_acc_select(label, GINT_TO_POINTER(BUTTON_NONE) );
+       }
+       else
+       if (g_strcmp0 (uri, "inv") == 0)        
+       {
+               ui_flt_manage_acc_select(label, GINT_TO_POINTER(BUTTON_INVERT) );
+       }
+
+    return TRUE;
+}
+
+static GtkWidget *
+ui_flt_panel_account_new (struct ui_flt_manage_data *data)
+{
+GtkWidget *scrollwin, *hbox, *vbox, *label;
+
+       vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
+
+       label = make_label (_("Accounts"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
+       gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);    
+
+       hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
+       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+
+       label = make_label (_("Select:"), 0, 0.5);
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+
+       label = make_clicklabel("all", _("All"));
+       data->BT_acc[BUTTON_ALL] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link), NULL);
+       
+       label = make_clicklabel("non", _("None"));
+       data->BT_acc[BUTTON_NONE] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link), NULL);
+
+       label = make_clicklabel("inv", _("Invert"));
+       data->BT_acc[BUTTON_INVERT] = label;
+       gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
+       g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link), NULL);
 
-                       n_child--;
-                       gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child);
-               }
+       scrollwin = gtk_scrolled_window_new(NULL,NULL);
+       gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
 
-               valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
-       }
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
+       //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
+
+       data->LV_acc = (GtkWidget *)ui_acc_listview_new(TRUE);
+       gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_acc);
 
+       return(vbox);
 }
 
+/* = = = = = = = = = = = = = = = = */
+
+
+
+
+
+
+
 /*
 **
 */
@@ -284,7 +638,7 @@ gboolean sensitive;
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_TEXT]));
        sensitive = active == 0 ? FALSE : TRUE;
        gtk_widget_set_sensitive(data->CM_exact, sensitive);
-       gtk_widget_set_sensitive(data->ST_wording, sensitive);
+       gtk_widget_set_sensitive(data->ST_memo, sensitive);
        gtk_widget_set_sensitive(data->ST_info, sensitive);
        gtk_widget_set_sensitive(data->ST_tag, sensitive);
 
@@ -347,8 +701,8 @@ gchar *txt;
        {
        GtkTreeModel *model;
        //GtkTreeSelection *selection;
-       GtkTreeIter     iter, child;
-       gint n_child;
+       GtkTreeIter     iter;
+
        gboolean valid;
        gboolean toggled;
 
@@ -383,19 +737,19 @@ gchar *txt;
                data->filter->minamount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_minamount));
                data->filter->maxamount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_maxamount));
 
-       //text:wording
+       //text:memo
                data->filter->exact  = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_exact));
                //free any previous string
-               if(     data->filter->wording )
+               if(     data->filter->memo )
                {
-                       g_free(data->filter->wording);
-                       data->filter->wording = NULL;
+                       g_free(data->filter->memo);
+                       data->filter->memo = NULL;
                }
-               txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_wording));
+               txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_memo));
 
                if (txt && *txt)        // ignore if entry is empty
                {
-                       data->filter->wording = g_strdup(txt);
+                       data->filter->memo = g_strdup(txt);
                }
 
        //text:info
@@ -477,49 +831,11 @@ gchar *txt;
        // category
                DB( g_print(" category\n") );
 
-               model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_cat));
-               //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
-               i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
-               while (valid)
-               {
-               Category *catitem;
-
-                       gtk_tree_model_get (model, &iter,
-                               LST_DEFCAT_TOGGLE, &toggled,
-                               LST_DEFCAT_DATAS, &catitem,
-                               -1);
-
-                       //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
-                       //data->filter->cat[i] = toggled;
-                       catitem->filter = toggled;
-
-                       n_child = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model), &iter);
-                       gtk_tree_model_iter_children (GTK_TREE_MODEL(model), &child, &iter);
-                       while(n_child > 0)
-                       {
-                               i++;
-
-                               gtk_tree_model_get (model, &child,
-                                       LST_DEFCAT_TOGGLE, &toggled,
-                                       LST_DEFCAT_DATAS, &catitem,
-                                       -1);
-
-
-                               //data->filter->cat[i] = toggled;
-                               //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &child);
-                               catitem->filter = toggled;
-
-                               n_child--;
-                               gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child);
-                       }
-
-                       /* Make iter point to the next row in the list store */
-                       i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
-               }
+               ui_flt_panel_category_get(data);
 
        // active tab
-       data->filter->last_tab = gtk_notebook_get_current_page(GTK_NOTEBOOK(data->notebook));
-       DB( g_print(" page is %d\n", data->filter->last_tab) );
+       g_strlcpy(data->filter->last_tab, gtk_stack_get_visible_child_name(GTK_STACK(data->stack)), 8);
+       DB( g_print(" page is '%s'\n", data->filter->last_tab) );
        
 
        }
@@ -538,9 +854,9 @@ static void ui_flt_manage_set(struct ui_flt_manage_data *data)
        {
        GtkTreeModel *model;
        //GtkTreeSelection *selection;
-       GtkTreeIter     iter, child;
+       GtkTreeIter     iter;
        GDate *date;
-       gint n_child;
+
        gboolean valid;
        gint i;
 
@@ -586,7 +902,7 @@ static void ui_flt_manage_set(struct ui_flt_manage_data *data)
        //text
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_exact), data->filter->exact);
        gtk_entry_set_text(GTK_ENTRY(data->ST_info), (data->filter->info != NULL) ? data->filter->info : "");
-       gtk_entry_set_text(GTK_ENTRY(data->ST_wording), (data->filter->wording != NULL) ? data->filter->wording : "");
+       gtk_entry_set_text(GTK_ENTRY(data->ST_memo), (data->filter->memo != NULL) ? data->filter->memo : "");
        gtk_entry_set_text(GTK_ENTRY(data->ST_tag), (data->filter->tag != NULL) ? data->filter->tag : "");
 
        //account
@@ -639,44 +955,7 @@ static void ui_flt_manage_set(struct ui_flt_manage_data *data)
        // category
                DB( g_print(" category\n") );
 
-               model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_cat));
-               //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
-               i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
-               while (valid)
-               {
-               Category *catitem;
-
-                       gtk_tree_model_get (model, &iter,
-                               LST_DEFCAT_DATAS, &catitem,
-                               -1);
-
-                       if(catitem->filter == TRUE)
-                               gtk_tree_store_set (GTK_TREE_STORE (model), &iter, LST_DEFCAT_TOGGLE, TRUE, -1);
-
-                       n_child = gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model), &iter);
-                       gtk_tree_model_iter_children (GTK_TREE_MODEL(model), &child, &iter);
-                       while(n_child > 0)
-                       {
-                               i++;
-
-                               gtk_tree_model_get (model, &child,
-                                       LST_DEFCAT_DATAS, &catitem,
-                                       -1);
-
-                               if(catitem->filter == TRUE)
-                                       gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, TRUE, -1);
-
-                               n_child--;
-                               gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child);
-                       }
-
-                       /* Make iter point to the next row in the list store */
-                       i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
-               }
-
-       // active tab
-       gtk_notebook_set_current_page(GTK_NOTEBOOK(data->notebook), data->filter->last_tab);
-       DB( g_print(" set page %d\n", data->filter->last_tab) );
+               ui_flt_panel_category_set(data);
 
        }
 }
@@ -734,12 +1013,14 @@ static void ui_flt_manage_setup(struct ui_flt_manage_data *data)
        }
 }
 
-/*
-**
-*/
+
+
+
+
+
 static GtkWidget *ui_flt_manage_page_category (struct ui_flt_manage_data *data)
 {
-GtkWidget *container, *scrollwin, *hbox, *vbox, *label, *widget;
+GtkWidget *container, *panel, *hbox, *label;
 
        container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
        gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM);
@@ -752,43 +1033,16 @@ GtkWidget *container, *scrollwin, *hbox, *vbox, *label, *widget;
        data->CY_option[FILTER_CATEGORY] = make_nainex(label);
        gtk_box_pack_start (GTK_BOX (hbox), data->CY_option[FILTER_CATEGORY], TRUE, TRUE, 0);
 
-       hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
-       gtk_box_pack_start (GTK_BOX (container), hbox, TRUE, TRUE, 0);
-
-       scrollwin = gtk_scrolled_window_new(NULL,NULL);
-       gtk_box_pack_start (GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0);
-
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
-       //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
-
-       data->LV_cat = (GtkWidget *)ui_cat_listview_new(TRUE, FALSE);
-       gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_cat);
-
-       vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
-       gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
-
-       widget = gtk_button_new_with_label(_("All"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_cat[BUTTON_ALL] = widget;
-
-       widget = gtk_button_new_with_label(_("None"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_cat[BUTTON_NONE] = widget;
-
-       widget = gtk_button_new_with_label(_("Invert"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_cat[BUTTON_INVERT] = widget;
+       panel = ui_flt_panel_category_new(data);
+       gtk_box_pack_start (GTK_BOX (container), panel, TRUE, TRUE, 0);
 
        return(container);
 }
 
-/*
-**
-*/
+
 static GtkWidget *ui_flt_manage_page_payee (struct ui_flt_manage_data *data)
 {
-GtkWidget *container, *scrollwin, *hbox, *vbox, *label, *widget;
+GtkWidget *container, *panel, *hbox, *label;
 
        container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
        gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM);
@@ -801,33 +1055,8 @@ GtkWidget *container, *scrollwin, *hbox, *vbox, *label, *widget;
        data->CY_option[FILTER_PAYEE] = make_nainex(label);
        gtk_box_pack_start (GTK_BOX (hbox), data->CY_option[FILTER_PAYEE], TRUE, TRUE, 0);
 
-       hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
-       gtk_box_pack_start (GTK_BOX (container), hbox, TRUE, TRUE, 0);
-
-       scrollwin = gtk_scrolled_window_new(NULL,NULL);
-       gtk_box_pack_start (GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0);
-
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
-       //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
-
-       data->LV_pay = (GtkWidget *)ui_pay_listview_new(TRUE, FALSE);
-       gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_pay);
-
-       vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
-       gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
-
-       widget = gtk_button_new_with_label(_("All"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_pay[BUTTON_ALL] = widget;
-
-       widget = gtk_button_new_with_label(_("None"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_pay[BUTTON_NONE] = widget;
-
-       widget = gtk_button_new_with_label(_("Invert"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_pay[BUTTON_INVERT] = widget;
+       panel = ui_flt_panel_payee_new(data);
+       gtk_box_pack_start (GTK_BOX (container), panel, TRUE, TRUE, 0);
 
        return(container);
 }
@@ -837,7 +1066,7 @@ GtkWidget *container, *scrollwin, *hbox, *vbox, *label, *widget;
 */
 static GtkWidget *ui_flt_manage_page_account (struct ui_flt_manage_data *data)
 {
-GtkWidget *container, *scrollwin, *hbox, *vbox, *label, *widget;
+GtkWidget *container, *panel, *hbox, *label;
 
        container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
        gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM);
@@ -850,33 +1079,8 @@ GtkWidget *container, *scrollwin, *hbox, *vbox, *label, *widget;
        data->CY_option[FILTER_ACCOUNT] = make_nainex(label);
        gtk_box_pack_start (GTK_BOX (hbox), data->CY_option[FILTER_ACCOUNT], TRUE, TRUE, 0);
 
-       hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
-       gtk_box_pack_start (GTK_BOX (container), hbox, TRUE, TRUE, 0);
-
-       scrollwin = gtk_scrolled_window_new(NULL,NULL);
-       gtk_box_pack_start (GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0);
-
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
-       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
-       //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
-
-       data->LV_acc = ui_acc_listview_new(TRUE);
-       gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_acc);
-
-       vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
-       gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
-
-       widget = gtk_button_new_with_label(_("All"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_acc[BUTTON_ALL] = widget;
-
-       widget = gtk_button_new_with_label(_("None"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_acc[BUTTON_NONE] = widget;
-
-       widget = gtk_button_new_with_label(_("Invert"));
-       gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
-       data->BT_acc[BUTTON_INVERT] = widget;
+       panel = ui_flt_panel_account_new(data);
+       gtk_box_pack_start (GTK_BOX (container), panel, TRUE, TRUE, 0);
 
        return(container);
 }
@@ -933,57 +1137,51 @@ gint month, year;
 }
 
 
-
 static GtkWidget *ui_flt_manage_part_date(struct ui_flt_manage_data *data)
 {
 GtkWidget *table, *label;
 gint row;
 
-       // filter date
        table = gtk_grid_new ();
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
 
        row = 0;
-       label = make_label_group(_("Filter Date"));
+       label = make_label_widget(_("_Option:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+       data->CY_option[FILTER_DATE] = make_nainex(label);
+       gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_DATE], 2, row, 1, 1);
+
+       row++;
+       label = make_label (_("Dates"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
 
-               row++;
-               label = make_label_widget(_("_Option:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->CY_option[FILTER_DATE] = make_nainex(label);
-               gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_DATE], 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_From:"));
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->PO_mindate = gtk_date_entry_new();
-               //data->PO_mindate = gtk_entry_new();
-               //gtk_grid_attach (GTK_GRID (table), data->PO_mindate, 1, 2, row, row+1);
-               gtk_grid_attach (GTK_GRID (table), data->PO_mindate, 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_To:"));
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->PO_maxdate = gtk_date_entry_new();
-               //data->PO_maxdate = gtk_entry_new();
-               //gtk_grid_attach (GTK_GRID (table), data->PO_maxdate, 1, 2, row, row+1);
-               gtk_grid_attach (GTK_GRID (table), data->PO_maxdate, 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_Month:"));
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->CY_month = make_cycle(label, CYA_SELECT);
-               gtk_grid_attach (GTK_GRID (table), data->CY_month, 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_Year:"));
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->NB_year = make_year(label);
-               gtk_grid_attach (GTK_GRID (table), data->NB_year, 2, row, 1, 1);
-
+       row++;
+       label = make_label_widget(_("_From:"));
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->PO_mindate = gtk_date_entry_new();
+       gtk_grid_attach (GTK_GRID (table), data->PO_mindate, 1, row, 2, 1);
+
+       row++;
+       label = make_label_widget(_("_To:"));
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->PO_maxdate = gtk_date_entry_new();
+       gtk_grid_attach (GTK_GRID (table), data->PO_maxdate, 1, row, 2, 1);
+
+       row++;
+       label = make_label_widget(_("_Month:"));
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->CY_month = make_cycle(label, CYA_SELECT);
+       gtk_grid_attach (GTK_GRID (table), data->CY_month, 1, row, 2, 1);
+
+       row++;
+       label = make_label_widget(_("_Year:"));
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->NB_year = make_year(label);
+       gtk_grid_attach (GTK_GRID (table), data->NB_year, 1, row, 2, 1);
 
        return table;
 }
@@ -1000,44 +1198,43 @@ gint row;
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
 
        row = 0;
-       label = make_label_group(_("Filter Text"));
+       label = make_label_widget(_("_Option:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+       data->CY_option[FILTER_TEXT] = make_nainex(label);
+       gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_TEXT], 2, row, 1, 1);
+
+       row++;
+       label = make_label (_("Texts"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
 
-               row++;
-               label = make_label_widget(_("_Option:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-
-               //gtk_grid_attach (GTK_GRID (table), label, 0, 1, row, row+1);
-               data->CY_option[FILTER_TEXT] = make_nainex(label);
-               gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_TEXT], 2, row, 1, 1);
-
-               row++;
-               data->CM_exact = gtk_check_button_new_with_mnemonic (_("Case _sensitive"));
-               gtk_grid_attach (GTK_GRID (table), data->CM_exact, 2, row, 1, 1);
-       
-               row++;
-               label = make_label_widget(_("_Memo:"));
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->ST_wording = make_string(label);
-               gtk_widget_set_hexpand (data->ST_wording, TRUE);
-               gtk_grid_attach (GTK_GRID (table), data->ST_wording, 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_Info:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->ST_info = make_string(label);
-               gtk_widget_set_hexpand (data->ST_info, TRUE);
-               gtk_grid_attach (GTK_GRID (table), data->ST_info, 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_Tag:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->ST_tag = make_string(label);
-               gtk_widget_set_hexpand (data->ST_tag, TRUE);
-               gtk_grid_attach (GTK_GRID (table), data->ST_tag, 2, row, 1, 1);
+       row++;
+       label = make_label_widget(_("_Memo:"));
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->ST_memo = make_string(label);
+       gtk_widget_set_hexpand (data->ST_memo, TRUE);
+       gtk_grid_attach (GTK_GRID (table), data->ST_memo, 1, row, 2, 1);
+
+       row++;
+       label = make_label_widget(_("_Info:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->ST_info = make_string(label);
+       gtk_widget_set_hexpand (data->ST_info, TRUE);
+       gtk_grid_attach (GTK_GRID (table), data->ST_info, 1, row, 2, 1);
+
+       row++;
+       label = make_label_widget(_("_Tag:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->ST_tag = make_string(label);
+       gtk_widget_set_hexpand (data->ST_tag, TRUE);
+       gtk_grid_attach (GTK_GRID (table), data->ST_tag, 1, row, 2, 1);
+
+       row++;
+       data->CM_exact = gtk_check_button_new_with_mnemonic (_("Case _sensitive"));
+       gtk_grid_attach (GTK_GRID (table), data->CM_exact, 1, row, 2, 1);
 
 
        return table;
@@ -1048,41 +1245,35 @@ static GtkWidget *ui_flt_manage_part_amount(struct ui_flt_manage_data *data)
 GtkWidget *table, *label;
 gint row;
 
-
        table = gtk_grid_new ();
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
 
-       // Amount section
        row = 0;
-
-       label = make_label_group(_("Filter Amount"));
+       label = make_label_widget(_("_Option:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+       data->CY_option[FILTER_AMOUNT] = make_nainex(label);
+       gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_AMOUNT], 2, row, 1, 1);
+
+       row++;
+       label = make_label (_("Amounts"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
 
-               row++;
-               label = make_label_widget(_("_Option:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-
-               //gtk_grid_attach (GTK_GRID (table), label, 0, 1, row, row+1);
-               data->CY_option[FILTER_AMOUNT] = make_nainex(label);
-               gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_AMOUNT], 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_From:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->ST_minamount = make_amount(label);
-               gtk_grid_attach (GTK_GRID (table), data->ST_minamount, 2, row, 1, 1);
-
-               row++;
-               label = make_label_widget(_("_To:"));
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->ST_maxamount = make_amount(label);
-               gtk_grid_attach (GTK_GRID (table), data->ST_maxamount, 2, row, 1, 1);
-
+       row++;
+       label = make_label_widget(_("_From:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->ST_minamount = make_amount(label);
+       gtk_grid_attach (GTK_GRID (table), data->ST_minamount, 1, row, 2, 1);
 
+       row++;
+       label = make_label_widget(_("_To:"));
+       gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
+       data->ST_maxamount = make_amount(label);
+       gtk_grid_attach (GTK_GRID (table), data->ST_maxamount, 1, row, 2, 1);
 
        return table;
 }
@@ -1093,26 +1284,23 @@ static GtkWidget *ui_flt_manage_part_status(struct ui_flt_manage_data *data)
 GtkWidget *table, *label, *vbox, *widget;
 gint row;
 
-
-               // column 2
-
-       // filter status
        table = gtk_grid_new ();
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
 
        row = 0;
-       label = make_label_group (_("Filter Status"));
+       label = make_label_widget(_("_Option:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+       data->CY_option[FILTER_STATUS] = make_nainex(label);
+       gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_STATUS], 2, row, 1, 1);
+
+       row++;
+       label = make_label (_("Statuses"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
 
-               row++;
-               label = make_label_widget(_("_Option:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-
-               data->CY_option[FILTER_STATUS] = make_nainex(label);
-               gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_STATUS], 2, row, 1, 1);
 
                row++;
                vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
@@ -1154,105 +1342,55 @@ static GtkWidget *ui_flt_manage_part_paymode(struct ui_flt_manage_data *data)
 GtkWidget *table, *label, *table1, *image;
 gint i, row;
 
-       // Filter Payment
        table = gtk_grid_new ();
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
 
-
        row = 0;
-       label = make_label_group(_("Filter Payment"));
+       label = make_label_widget(_("_Option:"));
+       //----------------------------------------- l, r, t, b
+       gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
+       data->CY_option[FILTER_PAYMODE] = make_nainex(label);
+       gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_PAYMODE], 2, row, 1, 1);
+
+       row++;
+       label = make_label (_("Payments"), 0, 0);
+       gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
 
+       row++;
+       table1 = gtk_grid_new ();
+       gtk_grid_set_row_spacing (GTK_GRID (table1), SPACING_SMALL);
+       gtk_grid_set_column_spacing (GTK_GRID (table1), SPACING_SMALL);
+       gtk_grid_attach (GTK_GRID (table), table1, 1, row, 2, 1);
 
-               row++;
-               label = make_label_widget(_("_Option:"));
-               //----------------------------------------- l, r, t, b
-               gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
-               data->CY_option[FILTER_PAYMODE] = make_nainex(label);
-               gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_PAYMODE], 2, row, 1, 1);
-
-               table1 = gtk_grid_new ();
-               gtk_grid_set_row_spacing (GTK_GRID (table1), 0);
-               gtk_grid_set_column_spacing (GTK_GRID (table1), 2);
-
-               row++;
-               gtk_grid_attach (GTK_GRID (table), table1, 2, row, 1, 1);
-
-               for(i=0;i<NUM_PAYMODE_MAX;i++)
-               {
-                       row = i;
-
-                       data->CM_paymode[i] = gtk_check_button_new();
-                       gtk_grid_attach (GTK_GRID (table1), data->CM_paymode[i], 0, row, 1, 1);
-
-                       image = gtk_image_new_from_icon_name( get_paymode_icon_name(i), GTK_ICON_SIZE_MENU);
-                       gtk_grid_attach (GTK_GRID (table1), image, 1, row, 1, 1);
-
-                       label = make_label(_(paymode_label_names[i]), 0.0, 0.5);
-                       gtk_grid_attach (GTK_GRID (table1), label, 2, row, 1, 1);
+       for(i=0;i<NUM_PAYMODE_MAX;i++)
+       {
+               row = i;
 
-               }
+               image = gtk_image_new_from_icon_name( get_paymode_icon_name(i), GTK_ICON_SIZE_MENU);
+               gtk_grid_attach (GTK_GRID (table1), image, 0, row, 1, 1);
 
+               data->CM_paymode[i] = gtk_check_button_new();
+               gtk_grid_attach (GTK_GRID (table1), data->CM_paymode[i], 1, row, 1, 1);
 
+               label = make_label(_(paymode_label_names[i]), 0.0, 0.5);
+               gtk_grid_attach (GTK_GRID (table1), label, 2, row, 1, 1);
+       }
 
        return table;
 }
 
 
-/*
-** general page: date, amount, status, payment
-*/
-/*
-static GtkWidget *ui_flt_manage_page_general (struct ui_flt_manage_data *data)
-{
-GtkWidget *container, *part;
-
-       //container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
-       //                      gtk_alignment_new(xalign, yalign, xscale, yscale)
-       //gtk_container_set_border_width(GTK_CONTAINER(container), SPACING_SMALL);
-
-       container = gtk_grid_new (2, 3, FALSE);
-       gtk_grid_set_row_spacing (GTK_GRID (container), SPACING_SMALL*2);
-       gtk_grid_set_column_spacing (GTK_GRID (container), SPACING_MEDIUM*2);
-       gtk_container_set_border_width(GTK_CONTAINER(container), SPACING_SMALL);
-
-       // date: r=1, c=1
-       part = ui_flt_manage_part_date(data);
-       gtk_grid_attach(GTK_GRID (container), part, 0, 1, 0, 1);
-
-       // amount: r=2, c=2
-       part = ui_flt_manage_part_amount(data);
-       gtk_grid_attach (GTK_GRID (container), part, 0, 1, 1, 2);
-
-       // paymode:
-       part = ui_flt_manage_part_paymode(data);
-       gtk_grid_attach (GTK_GRID (container), part, 1, 2, 0, 2);
-
-       // status: r=2, c=1
-       part = ui_flt_manage_part_status(data);
-       gtk_grid_attach (GTK_GRID (container), part, 2, 3, 0, 1);
-
-       // text: r=2, c=1
-       part = ui_flt_manage_part_text(data);
-       gtk_grid_attach (GTK_GRID (container), part, 2, 3, 1, 2);
-
-       gtk_container_set_border_width(GTK_CONTAINER(container), SPACING_SMALL);
-
-       return(container);
-}
-*/
-
-
-
 /*
 **
 */
 gint ui_flt_manage_dialog_new(GtkWidget *widget, Filter *filter, gboolean show_account)
 {
 struct ui_flt_manage_data data;
-GtkWidget *parentwindow, *window, *content, *mainbox, *notebook, *label, *page;
+GtkWidget *parentwindow, *window, *content, *mainbox, *box, *sidebar, *stack, *page;
+gint w, h;
 
        //data = g_malloc0(sizeof(struct ui_flt_manage_data));
        //if(!data) return NULL;
@@ -1275,9 +1413,14 @@ GtkWidget *parentwindow, *window, *content, *mainbox, *notebook, *label, *page;
 
        gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_FILTER);
 
+       //set a nice dialog size
+       gtk_window_get_size(GTK_WINDOW(parentwindow), &w, &h);
+       gtk_window_set_default_size (GTK_WINDOW(window), -1, 0.8*h);
+
+
        //store our window private data
        g_object_set_data(G_OBJECT(window), "inst_data", (gpointer)&data);
-       DB( g_print("(ui_flt_manage) window=%x, inst_data=%x\n", (guint)window, (guint)&data) );
+       DB( g_print("(ui_flt_manage) window=%p, inst_data=%p\n", window, &data) );
 
     g_signal_connect (window, "destroy",
                        G_CALLBACK (gtk_widget_destroyed), &window);
@@ -1285,13 +1428,21 @@ GtkWidget *parentwindow, *window, *content, *mainbox, *notebook, *label, *page;
        content = gtk_dialog_get_content_area(GTK_DIALOG (window));
        mainbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
        gtk_box_pack_start (GTK_BOX (content), mainbox, TRUE, TRUE, 0);
-       gtk_container_set_border_width (GTK_CONTAINER(mainbox), SPACING_MEDIUM);
+       //gtk_container_set_border_width (GTK_CONTAINER(mainbox), SPACING_MEDIUM);
 
+       box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+    gtk_box_pack_start (GTK_BOX (mainbox), box, TRUE, TRUE, 0);
+
+       sidebar = gtk_stack_sidebar_new ();
+    gtk_box_pack_start (GTK_BOX (box), sidebar, FALSE, FALSE, 0);
+
+
+       stack = gtk_stack_new ();
+       gtk_stack_set_transition_type (GTK_STACK (stack), GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN);
+       gtk_stack_sidebar_set_stack (GTK_STACK_SIDEBAR (sidebar), GTK_STACK (stack));
+       data.stack = stack;
+    gtk_box_pack_start (GTK_BOX (box), stack, TRUE, TRUE, 0);
 
-       notebook = gtk_notebook_new();
-       gtk_notebook_set_tab_pos(GTK_NOTEBOOK (notebook), GTK_POS_LEFT);
-    gtk_box_pack_start (GTK_BOX (mainbox), notebook, TRUE, TRUE, 0);
-       data.notebook = notebook;
 
        //common (date + status + amount)
 /*     label = gtk_label_new(_("General"));
@@ -1299,48 +1450,40 @@ GtkWidget *parentwindow, *window, *content, *mainbox, *notebook, *label, *page;
        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
 */
 
-       label = gtk_label_new(_("Date"));
        page = ui_flt_manage_part_date(&data);
-       gtk_widget_show(GTK_WIDGET(page));
-       gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+       //gtk_widget_show(GTK_WIDGET(page));
+       gtk_stack_add_titled (GTK_STACK (stack), page, "dat", _("Dates"));
 
-       label = gtk_label_new(_("Status"));
        page = ui_flt_manage_part_status(&data);
-       gtk_widget_show(GTK_WIDGET(page));
-       gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+       //gtk_widget_show(GTK_WIDGET(page));
+       gtk_stack_add_titled (GTK_STACK (stack), page, "sta", _("Statuses"));
 
-       label = gtk_label_new(_("Payment"));
        page = ui_flt_manage_part_paymode(&data);
-       gtk_widget_show(GTK_WIDGET(page));
-       gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+       //gtk_widget_show(GTK_WIDGET(page));
+       gtk_stack_add_titled (GTK_STACK (stack), page, "pmt", _("Payments"));
 
-       label = gtk_label_new(_("Amount"));
        page = ui_flt_manage_part_amount(&data);
-       gtk_widget_show(GTK_WIDGET(page));
-       gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+       //gtk_widget_show(GTK_WIDGET(page));
+       gtk_stack_add_titled (GTK_STACK (stack), page, "amt", _("Amounts"));
 
-       label = gtk_label_new(_("Text"));
        page = ui_flt_manage_part_text(&data);
-       gtk_widget_show(GTK_WIDGET(page));
-       gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+       //gtk_widget_show(GTK_WIDGET(page));
+       gtk_stack_add_titled (GTK_STACK (stack), page, "txt", _("Texts"));
        
-       label = gtk_label_new(_("Category"));
        page = ui_flt_manage_page_category(&data);
-       gtk_widget_show(GTK_WIDGET(page));
-       gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+       //gtk_widget_show(GTK_WIDGET(page));
+       gtk_stack_add_titled (GTK_STACK (stack), page, "cat", _("Categories"));
 
-       label = gtk_label_new(_("Payee"));
        page = ui_flt_manage_page_payee(&data);
-       gtk_widget_show(GTK_WIDGET(page));
-       gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+       //gtk_widget_show(GTK_WIDGET(page));
+       gtk_stack_add_titled (GTK_STACK (stack), page, "pay", _("Payees"));
 
        data.show_account = show_account;
        if(show_account == TRUE)
        {
-               label = gtk_label_new(_("Account"));
                page = ui_flt_manage_page_account(&data);
-               gtk_widget_show(GTK_WIDGET(page));
-               gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
+               //gtk_widget_show(GTK_WIDGET(page));
+               gtk_stack_add_titled (GTK_STACK (stack), page, "acc", _("Accounts"));
        }
 
        //setup, init and show window
@@ -1364,24 +1507,18 @@ GtkWidget *parentwindow, *window, *content, *mainbox, *notebook, *label, *page;
        {
            g_signal_connect (data.CY_option[FILTER_ACCOUNT] , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
-           g_signal_connect (data.BT_acc[BUTTON_ALL]   , "clicked", G_CALLBACK (ui_flt_manage_acc_select), GINT_TO_POINTER(BUTTON_ALL));
-           g_signal_connect (data.BT_acc[BUTTON_NONE]  , "clicked", G_CALLBACK (ui_flt_manage_acc_select), GINT_TO_POINTER(BUTTON_NONE));
-           g_signal_connect (data.BT_acc[BUTTON_INVERT], "clicked", G_CALLBACK (ui_flt_manage_acc_select), GINT_TO_POINTER(BUTTON_INVERT));
        }
 
        g_signal_connect (data.CY_month, "changed", G_CALLBACK (ui_flt_manage_period_change), NULL);
        g_signal_connect (data.NB_year, "value-changed", G_CALLBACK (ui_flt_manage_period_change), NULL);
 
-    g_signal_connect (data.BT_pay[BUTTON_ALL]   , "clicked", G_CALLBACK (ui_flt_manage_pay_select), GINT_TO_POINTER(BUTTON_ALL));
-    g_signal_connect (data.BT_pay[BUTTON_NONE]  , "clicked", G_CALLBACK (ui_flt_manage_pay_select), GINT_TO_POINTER(BUTTON_NONE));
-    g_signal_connect (data.BT_pay[BUTTON_INVERT], "clicked", G_CALLBACK (ui_flt_manage_pay_select), GINT_TO_POINTER(BUTTON_INVERT));
 
-    g_signal_connect (data.BT_cat[BUTTON_ALL]   , "clicked", G_CALLBACK (ui_flt_manage_cat_select), GINT_TO_POINTER(BUTTON_ALL));
-    g_signal_connect (data.BT_cat[BUTTON_NONE]  , "clicked", G_CALLBACK (ui_flt_manage_cat_select), GINT_TO_POINTER(BUTTON_NONE));
-    g_signal_connect (data.BT_cat[BUTTON_INVERT], "clicked", G_CALLBACK (ui_flt_manage_cat_select), GINT_TO_POINTER(BUTTON_INVERT));
+       gtk_widget_show_all (window);
 
 
-       gtk_widget_show_all (window);
+       if( *data.filter->last_tab != '\0' )
+               gtk_stack_set_visible_child_name (GTK_STACK(data.stack), data.filter->last_tab);
+       DB( g_print(" set page '%s'\n", data.filter->last_tab) );
 
 
        //wait for the user
This page took 0.048161 seconds and 4 git commands to generate.