1 /* HomeBank -- Free, easy, personal accounting for everyone.
2 * Copyright (C) 1995-2019 Maxime DOYEN
4 * This file is part of HomeBank.
6 * HomeBank is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * HomeBank is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
23 #include "ui-filter.h"
24 #include "ui-account.h"
26 #include "ui-category.h"
27 #include "gtk-dateentry.h"
30 /****************************************************************************/
32 /****************************************************************************/
41 /* our global datas */
42 extern struct HomeBank
*GLOBALS
;
45 extern gchar
*CYA_FLT_TYPE
[];
46 extern gchar
*CYA_FLT_STATUS
[];
47 extern gchar
*CYA_FLT_RANGE
[];
48 extern gchar
*CYA_SELECT
[];
49 extern char *paymode_label_names
[];
50 extern gchar
*nainex_label_names
[];
53 /* = = = = = = = = = = = = = = = = = = = = */
56 static void ui_flt_panel_category_get(struct ui_flt_manage_data
*data
)
60 DB( g_print("(ui_flt_panel_category) get\n") );
62 if(data
->filter
!=NULL
)
65 //GtkTreeSelection *selection;
66 GtkTreeIter iter
, child
;
73 DB( g_print(" category\n") );
75 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
76 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
77 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
82 gtk_tree_model_get (model
, &iter
,
83 LST_DEFCAT_TOGGLE
, &toggled
,
84 LST_DEFCAT_DATAS
, &catitem
,
87 //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
88 //data->filter->cat[i] = toggled;
89 catitem
->flt_select
= toggled
;
91 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
92 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
97 gtk_tree_model_get (model
, &child
,
98 LST_DEFCAT_TOGGLE
, &toggled
,
99 LST_DEFCAT_DATAS
, &catitem
,
103 //data->filter->cat[i] = toggled;
104 //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &child);
105 catitem
->flt_select
= toggled
;
108 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
111 /* Make iter point to the next row in the list store */
112 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
119 static void ui_flt_panel_category_set(struct ui_flt_manage_data
*data
)
122 DB( g_print("(ui_flt_panel_category) set\n") );
124 if(data
->filter
!= NULL
)
127 //GtkTreeSelection *selection;
128 GtkTreeIter iter
, child
;
136 DB( g_print(" category\n") );
138 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
139 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
140 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
145 gtk_tree_model_get (model
, &iter
,
146 LST_DEFCAT_DATAS
, &catitem
,
149 if(catitem
->flt_select
== TRUE
)
150 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
152 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
153 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
158 gtk_tree_model_get (model
, &child
,
159 LST_DEFCAT_DATAS
, &catitem
,
162 if(catitem
->flt_select
== TRUE
)
163 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
166 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
169 /* Make iter point to the next row in the list store */
170 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
179 static void ui_flt_manage_cat_select(GtkWidget
*widget
, gpointer user_data
)
181 struct ui_flt_manage_data
*data
;
182 gint select
= GPOINTER_TO_INT(user_data
);
184 GtkTreeIter iter
, child
;
189 DB( g_print("(ui_flt_manage) pay select\n") );
191 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
193 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
194 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
200 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
203 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, FALSE
, -1);
206 gtk_tree_model_get (model
, &iter
, LST_DEFCAT_TOGGLE
, &toggle
, -1);
208 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, toggle
, -1);
212 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
213 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
220 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
223 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, FALSE
, -1);
226 gtk_tree_model_get (model
, &child
, LST_DEFCAT_TOGGLE
, &toggle
, -1);
228 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, toggle
, -1);
233 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
236 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
244 ui_flt_panel_category_activate_link (GtkWidget
*label
,
248 DB( g_print(" comboboxlink '%s' \n", uri
) );
250 if (g_strcmp0 (uri
, "all") == 0)
252 ui_flt_manage_cat_select(label
, GINT_TO_POINTER(BUTTON_ALL
) );
255 if (g_strcmp0 (uri
, "non") == 0)
257 ui_flt_manage_cat_select(label
, GINT_TO_POINTER(BUTTON_NONE
) );
260 if (g_strcmp0 (uri
, "inv") == 0)
262 ui_flt_manage_cat_select(label
, GINT_TO_POINTER(BUTTON_INVERT
) );
270 ui_flt_panel_category_new (struct ui_flt_manage_data
*data
)
272 GtkWidget
*scrollwin
, *hbox
, *vbox
, *label
;
274 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
276 label
= make_label (_("Categories"), 0, 0);
277 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
278 gtk_box_pack_start (GTK_BOX (vbox
), label
, FALSE
, FALSE
, 0);
280 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_MEDIUM
);
281 gtk_box_pack_start (GTK_BOX (vbox
), hbox
, FALSE
, FALSE
, 0);
283 label
= make_label (_("Select:"), 0, 0.5);
284 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
286 label
= make_clicklabel("all", _("All"));
287 data
->BT_cat
[BUTTON_ALL
] = label
;
288 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
289 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link
), NULL
);
291 label
= make_clicklabel("non", _("None"));
292 data
->BT_cat
[BUTTON_NONE
] = label
;
293 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
294 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link
), NULL
);
296 label
= make_clicklabel("inv", _("Invert"));
297 data
->BT_cat
[BUTTON_INVERT
] = label
;
298 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
299 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link
), NULL
);
302 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
303 gtk_box_pack_start (GTK_BOX (vbox
), scrollwin
, TRUE
, TRUE
, 0);
305 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
306 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
307 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
309 data
->LV_cat
= (GtkWidget
*)ui_cat_listview_new(TRUE
, FALSE
);
310 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_cat
);
317 /* = = = = = = = = = = = = = = = = */
320 static void ui_flt_manage_pay_select(GtkWidget
*widget
, gpointer user_data
)
322 struct ui_flt_manage_data
*data
;
323 gint select
= GPOINTER_TO_INT(user_data
);
329 DB( g_print("(ui_flt_manage) pay select\n") );
331 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
333 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
334 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
340 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, TRUE
, -1);
343 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, FALSE
, -1);
346 gtk_tree_model_get (model
, &iter
, LST_DEFPAY_TOGGLE
, &toggle
, -1);
348 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, toggle
, -1);
351 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
358 ui_flt_panel_payee_activate_link (GtkWidget
*label
,
362 DB( g_print(" comboboxlink '%s' \n", uri
) );
364 if (g_strcmp0 (uri
, "all") == 0)
366 ui_flt_manage_pay_select(label
, GINT_TO_POINTER(BUTTON_ALL
) );
369 if (g_strcmp0 (uri
, "non") == 0)
371 ui_flt_manage_pay_select(label
, GINT_TO_POINTER(BUTTON_NONE
) );
374 if (g_strcmp0 (uri
, "inv") == 0)
376 ui_flt_manage_pay_select(label
, GINT_TO_POINTER(BUTTON_INVERT
) );
384 ui_flt_panel_payee_new (struct ui_flt_manage_data
*data
)
386 GtkWidget
*scrollwin
, *hbox
, *vbox
, *label
;
388 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
390 label
= make_label (_("Payees"), 0, 0);
391 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
392 gtk_box_pack_start (GTK_BOX (vbox
), label
, FALSE
, FALSE
, 0);
394 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_MEDIUM
);
395 gtk_box_pack_start (GTK_BOX (vbox
), hbox
, FALSE
, FALSE
, 0);
397 label
= make_label (_("Select:"), 0, 0.5);
398 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
400 label
= make_clicklabel("all", _("All"));
401 data
->BT_pay
[BUTTON_ALL
] = label
;
402 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
403 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link
), NULL
);
405 label
= make_clicklabel("non", _("None"));
406 data
->BT_pay
[BUTTON_NONE
] = label
;
407 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
408 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link
), NULL
);
410 label
= make_clicklabel("inv", _("Invert"));
411 data
->BT_pay
[BUTTON_INVERT
] = label
;
412 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
413 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link
), NULL
);
415 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
416 gtk_box_pack_start (GTK_BOX (vbox
), scrollwin
, TRUE
, TRUE
, 0);
418 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
419 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
420 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
422 data
->LV_pay
= (GtkWidget
*)ui_pay_listview_new(TRUE
, FALSE
);
423 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_pay
);
434 /* = = = = = = = = = = = = = = = = */
436 static void ui_flt_manage_acc_select(GtkWidget
*widget
, gpointer user_data
)
438 struct ui_flt_manage_data
*data
;
439 gint select
= GPOINTER_TO_INT(user_data
);
445 DB( g_print("(ui_flt_manage) acc select\n") );
447 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
449 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
450 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
456 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, TRUE
, -1);
459 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, FALSE
, -1);
462 gtk_tree_model_get (model
, &iter
, LST_DEFACC_TOGGLE
, &toggle
, -1);
464 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, toggle
, -1);
467 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
473 ui_flt_panel_account_activate_link (GtkWidget
*label
,
477 DB( g_print(" comboboxlink '%s' \n", uri
) );
479 if (g_strcmp0 (uri
, "all") == 0)
481 ui_flt_manage_acc_select(label
, GINT_TO_POINTER(BUTTON_ALL
) );
484 if (g_strcmp0 (uri
, "non") == 0)
486 ui_flt_manage_acc_select(label
, GINT_TO_POINTER(BUTTON_NONE
) );
489 if (g_strcmp0 (uri
, "inv") == 0)
491 ui_flt_manage_acc_select(label
, GINT_TO_POINTER(BUTTON_INVERT
) );
498 ui_flt_panel_account_new (struct ui_flt_manage_data
*data
)
500 GtkWidget
*scrollwin
, *hbox
, *vbox
, *label
;
502 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
504 label
= make_label (_("Accounts"), 0, 0);
505 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
506 gtk_box_pack_start (GTK_BOX (vbox
), label
, FALSE
, FALSE
, 0);
508 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_MEDIUM
);
509 gtk_box_pack_start (GTK_BOX (vbox
), hbox
, FALSE
, FALSE
, 0);
511 label
= make_label (_("Select:"), 0, 0.5);
512 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
514 label
= make_clicklabel("all", _("All"));
515 data
->BT_acc
[BUTTON_ALL
] = label
;
516 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
517 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link
), NULL
);
519 label
= make_clicklabel("non", _("None"));
520 data
->BT_acc
[BUTTON_NONE
] = label
;
521 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
522 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link
), NULL
);
524 label
= make_clicklabel("inv", _("Invert"));
525 data
->BT_acc
[BUTTON_INVERT
] = label
;
526 gtk_box_pack_start (GTK_BOX (hbox
), label
, FALSE
, FALSE
, 0);
527 g_signal_connect (label
, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link
), NULL
);
529 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
530 gtk_box_pack_start (GTK_BOX (vbox
), scrollwin
, TRUE
, TRUE
, 0);
532 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
533 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
534 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
536 data
->LV_acc
= (GtkWidget
*)ui_acc_listview_new(TRUE
);
537 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_acc
);
542 /* = = = = = = = = = = = = = = = = */
553 static void ui_flt_manage_option_update(GtkWidget
*widget
, gpointer user_data
)
555 struct ui_flt_manage_data
*data
;
559 DB( g_print("(ui_flt_manage) update\n") );
561 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
564 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_STATUS
]));
565 sensitive
= active
== 0 ? FALSE
: TRUE
;
566 gtk_widget_set_sensitive(data
->CM_reconciled
, sensitive
);
567 gtk_widget_set_sensitive(data
->CM_cleared
, sensitive
);
570 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_DATE
]));
571 sensitive
= active
== 0 ? FALSE
: TRUE
;
572 gtk_widget_set_sensitive(data
->PO_mindate
, sensitive
);
573 gtk_widget_set_sensitive(data
->PO_maxdate
, sensitive
);
574 gtk_widget_set_sensitive(data
->CY_month
, sensitive
);
575 gtk_widget_set_sensitive(data
->NB_year
, sensitive
);
578 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_AMOUNT
]));
579 sensitive
= active
== 0 ? FALSE
: TRUE
;
580 gtk_widget_set_sensitive(data
->ST_minamount
, sensitive
);
581 gtk_widget_set_sensitive(data
->ST_maxamount
, sensitive
);
584 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_TEXT
]));
585 sensitive
= active
== 0 ? FALSE
: TRUE
;
586 gtk_widget_set_sensitive(data
->CM_exact
, sensitive
);
587 gtk_widget_set_sensitive(data
->ST_memo
, sensitive
);
588 gtk_widget_set_sensitive(data
->ST_info
, sensitive
);
589 gtk_widget_set_sensitive(data
->ST_tag
, sensitive
);
592 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_PAYMODE
]));
593 sensitive
= active
== 0 ? FALSE
: TRUE
;
594 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
596 gtk_widget_set_sensitive(data
->CM_paymode
[i
], sensitive
);
600 if(data
->show_account
== TRUE
)
602 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_ACCOUNT
]));
603 sensitive
= active
== 0 ? FALSE
: TRUE
;
604 gtk_widget_set_sensitive(data
->LV_acc
, sensitive
);
605 for(i
=0;i
<MAX_BUTTON
;i
++)
607 gtk_widget_set_sensitive(data
->BT_acc
[i
], sensitive
);
614 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_PAYEE
]));
615 sensitive
= active
== 0 ? FALSE
: TRUE
;
616 gtk_widget_set_sensitive(data
->LV_pay
, sensitive
);
617 for(i
=0;i
<MAX_BUTTON
;i
++)
619 gtk_widget_set_sensitive(data
->BT_pay
[i
], sensitive
);
623 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_CATEGORY
]));
624 sensitive
= active
== 0 ? FALSE
: TRUE
;
625 gtk_widget_set_sensitive(data
->LV_cat
, sensitive
);
626 for(i
=0;i
<MAX_BUTTON
;i
++)
628 gtk_widget_set_sensitive(data
->BT_cat
[i
], sensitive
);
639 static void ui_flt_manage_get(struct ui_flt_manage_data
*data
)
644 DB( g_print("(ui_flt_manage) get\n") );
646 if(data
->filter
!=NULL
)
649 //GtkTreeSelection *selection;
655 for(i
=0;i
<FILTER_MAX
;i
++)
657 if(data
->show_account
== FALSE
&& i
== FILTER_ACCOUNT
)
660 data
->filter
->option
[i
] = gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[i
]));
664 DB( g_print(" date\n") );
665 data
->filter
->mindate
= gtk_date_entry_get_date(GTK_DATE_ENTRY(data
->PO_mindate
));
666 data
->filter
->maxdate
= gtk_date_entry_get_date(GTK_DATE_ENTRY(data
->PO_maxdate
));
669 DB( g_print(" status\n") );
670 data
->filter
->reconciled
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_reconciled
));
671 data
->filter
->cleared
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_cleared
));
673 data
->filter
->forceadd
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forceadd
));
674 data
->filter
->forcechg
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forcechg
));
675 data
->filter
->forceremind
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forceremind
));
678 DB( g_print(" paymode\n") );
679 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
680 data
->filter
->paymode
[i
] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_paymode
[i
]));
683 data
->filter
->minamount
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->ST_minamount
));
684 data
->filter
->maxamount
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->ST_maxamount
));
687 data
->filter
->exact
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_exact
));
688 //free any previous string
689 if( data
->filter
->memo
)
691 g_free(data
->filter
->memo
);
692 data
->filter
->memo
= NULL
;
694 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_memo
));
696 if (txt
&& *txt
) // ignore if entry is empty
698 data
->filter
->memo
= g_strdup(txt
);
702 //free any previous string
703 if( data
->filter
->info
)
705 g_free(data
->filter
->info
);
706 data
->filter
->info
= NULL
;
708 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_info
));
709 // ignore if entry is empty
712 data
->filter
->info
= g_strdup(txt
);
716 //free any previous string
717 if( data
->filter
->tag
)
719 g_free(data
->filter
->tag
);
720 data
->filter
->tag
= NULL
;
722 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_tag
));
723 // ignore if entry is empty
726 data
->filter
->tag
= g_strdup(txt
);
731 if(data
->show_account
== TRUE
)
733 DB( g_print(" account\n") );
735 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
736 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
737 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
742 gtk_tree_model_get (model
, &iter
,
743 LST_DEFACC_TOGGLE
, &toggled
,
744 LST_DEFACC_DATAS
, &accitem
,
747 //data->filter->acc[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
748 accitem
->flt_select
= toggled
;
750 /* Make iter point to the next row in the list store */
751 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
756 DB( g_print(" payee\n") );
758 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
759 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
760 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
765 gtk_tree_model_get (model
, &iter
,
766 LST_DEFPAY_TOGGLE
, &toggled
,
767 LST_DEFPAY_DATAS
, &payitem
,
770 //data->filter->pay[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
771 payitem
->flt_select
= toggled
;
773 /* Make iter point to the next row in the list store */
774 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
778 DB( g_print(" category\n") );
780 ui_flt_panel_category_get(data
);
783 g_strlcpy(data
->filter
->last_tab
, gtk_stack_get_visible_child_name(GTK_STACK(data
->stack
)), 8);
784 DB( g_print(" page is '%s'\n", data
->filter
->last_tab
) );
794 static void ui_flt_manage_set(struct ui_flt_manage_data
*data
)
797 DB( g_print("(ui_flt_manage) set\n") );
799 if(data
->filter
!= NULL
)
802 //GtkTreeSelection *selection;
809 DB( g_print(" options\n") );
811 for(i
=0;i
<FILTER_MAX
;i
++)
813 if(data
->show_account
== FALSE
&& i
== FILTER_ACCOUNT
)
816 gtk_combo_box_set_active(GTK_COMBO_BOX(data
->CY_option
[i
]), data
->filter
->option
[i
]);
819 //DB( g_print(" setdate %d to %x\n", data->filter->mindate, data->PO_mindate) );
820 //DB( g_print(" setdate %d to %x\n", 0, data->PO_mindate) );
822 DB( g_print(" date\n") );
823 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_mindate
), data
->filter
->mindate
);
824 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_maxdate
), data
->filter
->maxdate
);
825 date
= g_date_new_julian(data
->filter
->maxdate
);
826 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->NB_year
), g_date_get_year(date
));
830 DB( g_print(" status\n") );
831 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_reconciled
), data
->filter
->reconciled
);
834 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forceadd
), data
->filter
->forceadd
);
835 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forcechg
), data
->filter
->forcechg
);
836 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forceremind
), data
->filter
->forceremind
);
839 DB( g_print(" paymode\n") );
841 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
842 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_paymode
[i
]), data
->filter
->paymode
[i
]);
845 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->ST_minamount
), data
->filter
->minamount
);
846 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->ST_maxamount
), data
->filter
->maxamount
);
849 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_exact
), data
->filter
->exact
);
850 gtk_entry_set_text(GTK_ENTRY(data
->ST_info
), (data
->filter
->info
!= NULL
) ? data
->filter
->info
: "");
851 gtk_entry_set_text(GTK_ENTRY(data
->ST_memo
), (data
->filter
->memo
!= NULL
) ? data
->filter
->memo
: "");
852 gtk_entry_set_text(GTK_ENTRY(data
->ST_tag
), (data
->filter
->tag
!= NULL
) ? data
->filter
->tag
: "");
855 if(data
->show_account
== TRUE
)
857 DB( g_print(" account\n") );
859 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
860 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
861 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
866 gtk_tree_model_get (model
, &iter
,
867 LST_DEFACC_DATAS
, &accitem
,
870 if(accitem
->flt_select
== TRUE
)
871 //gtk_tree_selection_select_iter(selection, &iter);
872 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
,
873 LST_DEFACC_TOGGLE
, TRUE
, -1);
875 /* Make iter point to the next row in the list store */
876 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
881 DB( g_print(" payee\n") );
883 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
884 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
885 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
890 gtk_tree_model_get (model
, &iter
,
891 LST_DEFPAY_DATAS
, &payitem
,
894 if(payitem
->flt_select
== TRUE
)
895 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, TRUE
, -1);
897 /* Make iter point to the next row in the list store */
898 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
902 DB( g_print(" category\n") );
904 ui_flt_panel_category_set(data
);
913 static void ui_flt_manage_clear(GtkWidget
*widget
, gpointer user_data
)
915 struct ui_flt_manage_data
*data
;
917 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget
), GTK_TYPE_WINDOW
)), "inst_data");
919 DB( g_print("(ui_flt_manage) clear\n") );
921 filter_reset(data
->filter
);
923 ui_flt_manage_set(data
);
931 static void ui_flt_manage_setup(struct ui_flt_manage_data
*data
)
934 DB( g_print("(ui_flt_manage) setup\n") );
936 if(data
->show_account
== TRUE
&& data
->LV_acc
!= NULL
)
938 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc))), GTK_SELECTION_MULTIPLE);
940 ui_acc_listview_populate(data
->LV_acc
, ACC_LST_INSERT_REPORT
);
941 //populate_view_acc(data->LV_acc, GLOBALS->acc_list, FALSE);
946 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay))), GTK_SELECTION_MULTIPLE);
948 ui_pay_listview_populate(data
->LV_pay
, NULL
);
949 //populate_view_pay(data->LV_pay, GLOBALS->pay_list, FALSE);
954 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat))), GTK_SELECTION_MULTIPLE);
956 //populate_view_cat(data->LV_cat, GLOBALS->cat_list, FALSE);
957 ui_cat_listview_populate(data
->LV_cat
, CAT_TYPE_ALL
);
958 gtk_tree_view_expand_all (GTK_TREE_VIEW(data
->LV_cat
));
967 static GtkWidget
*ui_flt_manage_page_category (struct ui_flt_manage_data
*data
)
969 GtkWidget
*container
, *panel
, *hbox
, *label
;
971 container
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
972 gtk_container_set_border_width (GTK_CONTAINER (container
), SPACING_MEDIUM
);
974 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
975 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
977 label
= make_label_widget(_("_Option:"));
978 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
979 data
->CY_option
[FILTER_CATEGORY
] = make_nainex(label
);
980 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_CATEGORY
], TRUE
, TRUE
, 0);
982 panel
= ui_flt_panel_category_new(data
);
983 gtk_box_pack_start (GTK_BOX (container
), panel
, TRUE
, TRUE
, 0);
989 static GtkWidget
*ui_flt_manage_page_payee (struct ui_flt_manage_data
*data
)
991 GtkWidget
*container
, *panel
, *hbox
, *label
;
993 container
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
994 gtk_container_set_border_width (GTK_CONTAINER (container
), SPACING_MEDIUM
);
996 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
997 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
999 label
= make_label_widget(_("_Option:"));
1000 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
1001 data
->CY_option
[FILTER_PAYEE
] = make_nainex(label
);
1002 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_PAYEE
], TRUE
, TRUE
, 0);
1004 panel
= ui_flt_panel_payee_new(data
);
1005 gtk_box_pack_start (GTK_BOX (container
), panel
, TRUE
, TRUE
, 0);
1013 static GtkWidget
*ui_flt_manage_page_account (struct ui_flt_manage_data
*data
)
1015 GtkWidget
*container
, *panel
, *hbox
, *label
;
1017 container
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
1018 gtk_container_set_border_width (GTK_CONTAINER (container
), SPACING_MEDIUM
);
1020 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
1021 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
1023 label
= make_label_widget(_("_Option:"));
1024 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
1025 data
->CY_option
[FILTER_ACCOUNT
] = make_nainex(label
);
1026 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_ACCOUNT
], TRUE
, TRUE
, 0);
1028 panel
= ui_flt_panel_account_new(data
);
1029 gtk_box_pack_start (GTK_BOX (container
), panel
, TRUE
, TRUE
, 0);
1035 static void get_period_minmax(guint month
, guint year
, guint32
*mindate
, guint32
*maxdate
)
1039 date
= g_date_new();
1042 // mindate is month 1, year :: maxdate is last day of month, year
1043 g_date_set_dmy(date
, 1, month
, year
);
1044 *mindate
= g_date_get_julian(date
);
1045 g_date_add_days(date
, g_date_get_days_in_month(month
, year
));
1046 *maxdate
= g_date_get_julian(date
)-1;
1050 g_date_set_dmy(date
, 1, 1, year
);
1051 *mindate
= g_date_get_julian(date
);
1052 g_date_set_dmy(date
, 31, 12, year
);
1053 *maxdate
= g_date_get_julian(date
);
1060 static void ui_flt_manage_period_change(GtkWidget
*widget
, gpointer user_data
)
1062 struct ui_flt_manage_data
*data
;
1065 DB( g_print("(ui_flt_manage) period change\n") );
1067 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
1070 month
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_month
));
1071 year
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->NB_year
));
1073 DB( g_print(" month=%d, year=%d\n", month
, year
) );
1077 get_period_minmax(month
-1, year
, &data
->filter
->mindate
, &data
->filter
->maxdate
);
1079 get_period_minmax(0, year
, &data
->filter
->mindate
, &data
->filter
->maxdate
);
1081 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_mindate
), data
->filter
->mindate
);
1082 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_maxdate
), data
->filter
->maxdate
);
1086 static GtkWidget
*ui_flt_manage_part_date(struct ui_flt_manage_data
*data
)
1088 GtkWidget
*table
, *label
;
1091 table
= gtk_grid_new ();
1092 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1093 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1094 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1097 label
= make_label_widget(_("_Option:"));
1098 //----------------------------------------- l, r, t, b
1099 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1100 data
->CY_option
[FILTER_DATE
] = make_nainex(label
);
1101 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_DATE
], 2, row
, 1, 1);
1104 label
= make_label (_("Dates"), 0, 0);
1105 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
1106 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1109 label
= make_label_widget(_("_From:"));
1110 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1111 data
->PO_mindate
= gtk_date_entry_new();
1112 gtk_grid_attach (GTK_GRID (table
), data
->PO_mindate
, 1, row
, 2, 1);
1115 label
= make_label_widget(_("_To:"));
1116 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1117 data
->PO_maxdate
= gtk_date_entry_new();
1118 gtk_grid_attach (GTK_GRID (table
), data
->PO_maxdate
, 1, row
, 2, 1);
1121 label
= make_label_widget(_("_Month:"));
1122 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1123 data
->CY_month
= make_cycle(label
, CYA_SELECT
);
1124 gtk_grid_attach (GTK_GRID (table
), data
->CY_month
, 1, row
, 2, 1);
1127 label
= make_label_widget(_("_Year:"));
1128 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1129 data
->NB_year
= make_year(label
);
1130 gtk_grid_attach (GTK_GRID (table
), data
->NB_year
, 1, row
, 2, 1);
1136 static GtkWidget
*ui_flt_manage_part_text(struct ui_flt_manage_data
*data
)
1138 GtkWidget
*table
, *label
;
1141 table
= gtk_grid_new ();
1142 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1143 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1144 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1147 label
= make_label_widget(_("_Option:"));
1148 //----------------------------------------- l, r, t, b
1149 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1150 data
->CY_option
[FILTER_TEXT
] = make_nainex(label
);
1151 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_TEXT
], 2, row
, 1, 1);
1154 label
= make_label (_("Texts"), 0, 0);
1155 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
1156 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1159 label
= make_label_widget(_("_Memo:"));
1160 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1161 data
->ST_memo
= make_string(label
);
1162 gtk_widget_set_hexpand (data
->ST_memo
, TRUE
);
1163 gtk_grid_attach (GTK_GRID (table
), data
->ST_memo
, 1, row
, 2, 1);
1166 label
= make_label_widget(_("_Info:"));
1167 //----------------------------------------- l, r, t, b
1168 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1169 data
->ST_info
= make_string(label
);
1170 gtk_widget_set_hexpand (data
->ST_info
, TRUE
);
1171 gtk_grid_attach (GTK_GRID (table
), data
->ST_info
, 1, row
, 2, 1);
1174 label
= make_label_widget(_("_Tag:"));
1175 //----------------------------------------- l, r, t, b
1176 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1177 data
->ST_tag
= make_string(label
);
1178 gtk_widget_set_hexpand (data
->ST_tag
, TRUE
);
1179 gtk_grid_attach (GTK_GRID (table
), data
->ST_tag
, 1, row
, 2, 1);
1182 data
->CM_exact
= gtk_check_button_new_with_mnemonic (_("Case _sensitive"));
1183 gtk_grid_attach (GTK_GRID (table
), data
->CM_exact
, 1, row
, 2, 1);
1189 static GtkWidget
*ui_flt_manage_part_amount(struct ui_flt_manage_data
*data
)
1191 GtkWidget
*table
, *label
;
1194 table
= gtk_grid_new ();
1195 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1196 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1197 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1200 label
= make_label_widget(_("_Option:"));
1201 //----------------------------------------- l, r, t, b
1202 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1203 data
->CY_option
[FILTER_AMOUNT
] = make_nainex(label
);
1204 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_AMOUNT
], 2, row
, 1, 1);
1207 label
= make_label (_("Amounts"), 0, 0);
1208 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
1209 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1212 label
= make_label_widget(_("_From:"));
1213 //----------------------------------------- l, r, t, b
1214 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1215 data
->ST_minamount
= make_amount(label
);
1216 gtk_grid_attach (GTK_GRID (table
), data
->ST_minamount
, 1, row
, 2, 1);
1219 label
= make_label_widget(_("_To:"));
1220 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 1, 1);
1221 data
->ST_maxamount
= make_amount(label
);
1222 gtk_grid_attach (GTK_GRID (table
), data
->ST_maxamount
, 1, row
, 2, 1);
1228 static GtkWidget
*ui_flt_manage_part_status(struct ui_flt_manage_data
*data
)
1230 GtkWidget
*table
, *label
, *vbox
, *widget
;
1233 table
= gtk_grid_new ();
1234 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1235 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1236 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1239 label
= make_label_widget(_("_Option:"));
1240 //----------------------------------------- l, r, t, b
1241 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1242 data
->CY_option
[FILTER_STATUS
] = make_nainex(label
);
1243 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_STATUS
], 2, row
, 1, 1);
1246 label
= make_label (_("Statuses"), 0, 0);
1247 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
1248 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1252 vbox
= gtk_box_new (GTK_ORIENTATION_VERTICAL
, 0);
1253 gtk_grid_attach (GTK_GRID (table
), vbox
, 2, row
, 1, 1);
1255 widget
= gtk_check_button_new_with_mnemonic (_("reconciled"));
1256 data
->CM_reconciled
= widget
;
1257 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1259 widget
= gtk_check_button_new_with_mnemonic (_("cleared"));
1260 data
->CM_cleared
= widget
;
1261 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1264 label
= make_label_widget(_("Force:"));
1265 data
->LB_force
= label
;
1266 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1268 vbox
= gtk_box_new (GTK_ORIENTATION_VERTICAL
, 0);
1269 data
->GR_force
= vbox
;
1270 gtk_grid_attach (GTK_GRID (table
), vbox
, 2, row
, 1, 1);
1272 widget
= gtk_check_button_new_with_mnemonic (_("display 'Added'"));
1273 data
->CM_forceadd
= widget
;
1274 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1276 widget
= gtk_check_button_new_with_mnemonic (_("display 'Edited'"));
1277 data
->CM_forcechg
= widget
;
1278 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1280 widget
= gtk_check_button_new_with_mnemonic (_("display 'Remind'"));
1281 data
->CM_forceremind
= widget
;
1282 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1288 static GtkWidget
*ui_flt_manage_part_paymode(struct ui_flt_manage_data
*data
)
1290 GtkWidget
*table
, *label
, *table1
, *image
;
1293 table
= gtk_grid_new ();
1294 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1295 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1296 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1299 label
= make_label_widget(_("_Option:"));
1300 //----------------------------------------- l, r, t, b
1301 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1302 data
->CY_option
[FILTER_PAYMODE
] = make_nainex(label
);
1303 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_PAYMODE
], 2, row
, 1, 1);
1306 label
= make_label (_("Payments"), 0, 0);
1307 gimp_label_set_attributes (GTK_LABEL (label
), PANGO_ATTR_SCALE
, PANGO_SCALE_LARGE
, -1);
1308 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1311 table1
= gtk_grid_new ();
1312 gtk_grid_set_row_spacing (GTK_GRID (table1
), SPACING_SMALL
);
1313 gtk_grid_set_column_spacing (GTK_GRID (table1
), SPACING_SMALL
);
1314 gtk_grid_attach (GTK_GRID (table
), table1
, 1, row
, 2, 1);
1316 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
1320 image
= gtk_image_new_from_icon_name( get_paymode_icon_name(i
), GTK_ICON_SIZE_MENU
);
1321 gtk_grid_attach (GTK_GRID (table1
), image
, 0, row
, 1, 1);
1323 data
->CM_paymode
[i
] = gtk_check_button_new();
1324 gtk_grid_attach (GTK_GRID (table1
), data
->CM_paymode
[i
], 1, row
, 1, 1);
1326 label
= make_label(_(paymode_label_names
[i
]), 0.0, 0.5);
1327 gtk_grid_attach (GTK_GRID (table1
), label
, 2, row
, 1, 1);
1337 gint
ui_flt_manage_dialog_new(GtkWindow
*parentwindow
, Filter
*filter
, gboolean show_account
, gboolean txnmode
)
1339 struct ui_flt_manage_data data
;
1340 GtkWidget
*window
, *content
, *mainbox
, *box
, *sidebar
, *stack
, *page
;
1343 //data = g_malloc0(sizeof(struct ui_flt_manage_data));
1344 //if(!data) return NULL;
1345 memset(&data
, 0, sizeof(struct ui_flt_manage_data
));
1347 data
.filter
= filter
;
1349 window
= gtk_dialog_new_with_buttons (_("Edit filter"),
1350 GTK_WINDOW (parentwindow
),
1355 GTK_RESPONSE_REJECT
,
1357 GTK_RESPONSE_ACCEPT
,
1360 gtk_window_set_icon_name(GTK_WINDOW (window
), ICONNAME_HB_FILTER
);
1362 //set a nice dialog size
1363 //gtk_window_get_size(GTK_WINDOW(parentwindow), &w, &h);
1364 //gtk_window_set_default_size (GTK_WINDOW(window), -1, 0.8*h);
1367 //store our window private data
1368 g_object_set_data(G_OBJECT(window
), "inst_data", (gpointer
)&data
);
1369 DB( g_print("(ui_flt_manage) window=%p, inst_data=%p\n", window
, &data
) );
1371 g_signal_connect (window
, "destroy",
1372 G_CALLBACK (gtk_widget_destroyed
), &window
);
1374 content
= gtk_dialog_get_content_area(GTK_DIALOG (window
));
1375 mainbox
= gtk_box_new (GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
1376 gtk_box_pack_start (GTK_BOX (content
), mainbox
, TRUE
, TRUE
, 0);
1377 //gtk_container_set_border_width (GTK_CONTAINER(mainbox), SPACING_MEDIUM);
1379 box
= gtk_box_new (GTK_ORIENTATION_HORIZONTAL
, 0);
1380 gtk_box_pack_start (GTK_BOX (mainbox
), box
, TRUE
, TRUE
, 0);
1382 sidebar
= gtk_stack_sidebar_new ();
1383 gtk_box_pack_start (GTK_BOX (box
), sidebar
, FALSE
, FALSE
, 0);
1386 stack
= gtk_stack_new ();
1387 gtk_stack_set_transition_type (GTK_STACK (stack
), GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN
);
1388 gtk_stack_sidebar_set_stack (GTK_STACK_SIDEBAR (sidebar
), GTK_STACK (stack
));
1390 gtk_box_pack_start (GTK_BOX (box
), stack
, TRUE
, TRUE
, 0);
1393 //common (date + status + amount)
1394 /* label = gtk_label_new(_("General"));
1395 page = ui_flt_manage_page_general(&data);
1396 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
1399 page
= ui_flt_manage_part_date(&data
);
1400 //gtk_widget_show(GTK_WIDGET(page));
1401 gtk_stack_add_titled (GTK_STACK (stack
), page
, "dat", _("Dates"));
1403 page
= ui_flt_manage_part_status(&data
);
1404 //gtk_widget_show(GTK_WIDGET(page));
1405 gtk_stack_add_titled (GTK_STACK (stack
), page
, "sta", _("Statuses"));
1407 page
= ui_flt_manage_part_paymode(&data
);
1408 //gtk_widget_show(GTK_WIDGET(page));
1409 gtk_stack_add_titled (GTK_STACK (stack
), page
, "pmt", _("Payments"));
1411 page
= ui_flt_manage_part_amount(&data
);
1412 //gtk_widget_show(GTK_WIDGET(page));
1413 gtk_stack_add_titled (GTK_STACK (stack
), page
, "amt", _("Amounts"));
1415 page
= ui_flt_manage_part_text(&data
);
1416 //gtk_widget_show(GTK_WIDGET(page));
1417 gtk_stack_add_titled (GTK_STACK (stack
), page
, "txt", _("Texts"));
1419 page
= ui_flt_manage_page_category(&data
);
1420 //gtk_widget_show(GTK_WIDGET(page));
1421 gtk_stack_add_titled (GTK_STACK (stack
), page
, "cat", _("Categories"));
1423 page
= ui_flt_manage_page_payee(&data
);
1424 //gtk_widget_show(GTK_WIDGET(page));
1425 gtk_stack_add_titled (GTK_STACK (stack
), page
, "pay", _("Payees"));
1427 data
.show_account
= show_account
;
1428 if(show_account
== TRUE
)
1430 page
= ui_flt_manage_page_account(&data
);
1431 //gtk_widget_show(GTK_WIDGET(page));
1432 gtk_stack_add_titled (GTK_STACK (stack
), page
, "acc", _("Accounts"));
1435 //setup, init and show window
1436 ui_flt_manage_setup(&data
);
1437 ui_flt_manage_set(&data
);
1439 ui_flt_manage_option_update(window
, NULL
);
1441 /* signal connect */
1442 g_signal_connect (data
.CY_option
[FILTER_STATUS
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1443 g_signal_connect (data
.CY_option
[FILTER_DATE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1444 g_signal_connect (data
.CY_option
[FILTER_AMOUNT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1445 g_signal_connect (data
.CY_option
[FILTER_PAYMODE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1447 g_signal_connect (data
.CY_option
[FILTER_PAYEE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1448 g_signal_connect (data
.CY_option
[FILTER_CATEGORY
], "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1449 g_signal_connect (data
.CY_option
[FILTER_TEXT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1451 if(show_account
== TRUE
)
1453 g_signal_connect (data
.CY_option
[FILTER_ACCOUNT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1457 g_signal_connect (data
.CY_month
, "changed", G_CALLBACK (ui_flt_manage_period_change
), NULL
);
1458 g_signal_connect (data
.NB_year
, "value-changed", G_CALLBACK (ui_flt_manage_period_change
), NULL
);
1461 gtk_widget_show_all (window
);
1465 hb_widget_visible (data
.LB_force
, FALSE
);
1466 hb_widget_visible (data
.GR_force
, FALSE
);
1470 if( *data
.filter
->last_tab
!= '\0' )
1471 gtk_stack_set_visible_child_name (GTK_STACK(data
.stack
), data
.filter
->last_tab
);
1472 DB( g_print(" set page '%s'\n", data
.filter
->last_tab
) );
1476 gint retval
; // = 55;
1478 //while( result == 55 )
1480 retval
= gtk_dialog_run (GTK_DIALOG (window
));
1484 case GTK_RESPONSE_ACCEPT
:
1485 //do_application_specific_something ();
1486 ui_flt_manage_get(&data
);
1489 ui_flt_manage_clear(window
, NULL
);
1490 ui_flt_manage_get(&data
);
1493 //do_nothing_since_dialog_was_cancelled ();
1498 // cleanup and destroy
1499 //ui_flt_manage_cleanup(&data, result);
1502 DB( g_print(" free\n") );
1505 DB( g_print(" destroy\n") );
1506 gtk_widget_destroy (window
);
1508 DB( g_print(" all ok\n") );