/* 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)
//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);
//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);
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);
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--;
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);
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);
}
-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);
-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);
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);
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 */
DB( g_print("(ui_flt_manage) clear\n") );
- filter_default_all_set(data->filter);
+ filter_reset(data->filter);
ui_flt_manage_set(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);
}
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'"));
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;
/*
**
*/
-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,
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
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);
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);