]> Dogcows Code - chaz/homebank/blobdiff - src/ui-filter.c
Merge branch 'upstream'
[chaz/homebank] / src / ui-filter.c
index 5279f436ca5b51f312598c692d3f9bdadf8fa155..78714e72a937633ce2f681a7b44d79bcd6504080 100644 (file)
@@ -1,5 +1,5 @@
 /*  HomeBank -- Free, easy, personal accounting for everyone.
- *  Copyright (C) 1995-2018 Maxime DOYEN
+ *  Copyright (C) 1995-2019 Maxime DOYEN
  *
  *  This file is part of HomeBank.
  *
 extern struct HomeBank *GLOBALS;
 
 
+extern gchar *CYA_FLT_TYPE[];
+extern gchar *CYA_FLT_STATUS[];
+extern gchar *CYA_FLT_RANGE[];
+extern gchar *CYA_SELECT[];
 extern char *paymode_label_names[];
+extern gchar *nainex_label_names[];
 
 
-gchar *CYA_FLT_TYPE[] = {
-       N_("Expense"),
-       N_("Income"),
-       "",
-       N_("Any Type"),
-       NULL
-};
-
-gchar *CYA_FLT_STATUS[] = {
-       N_("Uncategorized"),
-       N_("Unreconciled"),
-       N_("Uncleared"),
-       N_("Reconciled"),
-       N_("Cleared"),
-       "",
-       N_("Any Status"),
-       NULL
-};
-
-gchar *CYA_FLT_RANGE[] = {
-       N_("This month"),
-       N_("Last month"),
-       N_("This quarter"),
-       N_("Last quarter"),
-       N_("This year"),
-       N_("Last year"),
-       "",
-       N_("Last 30 days"),
-       N_("Last 60 days"),
-       N_("Last 90 days"),
-       N_("Last 12 months"),
-       "",
-       N_("Other..."),
-       "",
-       N_("All date"),
-       NULL
-};
-
-
-gchar *CYA_SELECT[] =
+/* = = = = = = = = = = = = = = = = = = = = */
+
+
+static void ui_flt_hub_category_expand_all(GtkWidget *widget, gpointer user_data)
 {
-       "----",
-       N_("All month"),
-       N_("January"),
-       N_("February"),
-       N_("March"),
-       N_("April"),
-       N_("May"),
-       N_("June"),
-       N_("July"),
-       N_("August"),
-       N_("September"),
-       N_("October"),
-       N_("November"),
-       N_("December"),
-       NULL
-};
+struct ui_flt_manage_data *data;
 
+       data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
+       DB( g_print("\n(ui_flt_hub_category) expand all (data=%p)\n", data) );
 
-/* = = = = = = = = = = = = = = = = = = = = */
+       gtk_tree_view_expand_all(GTK_TREE_VIEW(data->LV_cat));
+
+}
+
+
+static void ui_flt_hub_category_collapse_all(GtkWidget *widget, gpointer user_data)
+{
+struct ui_flt_manage_data *data;
+
+       data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
+       DB( g_print("\n(ui_flt_hub_category) collapse all (data=%p)\n", data) );
+
+       gtk_tree_view_collapse_all(GTK_TREE_VIEW(data->LV_cat));
+
+}
 
 
 static void ui_flt_panel_category_get(struct ui_flt_manage_data *data)
@@ -140,7 +110,7 @@ gint i;
 
                        //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
                        //data->filter->cat[i] = toggled;
-                       catitem->filter = toggled;
+                       catitem->flt_select = 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);
@@ -156,7 +126,7 @@ gint i;
 
                                //data->filter->cat[i] = toggled;
                                //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &child);
-                               catitem->filter = toggled;
+                               catitem->flt_select = toggled;
 
                                n_child--;
                                gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child);
@@ -200,7 +170,7 @@ static void ui_flt_panel_category_set(struct ui_flt_manage_data *data)
                                LST_DEFCAT_DATAS, &catitem,
                                -1);
 
-                       if(catitem->filter == TRUE)
+                       if(catitem->flt_select == 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);
@@ -213,7 +183,7 @@ static void ui_flt_panel_category_set(struct ui_flt_manage_data *data)
                                        LST_DEFCAT_DATAS, &catitem,
                                        -1);
 
-                               if(catitem->filter == TRUE)
+                               if(catitem->flt_select == TRUE)
                                        gtk_tree_store_set (GTK_TREE_STORE (model), &child, LST_DEFCAT_TOGGLE, TRUE, -1);
 
                                n_child--;
@@ -323,16 +293,17 @@ ui_flt_panel_category_activate_link (GtkWidget   *label,
 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);
+GtkWidget *hubbox, *scrollwin, *hbox, *vbox, *widget, *label, *tbar;
+GtkToolItem *toolitem;
+       
+       hubbox = 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);    
+       gtk_box_pack_start (GTK_BOX (hubbox), label, FALSE, FALSE, 0);  
 
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
-       gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (hubbox), hbox, FALSE, FALSE, 0);
 
        label = make_label (_("Select:"), 0, 0.5);
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
@@ -352,19 +323,50 @@ GtkWidget *scrollwin, *hbox, *vbox, *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);
 
+       //list
+       vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+       gtk_box_pack_start (GTK_BOX (hubbox), vbox, TRUE, TRUE, 0);
 
        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);
-
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       //gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(scrollwin), HB_MINHEIGHT_LIST);
        data->LV_cat = (GtkWidget *)ui_cat_listview_new(TRUE, FALSE);
        gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_cat);
+       gtk_widget_set_hexpand (scrollwin, TRUE);
+       gtk_widget_set_vexpand (scrollwin, TRUE);
+       gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
+
+       //list toolbar
+       tbar = gtk_toolbar_new();
+       gtk_toolbar_set_icon_size (GTK_TOOLBAR(tbar), GTK_ICON_SIZE_MENU);
+       gtk_toolbar_set_style(GTK_TOOLBAR(tbar), GTK_TOOLBAR_ICONS);
+       gtk_style_context_add_class (gtk_widget_get_style_context (tbar), GTK_STYLE_CLASS_INLINE_TOOLBAR);
+       gtk_box_pack_start (GTK_BOX (vbox), tbar, FALSE, FALSE, 0);
+
+       toolitem = gtk_separator_tool_item_new ();
+       gtk_tool_item_set_expand (toolitem, TRUE);
+       gtk_separator_tool_item_set_draw(GTK_SEPARATOR_TOOL_ITEM(toolitem), FALSE);
+       gtk_toolbar_insert(GTK_TOOLBAR(tbar), GTK_TOOL_ITEM(toolitem), -1);
+
+       hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+       toolitem = gtk_tool_item_new();
+       gtk_container_add (GTK_CONTAINER(toolitem), hbox);
+       gtk_toolbar_insert(GTK_TOOLBAR(tbar), GTK_TOOL_ITEM(toolitem), -1);
+       
+               widget = make_image_button(ICONNAME_HB_BUTTON_EXPAND, _("Expand all"));
+               data->BT_expand = widget;
+               gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
 
+               widget = make_image_button(ICONNAME_HB_BUTTON_COLLAPSE, _("Collapse all"));
+               data->BT_collapse = widget;
+               gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
 
-       return(vbox);
+       g_signal_connect (G_OBJECT (data->BT_expand), "clicked", G_CALLBACK (ui_flt_hub_category_expand_all), NULL);
+       g_signal_connect (G_OBJECT (data->BT_collapse), "clicked", G_CALLBACK (ui_flt_hub_category_collapse_all), NULL);
+
+
+       return(hubbox);
 }
 
 
@@ -799,7 +801,7 @@ gchar *txt;
                                        -1);
 
                                //data->filter->acc[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
-                               accitem->filter = toggled;
+                               accitem->flt_select = toggled;
 
                                /* Make iter point to the next row in the list store */
                                i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
@@ -822,7 +824,7 @@ gchar *txt;
                                -1);
 
                        //data->filter->pay[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
-                       payitem->filter = toggled;
+                       payitem->flt_select = toggled;
 
                        /* Make iter point to the next row in the list store */
                        i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
@@ -921,7 +923,7 @@ static void ui_flt_manage_set(struct ui_flt_manage_data *data)
                                        LST_DEFACC_DATAS, &accitem,
                                        -1);
 
-                               if(accitem->filter == TRUE)
+                               if(accitem->flt_select == TRUE)
                                        //gtk_tree_selection_select_iter(selection, &iter);
                                        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
                                                LST_DEFACC_TOGGLE, TRUE, -1);
@@ -945,7 +947,7 @@ static void ui_flt_manage_set(struct ui_flt_manage_data *data)
                                LST_DEFPAY_DATAS, &payitem,
                                -1);
 
-                       if(payitem->filter == TRUE)
+                       if(payitem->flt_select == TRUE)
                                gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFPAY_TOGGLE, TRUE, -1);
 
                        /* Make iter point to the next row in the list store */
@@ -972,7 +974,7 @@ struct ui_flt_manage_data *data;
 
        DB( g_print("(ui_flt_manage) clear\n") );
 
-       filter_default_all_set(data->filter);
+       filter_reset(data->filter);
 
        ui_flt_manage_set(data);
 
@@ -999,7 +1001,7 @@ static void ui_flt_manage_setup(struct ui_flt_manage_data *data)
        {
                //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay))), GTK_SELECTION_MULTIPLE);
 
-               ui_pay_listview_populate(data->LV_pay);
+               ui_pay_listview_populate(data->LV_pay, NULL);
                //populate_view_pay(data->LV_pay, GLOBALS->pay_list, FALSE);
        }
 
@@ -1316,9 +1318,11 @@ gint row;
 
                row++;
                label = make_label_widget(_("Force:"));
+               data->LB_force = label;
                gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
 
                vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+               data->GR_force = vbox;
                gtk_grid_attach (GTK_GRID (table), vbox, 2, row, 1, 1);
 
                widget = gtk_check_button_new_with_mnemonic (_("display 'Added'"));
@@ -1372,11 +1376,8 @@ gint i, row;
                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();
+               data->CM_paymode[i] = gtk_check_button_new_with_mnemonic(_(paymode_label_names[i]));
                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;
@@ -1386,20 +1387,18 @@ gint i, row;
 /*
 **
 */
-gint ui_flt_manage_dialog_new(GtkWidget *widget, Filter *filter, gboolean show_account)
+gint ui_flt_manage_dialog_new(GtkWindow *parentwindow, Filter *filter, gboolean show_account, gboolean txnmode)
 {
 struct ui_flt_manage_data data;
-GtkWidget *parentwindow, *window, *content, *mainbox, *box, *sidebar, *stack, *page;
-gint w, h;
+GtkWidget *window, *content, *mainbox, *box, *sidebar, *stack, *page;
+//gint w, h;
 
        //data = g_malloc0(sizeof(struct ui_flt_manage_data));
        //if(!data) return NULL;
-       memset(&data, 0, sizeof(data));
+       memset(&data, 0, sizeof(struct ui_flt_manage_data));
 
        data.filter = filter;
 
-       parentwindow = gtk_widget_get_ancestor(GTK_WIDGET(widget), GTK_TYPE_WINDOW);
-
        window = gtk_dialog_new_with_buttons (_("Edit filter"),
                                            GTK_WINDOW (parentwindow),
                                            0,
@@ -1414,8 +1413,8 @@ gint w, h;
        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);
+       //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
@@ -1491,7 +1490,6 @@ gint w, h;
        ui_flt_manage_set(&data);
 
        ui_flt_manage_option_update(window, NULL);
-
        
        /* signal connect */
     g_signal_connect (data.CY_option[FILTER_STATUS]  , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
@@ -1515,6 +1513,12 @@ gint w, h;
 
        gtk_widget_show_all (window);
 
+       if(!txnmode)
+       {
+               hb_widget_visible (data.LB_force, FALSE);
+               hb_widget_visible (data.GR_force, FALSE);
+       }
+
 
        if( *data.filter->last_tab != '\0' )
                gtk_stack_set_visible_child_name (GTK_STACK(data.stack), data.filter->last_tab);
This page took 0.028212 seconds and 4 git commands to generate.