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