X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank;a=blobdiff_plain;f=src%2Fui-filter.c;h=78714e72a937633ce2f681a7b44d79bcd6504080;hp=5279f436ca5b51f312598c692d3f9bdadf8fa155;hb=160a363125e5d06f47eb22b333788097e4f01362;hpb=d11c8dd3275ed2a4a35598e69c0804dcf9435766 diff --git a/src/ui-filter.c b/src/ui-filter.c index 5279f43..78714e7 100644 --- a/src/ui-filter.c +++ b/src/ui-filter.c @@ -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. * @@ -42,69 +42,39 @@ 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);