X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fhomebank;a=blobdiff_plain;f=src%2Fui-filter.c;h=78714e72a937633ce2f681a7b44d79bcd6504080;hp=66950a28f790b6974be45e4a6ebe5eb75170fcae;hb=160a363125e5d06f47eb22b333788097e4f01362;hpb=27f6e3b112df235c8e9afc9911b1f6bce208a001 diff --git a/src/ui-filter.c b/src/ui-filter.c index 66950a2..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-2014 Maxime DOYEN + * Copyright (C) 1995-2019 Maxime DOYEN * * This file is part of HomeBank. * @@ -42,108 +42,337 @@ 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 GdkPixbuf *paymode_icons[]; - -gchar *CYA_FLT_TYPE[] = { - N_("Expense"), - N_("Income"), - "", - N_("Any Type"), - NULL -}; - -gchar *CYA_FLT_STATUS[] = { - N_("Uncategorized"), - N_("Unreconciled"), - "", - 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[] = -{ - "----", - 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 -}; +extern gchar *nainex_label_names[]; /* = = = = = = = = = = = = = = = = = = = = */ -/* -** -*/ -static void ui_flt_manage_acc_select(GtkWidget *widget, gpointer user_data) + +static void ui_flt_hub_category_expand_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) 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) +{ +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->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); + 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->flt_select = 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->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); + 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->flt_select == 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 *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 (hubbox), label, FALSE, FALSE, 0); + + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM); + 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); + + 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); + + //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_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN); + 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); + + 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); +} + + +/* = = = = = = = = = = = = = = = = */ + + static void ui_flt_manage_pay_select(GtkWidget *widget, gpointer user_data) { struct ui_flt_manage_data *data; @@ -179,71 +408,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); - n_child--; - gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &child); - } + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter); - } + 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); + 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_acc = (GtkWidget *)ui_acc_listview_new(TRUE); + gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_acc); + + return(vbox); } +/* = = = = = = = = = = = = = = = = */ + + + + + + + /* ** */ @@ -261,7 +620,7 @@ gboolean sensitive; active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_STATUS])); sensitive = active == 0 ? FALSE : TRUE; gtk_widget_set_sensitive(data->CM_reconciled, sensitive); - gtk_widget_set_sensitive(data->CM_reminded, sensitive); + gtk_widget_set_sensitive(data->CM_cleared, sensitive); // date active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_DATE])); @@ -281,7 +640,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); @@ -344,8 +703,8 @@ gchar *txt; { GtkTreeModel *model; //GtkTreeSelection *selection; - GtkTreeIter iter, child; - gint n_child; + GtkTreeIter iter; + gboolean valid; gboolean toggled; @@ -359,16 +718,17 @@ gchar *txt; //date DB( g_print(" date\n") ); - data->filter->mindate = gtk_dateentry_get_date(GTK_DATE_ENTRY(data->PO_mindate)); - data->filter->maxdate = gtk_dateentry_get_date(GTK_DATE_ENTRY(data->PO_maxdate)); + data->filter->mindate = gtk_date_entry_get_date(GTK_DATE_ENTRY(data->PO_mindate)); + data->filter->maxdate = gtk_date_entry_get_date(GTK_DATE_ENTRY(data->PO_maxdate)); //status DB( g_print(" status\n") ); data->filter->reconciled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_reconciled)); - data->filter->reminded = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_reminded)); + data->filter->cleared = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_cleared)); data->filter->forceadd = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_forceadd)); data->filter->forcechg = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_forcechg)); + data->filter->forceremind = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_forceremind)); //paymode DB( g_print(" paymode\n") ); @@ -379,19 +739,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 @@ -441,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); @@ -464,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); @@ -473,49 +833,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) ); } @@ -534,9 +856,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; @@ -554,8 +876,8 @@ static void ui_flt_manage_set(struct ui_flt_manage_data *data) //DB( g_print(" setdate %d to %x\n", 0, data->PO_mindate) ); //date DB( g_print(" date\n") ); - gtk_dateentry_set_date(GTK_DATE_ENTRY(data->PO_mindate), data->filter->mindate); - gtk_dateentry_set_date(GTK_DATE_ENTRY(data->PO_maxdate), data->filter->maxdate); + gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_mindate), data->filter->mindate); + gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_maxdate), data->filter->maxdate); date = g_date_new_julian(data->filter->maxdate); gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_year), g_date_get_year(date)); g_date_free(date); @@ -563,10 +885,11 @@ static void ui_flt_manage_set(struct ui_flt_manage_data *data) //status DB( g_print(" status\n") ); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_reconciled), data->filter->reconciled); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_reminded), data->filter->reminded); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_forceadd), data->filter->forceadd); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_forcechg), data->filter->forcechg); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_forceremind), data->filter->forceremind); //paymode DB( g_print(" paymode\n") ); @@ -581,7 +904,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 @@ -600,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); @@ -624,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 */ @@ -634,44 +957,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); } } @@ -688,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); @@ -715,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); } @@ -724,105 +1010,55 @@ 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_cat))), GTK_SELECTION_MULTIPLE); //populate_view_cat(data->LV_cat, GLOBALS->cat_list, FALSE); - ui_cat_listview_populate(data->LV_cat); + ui_cat_listview_populate(data->LV_cat, CAT_TYPE_ALL); gtk_tree_view_expand_all (GTK_TREE_VIEW(data->LV_cat)); } } -/* -** -*/ + + + + + 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_vbox_new(FALSE, HB_BOX_SPACING); - gtk_container_set_border_width (GTK_CONTAINER (container), HB_MAINBOX_SPACING); + container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL); + gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM); - hbox = gtk_hbox_new(FALSE, HB_BOX_SPACING); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 0); - label = make_label(_("_Option:"), 1.0, 0.5); + label = make_label_widget(_("_Option:")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); 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_hbox_new(FALSE, HB_BOX_SPACING); - 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), HB_BOX_SPACING); - - data->LV_cat = (GtkWidget *)ui_cat_listview_new(TRUE); - gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_cat); - - vbox = gtk_vbox_new(FALSE, HB_BOX_SPACING); - 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_vbox_new(FALSE, HB_BOX_SPACING); - gtk_container_set_border_width (GTK_CONTAINER (container), HB_MAINBOX_SPACING); + container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL); + gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM); - hbox = gtk_hbox_new(FALSE, HB_BOX_SPACING); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 0); - label = make_label(_("_Option:"), 1.0, 0.5); + label = make_label_widget(_("_Option:")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); 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_hbox_new(FALSE, HB_BOX_SPACING); - 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), HB_BOX_SPACING); - - data->LV_pay = (GtkWidget *)ui_pay_listview_new(TRUE); - gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_pay); - - vbox = gtk_vbox_new(FALSE, HB_BOX_SPACING); - 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); } @@ -832,46 +1068,21 @@ 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_vbox_new(FALSE, HB_BOX_SPACING); - gtk_container_set_border_width (GTK_CONTAINER (container), HB_MAINBOX_SPACING); + container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL); + gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM); - hbox = gtk_hbox_new(FALSE, HB_BOX_SPACING); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL); gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 0); - label = make_label(_("_Option:"), 1.0, 0.5); + label = make_label_widget(_("_Option:")); gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0); 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_hbox_new(FALSE, HB_BOX_SPACING); - 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), HB_BOX_SPACING); - - data->LV_acc = ui_acc_listview_new(TRUE); - gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_acc); - - vbox = gtk_vbox_new(FALSE, HB_BOX_SPACING); - 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); } @@ -923,255 +1134,196 @@ gint month, year; else get_period_minmax(0, year, &data->filter->mindate, &data->filter->maxdate); - gtk_dateentry_set_date(GTK_DATE_ENTRY(data->PO_mindate), data->filter->mindate); - gtk_dateentry_set_date(GTK_DATE_ENTRY(data->PO_maxdate), data->filter->maxdate); + gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_mindate), data->filter->mindate); + gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_maxdate), data->filter->maxdate); } - static GtkWidget *ui_flt_manage_part_date(struct ui_flt_manage_data *data) { GtkWidget *table, *label; -GtkWidget *alignment; gint row; - // filter date - table = gtk_table_new (3, 3, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING); - gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING); - - //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.5, 0, 1.0, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), table); - + 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(_("Filter Date"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); - //gtk_table_attach (GTK_TABLE (table), label, 0, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label("", 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - label = make_label(_("_Option:"), 0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->CY_option[FILTER_DATE] = make_nainex(label); - //gtk_table_attach_defaults (GTK_TABLE (table), data->CY_option[FILTER_DATE], 1, 2, row, row+1); - gtk_table_attach (GTK_TABLE (table), data->CY_option[FILTER_DATE], 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_From:"), 0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->PO_mindate = gtk_dateentry_new(); - //data->PO_mindate = gtk_entry_new(); - //gtk_table_attach_defaults (GTK_TABLE (table), data->PO_mindate, 1, 2, row, row+1); - gtk_table_attach (GTK_TABLE (table), data->PO_mindate, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_To:"), 0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->PO_maxdate = gtk_dateentry_new(); - //data->PO_maxdate = gtk_entry_new(); - //gtk_table_attach_defaults (GTK_TABLE (table), data->PO_maxdate, 1, 2, row, row+1); - gtk_table_attach (GTK_TABLE (table), data->PO_maxdate, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_Month:"), 0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->CY_month = make_cycle(label, CYA_SELECT); - gtk_table_attach (GTK_TABLE (table), data->CY_month, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_Year:"), 0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->NB_year = make_year(label); - gtk_table_attach (GTK_TABLE (table), data->NB_year, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - gtk_container_set_border_width(GTK_CONTAINER(alignment), HB_BOX_SPACING); - - return alignment; + 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(_("_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; } static GtkWidget *ui_flt_manage_part_text(struct ui_flt_manage_data *data) { GtkWidget *table, *label; -GtkWidget *alignment; gint row; - table = gtk_table_new (3, 3, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING); - gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING); - - //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.5, 0, 1.0, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), table); - + 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(_("Filter Text"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); - - row++; - label = make_label("", 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - label = make_label(_("_Option:"), 0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - //gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->CY_option[FILTER_TEXT] = make_nainex(label); - gtk_table_attach (GTK_TABLE (table), data->CY_option[FILTER_TEXT], 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - data->CM_exact = gtk_check_button_new_with_mnemonic (_("Case _sensitive")); - gtk_table_attach (GTK_TABLE (table), data->CM_exact, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_Memo:"), 0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->ST_wording = make_string(label); - gtk_table_attach (GTK_TABLE (table), data->ST_wording, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_Info:"), 0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->ST_info = make_string(label); - gtk_table_attach (GTK_TABLE (table), data->ST_info, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_Tag:"), 0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->ST_tag = make_string(label); - gtk_table_attach (GTK_TABLE (table), data->ST_tag, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - gtk_container_set_border_width(GTK_CONTAINER(alignment), HB_BOX_SPACING); - - return alignment; + 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(_("_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; } static GtkWidget *ui_flt_manage_part_amount(struct ui_flt_manage_data *data) { GtkWidget *table, *label; -GtkWidget *alignment; 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); - table = gtk_table_new (3, 3, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING); - gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING); - - //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.5, 0, 1.0, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), table); - - // Amount section row = 0; - - label = make_label(_("Filter Amount"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); - - row++; - label = make_label("", 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - label = make_label(_("_Option:"), 0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - //gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->CY_option[FILTER_AMOUNT] = make_nainex(label); - gtk_table_attach (GTK_TABLE (table), data->CY_option[FILTER_AMOUNT], 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_From:"), 0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->ST_minamount = make_amount(label); - gtk_table_attach (GTK_TABLE (table), data->ST_minamount, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - row++; - label = make_label(_("_To:"), 0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->ST_maxamount = make_amount(label); - gtk_table_attach (GTK_TABLE (table), data->ST_maxamount, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - gtk_container_set_border_width(GTK_CONTAINER(alignment), HB_BOX_SPACING); - - - return alignment; + 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(_("_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; } static GtkWidget *ui_flt_manage_part_status(struct ui_flt_manage_data *data) { GtkWidget *table, *label, *vbox, *widget; -GtkWidget *alignment; gint row; - - // column 2 - - // filter status - table = gtk_table_new (3, 3, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING); - gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING); - - //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.5, 0, 1.0, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), table); - + 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(_("Filter Status"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); - - row++; - label = make_label("", 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + 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); - label = make_label(_("_Option:"), 0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + 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); - data->CY_option[FILTER_STATUS] = make_nainex(label); - gtk_table_attach (GTK_TABLE (table), data->CY_option[FILTER_STATUS], 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); row++; - vbox = gtk_vbox_new (FALSE, 0); - gtk_table_attach (GTK_TABLE (table), vbox, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_grid_attach (GTK_GRID (table), vbox, 2, row, 1, 1); widget = gtk_check_button_new_with_mnemonic (_("reconciled")); data->CM_reconciled = widget; gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0); - widget = gtk_check_button_new_with_mnemonic (_("remind")); - data->CM_reminded = widget; + widget = gtk_check_button_new_with_mnemonic (_("cleared")); + data->CM_cleared = widget; gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0); row++; - label = make_label(_("Force:"), 0, 0.5); - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); + label = make_label_widget(_("Force:")); + data->LB_force = label; + gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1); - vbox = gtk_vbox_new (FALSE, 0); - gtk_table_attach (GTK_TABLE (table), vbox, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); + 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'")); data->CM_forceadd = widget; @@ -1181,168 +1333,115 @@ gint row; data->CM_forcechg = widget; gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0); - gtk_container_set_border_width(GTK_CONTAINER(alignment), HB_BOX_SPACING); - + widget = gtk_check_button_new_with_mnemonic (_("display 'Remind'")); + data->CM_forceremind = widget; + gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0); - return alignment; + return table; } static GtkWidget *ui_flt_manage_part_paymode(struct ui_flt_manage_data *data) { GtkWidget *table, *label, *table1, *image; -GtkWidget *alignment; gint i, row; - // Filter Payment - table = gtk_table_new (3, 3, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table), HB_TABROW_SPACING); - gtk_table_set_col_spacings (GTK_TABLE (table), HB_TABCOL_SPACING); - - //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - alignment = gtk_alignment_new(0.5, 0, 1.0, 0.0); - gtk_container_add(GTK_CONTAINER(alignment), table); - + 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(_("Filter Payment"), 0.0, 0.5); - gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1); - gtk_table_attach_defaults (GTK_TABLE (table), label, 0, 3, row, row+1); - - - row++; - label = make_label("", 0.0, 0.5); - gtk_misc_set_padding (GTK_MISC (label), HB_BOX_SPACING, 0); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - label = make_label(_("_Option:"), 1.0, 0.5); - //----------------------------------------- l, r, t, b - gtk_table_attach (GTK_TABLE (table), label, 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - data->CY_option[FILTER_PAYMODE] = make_nainex(label); - gtk_table_attach (GTK_TABLE (table), data->CY_option[FILTER_PAYMODE], 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - table1 = gtk_table_new (1, 1, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (table1), 0); - gtk_table_set_col_spacings (GTK_TABLE (table1), 2); - - row++; - gtk_table_attach (GTK_TABLE (table), table1, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - for(i=0;iCM_paymode[i] = gtk_check_button_new(); - gtk_table_attach (GTK_TABLE (table1), data->CM_paymode[i], 1, 2, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); - - - label = make_label(_(paymode_label_names[i]), 0.0, 0.5); - gtk_table_attach (GTK_TABLE (table1), label, 2, 3, row, row+1, (GtkAttachOptions) (GTK_FILL|GTK_EXPAND), (GtkAttachOptions) (0), 0, 0); - - } - - gtk_container_set_border_width(GTK_CONTAINER(alignment), HB_BOX_SPACING); - - - return alignment; -} - - -/* -** general page: date, amount, status, payment -*/ -/* -static GtkWidget *ui_flt_manage_page_general (struct ui_flt_manage_data *data) -{ -GtkWidget *container, *part; - - //container = gtk_hbox_new(FALSE, HB_BOX_SPACING); - // gtk_alignment_new(xalign, yalign, xscale, yscale) - //gtk_container_set_border_width(GTK_CONTAINER(container), HB_BOX_SPACING); - - container = gtk_table_new (2, 3, FALSE); - gtk_table_set_row_spacings (GTK_TABLE (container), HB_TABROW_SPACING*2); - gtk_table_set_col_spacings (GTK_TABLE (container), HB_TABCOL_SPACING*2); - gtk_container_set_border_width(GTK_CONTAINER(container), HB_BOX_SPACING); - - // date: r=1, c=1 - part = ui_flt_manage_part_date(data); - gtk_table_attach_defaults(GTK_TABLE (container), part, 0, 1, 0, 1); - - // amount: r=2, c=2 - part = ui_flt_manage_part_amount(data); - gtk_table_attach_defaults (GTK_TABLE (container), part, 0, 1, 1, 2); - - // paymode: - part = ui_flt_manage_part_paymode(data); - gtk_table_attach_defaults (GTK_TABLE (container), part, 1, 2, 0, 2); + 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); - // status: r=2, c=1 - part = ui_flt_manage_part_status(data); - gtk_table_attach_defaults (GTK_TABLE (container), part, 2, 3, 0, 1); + for(i=0;iCM_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); + } - return(container); + return table; } -*/ - /* ** */ -gint ui_flt_manage_dialog_new(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 *window, *content, *mainbox, *notebook, *label, *page; +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; - window = gtk_dialog_new_with_buttons (_("Edit Filter"), - //GTK_WINDOW (do_widget), - NULL, + window = gtk_dialog_new_with_buttons (_("Edit filter"), + GTK_WINDOW (parentwindow), 0, - GTK_STOCK_CLEAR, + _("_Reset"), 55, - GTK_STOCK_CANCEL, + _("_Cancel"), GTK_RESPONSE_REJECT, - GTK_STOCK_OK, + _("_OK"), GTK_RESPONSE_ACCEPT, NULL); - //homebank_window_set_icon_from_file(GTK_WINDOW (window), "filter.svg"); - gtk_window_set_icon_name(GTK_WINDOW (window), HB_STOCK_FILTER); + 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); content = gtk_dialog_get_content_area(GTK_DIALOG (window)); - mainbox = gtk_vbox_new (FALSE, HB_BOX_SPACING); + 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), HB_MAINBOX_SPACING); + //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")); @@ -1350,48 +1449,40 @@ GtkWidget *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(_("Paymode")); 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 @@ -1399,7 +1490,6 @@ GtkWidget *window, *content, *mainbox, *notebook, *label, *page; 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); @@ -1415,24 +1505,24 @@ GtkWidget *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); + + if(!txnmode) + { + hb_widget_visible (data.LB_force, FALSE); + hb_widget_visible (data.GR_force, FALSE); + } - 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