1 /* HomeBank -- Free, easy, personal accounting for everyone.
2 * Copyright (C) 1995-2014 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 char *paymode_label_names
[];
46 extern GdkPixbuf
*paymode_icons
[];
48 gchar
*CYA_FLT_TYPE
[] = {
56 gchar
*CYA_FLT_STATUS
[] = {
64 gchar
*CYA_FLT_RANGE
[] = {
104 /* = = = = = = = = = = = = = = = = = = = = */
109 static void ui_flt_manage_acc_select(GtkWidget
*widget
, gpointer user_data
)
111 struct ui_flt_manage_data
*data
;
112 gint select
= GPOINTER_TO_INT(user_data
);
118 DB( g_print("(ui_flt_manage) acc select\n") );
120 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
122 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
123 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
129 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, TRUE
, -1);
132 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, FALSE
, -1);
135 gtk_tree_model_get (model
, &iter
, LST_DEFACC_TOGGLE
, &toggle
, -1);
137 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, toggle
, -1);
140 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
147 static void ui_flt_manage_pay_select(GtkWidget
*widget
, gpointer user_data
)
149 struct ui_flt_manage_data
*data
;
150 gint select
= GPOINTER_TO_INT(user_data
);
156 DB( g_print("(ui_flt_manage) pay select\n") );
158 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
160 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
161 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
167 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, TRUE
, -1);
170 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, FALSE
, -1);
173 gtk_tree_model_get (model
, &iter
, LST_DEFPAY_TOGGLE
, &toggle
, -1);
175 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, toggle
, -1);
178 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
185 static void ui_flt_manage_cat_select(GtkWidget
*widget
, gpointer user_data
)
187 struct ui_flt_manage_data
*data
;
188 gint select
= GPOINTER_TO_INT(user_data
);
190 GtkTreeIter iter
, child
;
195 DB( g_print("(ui_flt_manage) pay select\n") );
197 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
199 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
200 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
206 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
209 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, FALSE
, -1);
212 gtk_tree_model_get (model
, &iter
, LST_DEFCAT_TOGGLE
, &toggle
, -1);
214 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, toggle
, -1);
218 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
219 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
226 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
229 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, FALSE
, -1);
232 gtk_tree_model_get (model
, &child
, LST_DEFCAT_TOGGLE
, &toggle
, -1);
234 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, toggle
, -1);
239 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
242 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
250 static void ui_flt_manage_option_update(GtkWidget
*widget
, gpointer user_data
)
252 struct ui_flt_manage_data
*data
;
256 DB( g_print("(ui_flt_manage) update\n") );
258 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
261 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_STATUS
]));
262 sensitive
= active
== 0 ? FALSE
: TRUE
;
263 gtk_widget_set_sensitive(data
->CM_reconciled
, sensitive
);
264 gtk_widget_set_sensitive(data
->CM_reminded
, sensitive
);
267 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_DATE
]));
268 sensitive
= active
== 0 ? FALSE
: TRUE
;
269 gtk_widget_set_sensitive(data
->PO_mindate
, sensitive
);
270 gtk_widget_set_sensitive(data
->PO_maxdate
, sensitive
);
271 gtk_widget_set_sensitive(data
->CY_month
, sensitive
);
272 gtk_widget_set_sensitive(data
->NB_year
, sensitive
);
275 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_AMOUNT
]));
276 sensitive
= active
== 0 ? FALSE
: TRUE
;
277 gtk_widget_set_sensitive(data
->ST_minamount
, sensitive
);
278 gtk_widget_set_sensitive(data
->ST_maxamount
, sensitive
);
281 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_TEXT
]));
282 sensitive
= active
== 0 ? FALSE
: TRUE
;
283 gtk_widget_set_sensitive(data
->CM_exact
, sensitive
);
284 gtk_widget_set_sensitive(data
->ST_wording
, sensitive
);
285 gtk_widget_set_sensitive(data
->ST_info
, sensitive
);
286 gtk_widget_set_sensitive(data
->ST_tag
, sensitive
);
289 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_PAYMODE
]));
290 sensitive
= active
== 0 ? FALSE
: TRUE
;
291 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
293 gtk_widget_set_sensitive(data
->CM_paymode
[i
], sensitive
);
297 if(data
->show_account
== TRUE
)
299 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_ACCOUNT
]));
300 sensitive
= active
== 0 ? FALSE
: TRUE
;
301 gtk_widget_set_sensitive(data
->LV_acc
, sensitive
);
302 for(i
=0;i
<MAX_BUTTON
;i
++)
304 gtk_widget_set_sensitive(data
->BT_acc
[i
], sensitive
);
311 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_PAYEE
]));
312 sensitive
= active
== 0 ? FALSE
: TRUE
;
313 gtk_widget_set_sensitive(data
->LV_pay
, sensitive
);
314 for(i
=0;i
<MAX_BUTTON
;i
++)
316 gtk_widget_set_sensitive(data
->BT_pay
[i
], sensitive
);
320 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_CATEGORY
]));
321 sensitive
= active
== 0 ? FALSE
: TRUE
;
322 gtk_widget_set_sensitive(data
->LV_cat
, sensitive
);
323 for(i
=0;i
<MAX_BUTTON
;i
++)
325 gtk_widget_set_sensitive(data
->BT_cat
[i
], sensitive
);
336 static void ui_flt_manage_get(struct ui_flt_manage_data
*data
)
341 DB( g_print("(ui_flt_manage) get\n") );
343 if(data
->filter
!=NULL
)
346 //GtkTreeSelection *selection;
347 GtkTreeIter iter
, child
;
352 for(i
=0;i
<FILTER_MAX
;i
++)
354 if(data
->show_account
== FALSE
&& i
== FILTER_ACCOUNT
)
357 data
->filter
->option
[i
] = gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[i
]));
361 DB( g_print(" date\n") );
362 data
->filter
->mindate
= gtk_dateentry_get_date(GTK_DATE_ENTRY(data
->PO_mindate
));
363 data
->filter
->maxdate
= gtk_dateentry_get_date(GTK_DATE_ENTRY(data
->PO_maxdate
));
366 DB( g_print(" status\n") );
367 data
->filter
->reconciled
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_reconciled
));
368 data
->filter
->reminded
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_reminded
));
370 data
->filter
->forceadd
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forceadd
));
371 data
->filter
->forcechg
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forcechg
));
374 DB( g_print(" paymode\n") );
375 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
376 data
->filter
->paymode
[i
] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_paymode
[i
]));
379 data
->filter
->minamount
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->ST_minamount
));
380 data
->filter
->maxamount
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->ST_maxamount
));
383 data
->filter
->exact
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_exact
));
384 //free any previous string
385 if( data
->filter
->wording
)
387 g_free(data
->filter
->wording
);
388 data
->filter
->wording
= NULL
;
390 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_wording
));
392 if (txt
&& *txt
) // ignore if entry is empty
394 data
->filter
->wording
= g_strdup(txt
);
398 //free any previous string
399 if( data
->filter
->info
)
401 g_free(data
->filter
->info
);
402 data
->filter
->info
= NULL
;
404 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_info
));
405 // ignore if entry is empty
408 data
->filter
->info
= g_strdup(txt
);
412 //free any previous string
413 if( data
->filter
->tag
)
415 g_free(data
->filter
->tag
);
416 data
->filter
->tag
= NULL
;
418 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_tag
));
419 // ignore if entry is empty
422 data
->filter
->tag
= g_strdup(txt
);
427 if(data
->show_account
== TRUE
)
429 DB( g_print(" account\n") );
431 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
432 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
433 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
438 gtk_tree_model_get (model
, &iter
,
439 LST_DEFACC_TOGGLE
, &toggled
,
440 LST_DEFACC_DATAS
, &accitem
,
443 //data->filter->acc[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
444 accitem
->filter
= toggled
;
446 /* Make iter point to the next row in the list store */
447 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
452 DB( g_print(" payee\n") );
454 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
455 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
456 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
461 gtk_tree_model_get (model
, &iter
,
462 LST_DEFPAY_TOGGLE
, &toggled
,
463 LST_DEFPAY_DATAS
, &payitem
,
466 //data->filter->pay[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
467 payitem
->filter
= toggled
;
469 /* Make iter point to the next row in the list store */
470 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
474 DB( g_print(" category\n") );
476 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
477 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
478 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
483 gtk_tree_model_get (model
, &iter
,
484 LST_DEFCAT_TOGGLE
, &toggled
,
485 LST_DEFCAT_DATAS
, &catitem
,
488 //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
489 //data->filter->cat[i] = toggled;
490 catitem
->filter
= toggled
;
492 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
493 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
498 gtk_tree_model_get (model
, &child
,
499 LST_DEFCAT_TOGGLE
, &toggled
,
500 LST_DEFCAT_DATAS
, &catitem
,
504 //data->filter->cat[i] = toggled;
505 //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &child);
506 catitem
->filter
= toggled
;
509 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
512 /* Make iter point to the next row in the list store */
513 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
517 data
->filter
->last_tab
= gtk_notebook_get_current_page(GTK_NOTEBOOK(data
->notebook
));
518 DB( g_print(" page is %d\n", data
->filter
->last_tab
) );
528 static void ui_flt_manage_set(struct ui_flt_manage_data
*data
)
531 DB( g_print("(ui_flt_manage) set\n") );
533 if(data
->filter
!= NULL
)
536 //GtkTreeSelection *selection;
537 GtkTreeIter iter
, child
;
543 DB( g_print(" options\n") );
545 for(i
=0;i
<FILTER_MAX
;i
++)
547 if(data
->show_account
== FALSE
&& i
== FILTER_ACCOUNT
)
550 gtk_combo_box_set_active(GTK_COMBO_BOX(data
->CY_option
[i
]), data
->filter
->option
[i
]);
553 //DB( g_print(" setdate %d to %x\n", data->filter->mindate, data->PO_mindate) );
554 //DB( g_print(" setdate %d to %x\n", 0, data->PO_mindate) );
556 DB( g_print(" date\n") );
557 gtk_dateentry_set_date(GTK_DATE_ENTRY(data
->PO_mindate
), data
->filter
->mindate
);
558 gtk_dateentry_set_date(GTK_DATE_ENTRY(data
->PO_maxdate
), data
->filter
->maxdate
);
559 date
= g_date_new_julian(data
->filter
->maxdate
);
560 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->NB_year
), g_date_get_year(date
));
564 DB( g_print(" status\n") );
565 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_reconciled
), data
->filter
->reconciled
);
566 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_reminded
), data
->filter
->reminded
);
568 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forceadd
), data
->filter
->forceadd
);
569 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forcechg
), data
->filter
->forcechg
);
572 DB( g_print(" paymode\n") );
574 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
575 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_paymode
[i
]), data
->filter
->paymode
[i
]);
578 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->ST_minamount
), data
->filter
->minamount
);
579 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->ST_maxamount
), data
->filter
->maxamount
);
582 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_exact
), data
->filter
->exact
);
583 gtk_entry_set_text(GTK_ENTRY(data
->ST_info
), (data
->filter
->info
!= NULL
) ? data
->filter
->info
: "");
584 gtk_entry_set_text(GTK_ENTRY(data
->ST_wording
), (data
->filter
->wording
!= NULL
) ? data
->filter
->wording
: "");
585 gtk_entry_set_text(GTK_ENTRY(data
->ST_tag
), (data
->filter
->tag
!= NULL
) ? data
->filter
->tag
: "");
588 if(data
->show_account
== TRUE
)
590 DB( g_print(" account\n") );
592 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
593 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
594 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
599 gtk_tree_model_get (model
, &iter
,
600 LST_DEFACC_DATAS
, &accitem
,
603 if(accitem
->filter
== TRUE
)
604 //gtk_tree_selection_select_iter(selection, &iter);
605 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
,
606 LST_DEFACC_TOGGLE
, TRUE
, -1);
608 /* Make iter point to the next row in the list store */
609 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
614 DB( g_print(" payee\n") );
616 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
617 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
618 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
623 gtk_tree_model_get (model
, &iter
,
624 LST_DEFPAY_DATAS
, &payitem
,
627 if(payitem
->filter
== TRUE
)
628 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, TRUE
, -1);
630 /* Make iter point to the next row in the list store */
631 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
635 DB( g_print(" category\n") );
637 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
638 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
639 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
644 gtk_tree_model_get (model
, &iter
,
645 LST_DEFCAT_DATAS
, &catitem
,
648 if(catitem
->filter
== TRUE
)
649 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
651 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
652 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
657 gtk_tree_model_get (model
, &child
,
658 LST_DEFCAT_DATAS
, &catitem
,
661 if(catitem
->filter
== TRUE
)
662 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
665 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
668 /* Make iter point to the next row in the list store */
669 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
673 gtk_notebook_set_current_page(GTK_NOTEBOOK(data
->notebook
), data
->filter
->last_tab
);
674 DB( g_print(" set page %d\n", data
->filter
->last_tab
) );
683 static void ui_flt_manage_clear(GtkWidget
*widget
, gpointer user_data
)
685 struct ui_flt_manage_data
*data
;
687 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget
), GTK_TYPE_WINDOW
)), "inst_data");
689 DB( g_print("(ui_flt_manage) clear\n") );
691 filter_default_all_set(data
->filter
);
693 ui_flt_manage_set(data
);
701 static void ui_flt_manage_setup(struct ui_flt_manage_data
*data
)
704 DB( g_print("(ui_flt_manage) setup\n") );
706 if(data
->show_account
== TRUE
&& data
->LV_acc
!= NULL
)
708 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc))), GTK_SELECTION_MULTIPLE);
710 ui_acc_listview_populate(data
->LV_acc
, ACC_LST_INSERT_REPORT
);
711 //populate_view_acc(data->LV_acc, GLOBALS->acc_list, FALSE);
716 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay))), GTK_SELECTION_MULTIPLE);
718 ui_pay_listview_populate(data
->LV_pay
);
719 //populate_view_pay(data->LV_pay, GLOBALS->pay_list, FALSE);
724 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat))), GTK_SELECTION_MULTIPLE);
726 //populate_view_cat(data->LV_cat, GLOBALS->cat_list, FALSE);
727 ui_cat_listview_populate(data
->LV_cat
);
728 gtk_tree_view_expand_all (GTK_TREE_VIEW(data
->LV_cat
));
735 static GtkWidget
*ui_flt_manage_page_category (struct ui_flt_manage_data
*data
)
737 GtkWidget
*container
, *scrollwin
, *hbox
, *vbox
, *label
, *widget
;
739 container
= gtk_vbox_new(FALSE
, HB_BOX_SPACING
);
740 gtk_container_set_border_width (GTK_CONTAINER (container
), HB_MAINBOX_SPACING
);
742 hbox
= gtk_hbox_new(FALSE
, HB_BOX_SPACING
);
743 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
745 label
= make_label(_("_Option:"), 1.0, 0.5);
746 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
747 data
->CY_option
[FILTER_CATEGORY
] = make_nainex(label
);
748 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_CATEGORY
], TRUE
, TRUE
, 0);
750 hbox
= gtk_hbox_new(FALSE
, HB_BOX_SPACING
);
751 gtk_box_pack_start (GTK_BOX (container
), hbox
, TRUE
, TRUE
, 0);
753 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
754 gtk_box_pack_start (GTK_BOX (hbox
), scrollwin
, TRUE
, TRUE
, 0);
756 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
757 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
758 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), HB_BOX_SPACING);
760 data
->LV_cat
= (GtkWidget
*)ui_cat_listview_new(TRUE
);
761 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_cat
);
763 vbox
= gtk_vbox_new(FALSE
, HB_BOX_SPACING
);
764 gtk_box_pack_start (GTK_BOX (hbox
), vbox
, FALSE
, FALSE
, 0);
766 widget
= gtk_button_new_with_label(_("All"));
767 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
768 data
->BT_cat
[BUTTON_ALL
] = widget
;
770 widget
= gtk_button_new_with_label(_("None"));
771 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
772 data
->BT_cat
[BUTTON_NONE
] = widget
;
774 widget
= gtk_button_new_with_label(_("Invert"));
775 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
776 data
->BT_cat
[BUTTON_INVERT
] = widget
;
784 static GtkWidget
*ui_flt_manage_page_payee (struct ui_flt_manage_data
*data
)
786 GtkWidget
*container
, *scrollwin
, *hbox
, *vbox
, *label
, *widget
;
788 container
= gtk_vbox_new(FALSE
, HB_BOX_SPACING
);
789 gtk_container_set_border_width (GTK_CONTAINER (container
), HB_MAINBOX_SPACING
);
791 hbox
= gtk_hbox_new(FALSE
, HB_BOX_SPACING
);
792 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
794 label
= make_label(_("_Option:"), 1.0, 0.5);
795 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
796 data
->CY_option
[FILTER_PAYEE
] = make_nainex(label
);
797 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_PAYEE
], TRUE
, TRUE
, 0);
799 hbox
= gtk_hbox_new(FALSE
, HB_BOX_SPACING
);
800 gtk_box_pack_start (GTK_BOX (container
), hbox
, TRUE
, TRUE
, 0);
802 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
803 gtk_box_pack_start (GTK_BOX (hbox
), scrollwin
, TRUE
, TRUE
, 0);
805 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
806 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
807 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), HB_BOX_SPACING);
809 data
->LV_pay
= (GtkWidget
*)ui_pay_listview_new(TRUE
);
810 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_pay
);
812 vbox
= gtk_vbox_new(FALSE
, HB_BOX_SPACING
);
813 gtk_box_pack_start (GTK_BOX (hbox
), vbox
, FALSE
, FALSE
, 0);
815 widget
= gtk_button_new_with_label(_("All"));
816 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
817 data
->BT_pay
[BUTTON_ALL
] = widget
;
819 widget
= gtk_button_new_with_label(_("None"));
820 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
821 data
->BT_pay
[BUTTON_NONE
] = widget
;
823 widget
= gtk_button_new_with_label(_("Invert"));
824 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
825 data
->BT_pay
[BUTTON_INVERT
] = widget
;
833 static GtkWidget
*ui_flt_manage_page_account (struct ui_flt_manage_data
*data
)
835 GtkWidget
*container
, *scrollwin
, *hbox
, *vbox
, *label
, *widget
;
837 container
= gtk_vbox_new(FALSE
, HB_BOX_SPACING
);
838 gtk_container_set_border_width (GTK_CONTAINER (container
), HB_MAINBOX_SPACING
);
840 hbox
= gtk_hbox_new(FALSE
, HB_BOX_SPACING
);
841 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
843 label
= make_label(_("_Option:"), 1.0, 0.5);
844 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
845 data
->CY_option
[FILTER_ACCOUNT
] = make_nainex(label
);
846 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_ACCOUNT
], TRUE
, TRUE
, 0);
848 hbox
= gtk_hbox_new(FALSE
, HB_BOX_SPACING
);
849 gtk_box_pack_start (GTK_BOX (container
), hbox
, TRUE
, TRUE
, 0);
851 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
852 gtk_box_pack_start (GTK_BOX (hbox
), scrollwin
, TRUE
, TRUE
, 0);
854 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
855 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
856 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), HB_BOX_SPACING);
858 data
->LV_acc
= ui_acc_listview_new(TRUE
);
859 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_acc
);
861 vbox
= gtk_vbox_new(FALSE
, HB_BOX_SPACING
);
862 gtk_box_pack_start (GTK_BOX (hbox
), vbox
, FALSE
, FALSE
, 0);
864 widget
= gtk_button_new_with_label(_("All"));
865 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
866 data
->BT_acc
[BUTTON_ALL
] = widget
;
868 widget
= gtk_button_new_with_label(_("None"));
869 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
870 data
->BT_acc
[BUTTON_NONE
] = widget
;
872 widget
= gtk_button_new_with_label(_("Invert"));
873 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
874 data
->BT_acc
[BUTTON_INVERT
] = widget
;
880 static void get_period_minmax(guint month
, guint year
, guint32
*mindate
, guint32
*maxdate
)
887 // mindate is month 1, year :: maxdate is last day of month, year
888 g_date_set_dmy(date
, 1, month
, year
);
889 *mindate
= g_date_get_julian(date
);
890 g_date_add_days(date
, g_date_get_days_in_month(month
, year
));
891 *maxdate
= g_date_get_julian(date
)-1;
895 g_date_set_dmy(date
, 1, 1, year
);
896 *mindate
= g_date_get_julian(date
);
897 g_date_set_dmy(date
, 31, 12, year
);
898 *maxdate
= g_date_get_julian(date
);
905 static void ui_flt_manage_period_change(GtkWidget
*widget
, gpointer user_data
)
907 struct ui_flt_manage_data
*data
;
910 DB( g_print("(ui_flt_manage) period change\n") );
912 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
915 month
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_month
));
916 year
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->NB_year
));
918 DB( g_print(" month=%d, year=%d\n", month
, year
) );
922 get_period_minmax(month
-1, year
, &data
->filter
->mindate
, &data
->filter
->maxdate
);
924 get_period_minmax(0, year
, &data
->filter
->mindate
, &data
->filter
->maxdate
);
926 gtk_dateentry_set_date(GTK_DATE_ENTRY(data
->PO_mindate
), data
->filter
->mindate
);
927 gtk_dateentry_set_date(GTK_DATE_ENTRY(data
->PO_maxdate
), data
->filter
->maxdate
);
932 static GtkWidget
*ui_flt_manage_part_date(struct ui_flt_manage_data
*data
)
934 GtkWidget
*table
, *label
;
935 GtkWidget
*alignment
;
939 table
= gtk_table_new (3, 3, FALSE
);
940 gtk_table_set_row_spacings (GTK_TABLE (table
), HB_TABROW_SPACING
);
941 gtk_table_set_col_spacings (GTK_TABLE (table
), HB_TABCOL_SPACING
);
943 //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
944 // gtk_alignment_new(xalign, yalign, xscale, yscale)
945 alignment
= gtk_alignment_new(0.5, 0, 1.0, 0.0);
946 gtk_container_add(GTK_CONTAINER(alignment
), table
);
950 label
= make_label(_("Filter Date"), 0.0, 0.5);
951 gimp_label_set_attributes(GTK_LABEL(label
), PANGO_ATTR_WEIGHT
, PANGO_WEIGHT_BOLD
, -1);
952 gtk_table_attach_defaults (GTK_TABLE (table
), label
, 0, 3, row
, row
+1);
953 //gtk_table_attach (GTK_TABLE (table), label, 0, 3, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
956 label
= make_label("", 0.0, 0.5);
957 gtk_misc_set_padding (GTK_MISC (label
), HB_BOX_SPACING
, 0);
958 gtk_table_attach (GTK_TABLE (table
), label
, 0, 1, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
960 label
= make_label(_("_Option:"), 0, 0.5);
961 //----------------------------------------- l, r, t, b
962 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
963 data
->CY_option
[FILTER_DATE
] = make_nainex(label
);
964 //gtk_table_attach_defaults (GTK_TABLE (table), data->CY_option[FILTER_DATE], 1, 2, row, row+1);
965 gtk_table_attach (GTK_TABLE (table
), data
->CY_option
[FILTER_DATE
], 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
968 label
= make_label(_("_From:"), 0, 0.5);
969 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
970 data
->PO_mindate
= gtk_dateentry_new();
971 //data->PO_mindate = gtk_entry_new();
972 //gtk_table_attach_defaults (GTK_TABLE (table), data->PO_mindate, 1, 2, row, row+1);
973 gtk_table_attach (GTK_TABLE (table
), data
->PO_mindate
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
976 label
= make_label(_("_To:"), 0, 0.5);
977 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
978 data
->PO_maxdate
= gtk_dateentry_new();
979 //data->PO_maxdate = gtk_entry_new();
980 //gtk_table_attach_defaults (GTK_TABLE (table), data->PO_maxdate, 1, 2, row, row+1);
981 gtk_table_attach (GTK_TABLE (table
), data
->PO_maxdate
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
984 label
= make_label(_("_Month:"), 0, 0.5);
985 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
986 data
->CY_month
= make_cycle(label
, CYA_SELECT
);
987 gtk_table_attach (GTK_TABLE (table
), data
->CY_month
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
990 label
= make_label(_("_Year:"), 0, 0.5);
991 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
992 data
->NB_year
= make_year(label
);
993 gtk_table_attach (GTK_TABLE (table
), data
->NB_year
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
995 gtk_container_set_border_width(GTK_CONTAINER(alignment
), HB_BOX_SPACING
);
1001 static GtkWidget
*ui_flt_manage_part_text(struct ui_flt_manage_data
*data
)
1003 GtkWidget
*table
, *label
;
1004 GtkWidget
*alignment
;
1007 table
= gtk_table_new (3, 3, FALSE
);
1008 gtk_table_set_row_spacings (GTK_TABLE (table
), HB_TABROW_SPACING
);
1009 gtk_table_set_col_spacings (GTK_TABLE (table
), HB_TABCOL_SPACING
);
1011 //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
1012 // gtk_alignment_new(xalign, yalign, xscale, yscale)
1013 alignment
= gtk_alignment_new(0.5, 0, 1.0, 0.0);
1014 gtk_container_add(GTK_CONTAINER(alignment
), table
);
1018 label
= make_label(_("Filter Text"), 0.0, 0.5);
1019 gimp_label_set_attributes(GTK_LABEL(label
), PANGO_ATTR_WEIGHT
, PANGO_WEIGHT_BOLD
, -1);
1020 gtk_table_attach_defaults (GTK_TABLE (table
), label
, 0, 3, row
, row
+1);
1023 label
= make_label("", 0.0, 0.5);
1024 gtk_misc_set_padding (GTK_MISC (label
), HB_BOX_SPACING
, 0);
1025 gtk_table_attach (GTK_TABLE (table
), label
, 0, 1, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1027 label
= make_label(_("_Option:"), 0, 0.5);
1028 //----------------------------------------- l, r, t, b
1029 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1031 //gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
1032 data
->CY_option
[FILTER_TEXT
] = make_nainex(label
);
1033 gtk_table_attach (GTK_TABLE (table
), data
->CY_option
[FILTER_TEXT
], 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1036 data
->CM_exact
= gtk_check_button_new_with_mnemonic (_("Case _sensitive"));
1037 gtk_table_attach (GTK_TABLE (table
), data
->CM_exact
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1040 label
= make_label(_("_Memo:"), 0, 0.5);
1041 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1042 data
->ST_wording
= make_string(label
);
1043 gtk_table_attach (GTK_TABLE (table
), data
->ST_wording
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1046 label
= make_label(_("_Info:"), 0, 0.5);
1047 //----------------------------------------- l, r, t, b
1048 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1049 data
->ST_info
= make_string(label
);
1050 gtk_table_attach (GTK_TABLE (table
), data
->ST_info
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1053 label
= make_label(_("_Tag:"), 0, 0.5);
1054 //----------------------------------------- l, r, t, b
1055 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1056 data
->ST_tag
= make_string(label
);
1057 gtk_table_attach (GTK_TABLE (table
), data
->ST_tag
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1059 gtk_container_set_border_width(GTK_CONTAINER(alignment
), HB_BOX_SPACING
);
1064 static GtkWidget
*ui_flt_manage_part_amount(struct ui_flt_manage_data
*data
)
1066 GtkWidget
*table
, *label
;
1067 GtkWidget
*alignment
;
1071 table
= gtk_table_new (3, 3, FALSE
);
1072 gtk_table_set_row_spacings (GTK_TABLE (table
), HB_TABROW_SPACING
);
1073 gtk_table_set_col_spacings (GTK_TABLE (table
), HB_TABCOL_SPACING
);
1075 //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
1076 // gtk_alignment_new(xalign, yalign, xscale, yscale)
1077 alignment
= gtk_alignment_new(0.5, 0, 1.0, 0.0);
1078 gtk_container_add(GTK_CONTAINER(alignment
), table
);
1083 label
= make_label(_("Filter Amount"), 0.0, 0.5);
1084 gimp_label_set_attributes(GTK_LABEL(label
), PANGO_ATTR_WEIGHT
, PANGO_WEIGHT_BOLD
, -1);
1085 gtk_table_attach_defaults (GTK_TABLE (table
), label
, 0, 3, row
, row
+1);
1088 label
= make_label("", 0.0, 0.5);
1089 gtk_misc_set_padding (GTK_MISC (label
), HB_BOX_SPACING
, 0);
1090 gtk_table_attach (GTK_TABLE (table
), label
, 0, 1, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1092 label
= make_label(_("_Option:"), 0, 0.5);
1093 //----------------------------------------- l, r, t, b
1094 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1096 //gtk_table_attach (GTK_TABLE (table), label, 0, 1, row, row+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
1097 data
->CY_option
[FILTER_AMOUNT
] = make_nainex(label
);
1098 gtk_table_attach (GTK_TABLE (table
), data
->CY_option
[FILTER_AMOUNT
], 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1101 label
= make_label(_("_From:"), 0, 0.5);
1102 //----------------------------------------- l, r, t, b
1103 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1104 data
->ST_minamount
= make_amount(label
);
1105 gtk_table_attach (GTK_TABLE (table
), data
->ST_minamount
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1108 label
= make_label(_("_To:"), 0, 0.5);
1109 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1110 data
->ST_maxamount
= make_amount(label
);
1111 gtk_table_attach (GTK_TABLE (table
), data
->ST_maxamount
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1113 gtk_container_set_border_width(GTK_CONTAINER(alignment
), HB_BOX_SPACING
);
1120 static GtkWidget
*ui_flt_manage_part_status(struct ui_flt_manage_data
*data
)
1122 GtkWidget
*table
, *label
, *vbox
, *widget
;
1123 GtkWidget
*alignment
;
1130 table
= gtk_table_new (3, 3, FALSE
);
1131 gtk_table_set_row_spacings (GTK_TABLE (table
), HB_TABROW_SPACING
);
1132 gtk_table_set_col_spacings (GTK_TABLE (table
), HB_TABCOL_SPACING
);
1134 //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
1135 // gtk_alignment_new(xalign, yalign, xscale, yscale)
1136 alignment
= gtk_alignment_new(0.5, 0, 1.0, 0.0);
1137 gtk_container_add(GTK_CONTAINER(alignment
), table
);
1141 label
= make_label(_("Filter Status"), 0.0, 0.5);
1142 gimp_label_set_attributes(GTK_LABEL(label
), PANGO_ATTR_WEIGHT
, PANGO_WEIGHT_BOLD
, -1);
1143 gtk_table_attach_defaults (GTK_TABLE (table
), label
, 0, 3, row
, row
+1);
1146 label
= make_label("", 0.0, 0.5);
1147 gtk_misc_set_padding (GTK_MISC (label
), HB_BOX_SPACING
, 0);
1148 gtk_table_attach (GTK_TABLE (table
), label
, 0, 1, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1150 label
= make_label(_("_Option:"), 0, 0.5);
1151 //----------------------------------------- l, r, t, b
1152 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1154 data
->CY_option
[FILTER_STATUS
] = make_nainex(label
);
1155 gtk_table_attach (GTK_TABLE (table
), data
->CY_option
[FILTER_STATUS
], 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1158 vbox
= gtk_vbox_new (FALSE
, 0);
1159 gtk_table_attach (GTK_TABLE (table
), vbox
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1161 widget
= gtk_check_button_new_with_mnemonic (_("reconciled"));
1162 data
->CM_reconciled
= widget
;
1163 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1165 widget
= gtk_check_button_new_with_mnemonic (_("remind"));
1166 data
->CM_reminded
= widget
;
1167 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1170 label
= make_label(_("Force:"), 0, 0.5);
1171 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1173 vbox
= gtk_vbox_new (FALSE
, 0);
1174 gtk_table_attach (GTK_TABLE (table
), vbox
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1176 widget
= gtk_check_button_new_with_mnemonic (_("display 'Added'"));
1177 data
->CM_forceadd
= widget
;
1178 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1180 widget
= gtk_check_button_new_with_mnemonic (_("display 'Edited'"));
1181 data
->CM_forcechg
= widget
;
1182 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1184 gtk_container_set_border_width(GTK_CONTAINER(alignment
), HB_BOX_SPACING
);
1191 static GtkWidget
*ui_flt_manage_part_paymode(struct ui_flt_manage_data
*data
)
1193 GtkWidget
*table
, *label
, *table1
, *image
;
1194 GtkWidget
*alignment
;
1198 table
= gtk_table_new (3, 3, FALSE
);
1199 gtk_table_set_row_spacings (GTK_TABLE (table
), HB_TABROW_SPACING
);
1200 gtk_table_set_col_spacings (GTK_TABLE (table
), HB_TABCOL_SPACING
);
1202 //gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
1203 // gtk_alignment_new(xalign, yalign, xscale, yscale)
1204 alignment
= gtk_alignment_new(0.5, 0, 1.0, 0.0);
1205 gtk_container_add(GTK_CONTAINER(alignment
), table
);
1209 label
= make_label(_("Filter Payment"), 0.0, 0.5);
1210 gimp_label_set_attributes(GTK_LABEL(label
), PANGO_ATTR_WEIGHT
, PANGO_WEIGHT_BOLD
, -1);
1211 gtk_table_attach_defaults (GTK_TABLE (table
), label
, 0, 3, row
, row
+1);
1215 label
= make_label("", 0.0, 0.5);
1216 gtk_misc_set_padding (GTK_MISC (label
), HB_BOX_SPACING
, 0);
1217 gtk_table_attach (GTK_TABLE (table
), label
, 0, 1, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1219 label
= make_label(_("_Option:"), 1.0, 0.5);
1220 //----------------------------------------- l, r, t, b
1221 gtk_table_attach (GTK_TABLE (table
), label
, 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1222 data
->CY_option
[FILTER_PAYMODE
] = make_nainex(label
);
1223 gtk_table_attach (GTK_TABLE (table
), data
->CY_option
[FILTER_PAYMODE
], 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1225 table1
= gtk_table_new (1, 1, FALSE
);
1226 gtk_table_set_row_spacings (GTK_TABLE (table1
), 0);
1227 gtk_table_set_col_spacings (GTK_TABLE (table1
), 2);
1230 gtk_table_attach (GTK_TABLE (table
), table1
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1232 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
1236 image
= gtk_image_new_from_pixbuf(paymode_icons
[i
]);
1237 gtk_table_attach (GTK_TABLE (table1
), image
, 0, 1, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1239 data
->CM_paymode
[i
] = gtk_check_button_new();
1240 gtk_table_attach (GTK_TABLE (table1
), data
->CM_paymode
[i
], 1, 2, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
), (GtkAttachOptions
) (0), 0, 0);
1243 label
= make_label(_(paymode_label_names
[i
]), 0.0, 0.5);
1244 gtk_table_attach (GTK_TABLE (table1
), label
, 2, 3, row
, row
+1, (GtkAttachOptions
) (GTK_FILL
|GTK_EXPAND
), (GtkAttachOptions
) (0), 0, 0);
1248 gtk_container_set_border_width(GTK_CONTAINER(alignment
), HB_BOX_SPACING
);
1256 ** general page: date, amount, status, payment
1259 static GtkWidget *ui_flt_manage_page_general (struct ui_flt_manage_data *data)
1261 GtkWidget *container, *part;
1263 //container = gtk_hbox_new(FALSE, HB_BOX_SPACING);
1264 // gtk_alignment_new(xalign, yalign, xscale, yscale)
1265 //gtk_container_set_border_width(GTK_CONTAINER(container), HB_BOX_SPACING);
1267 container = gtk_table_new (2, 3, FALSE);
1268 gtk_table_set_row_spacings (GTK_TABLE (container), HB_TABROW_SPACING*2);
1269 gtk_table_set_col_spacings (GTK_TABLE (container), HB_TABCOL_SPACING*2);
1270 gtk_container_set_border_width(GTK_CONTAINER(container), HB_BOX_SPACING);
1273 part = ui_flt_manage_part_date(data);
1274 gtk_table_attach_defaults(GTK_TABLE (container), part, 0, 1, 0, 1);
1277 part = ui_flt_manage_part_amount(data);
1278 gtk_table_attach_defaults (GTK_TABLE (container), part, 0, 1, 1, 2);
1281 part = ui_flt_manage_part_paymode(data);
1282 gtk_table_attach_defaults (GTK_TABLE (container), part, 1, 2, 0, 2);
1285 part = ui_flt_manage_part_status(data);
1286 gtk_table_attach_defaults (GTK_TABLE (container), part, 2, 3, 0, 1);
1289 part = ui_flt_manage_part_text(data);
1290 gtk_table_attach_defaults (GTK_TABLE (container), part, 2, 3, 1, 2);
1292 gtk_container_set_border_width(GTK_CONTAINER(container), HB_BOX_SPACING);
1303 gint
ui_flt_manage_dialog_new(Filter
*filter
, gboolean show_account
)
1305 struct ui_flt_manage_data data
;
1306 GtkWidget
*window
, *content
, *mainbox
, *notebook
, *label
, *page
;
1308 //data = g_malloc0(sizeof(struct ui_flt_manage_data));
1309 //if(!data) return NULL;
1310 memset(&data
, 0, sizeof(data
));
1312 data
.filter
= filter
;
1314 window
= gtk_dialog_new_with_buttons (_("Edit Filter"),
1315 //GTK_WINDOW (do_widget),
1321 GTK_RESPONSE_REJECT
,
1323 GTK_RESPONSE_ACCEPT
,
1326 //homebank_window_set_icon_from_file(GTK_WINDOW (window), "filter.svg");
1327 gtk_window_set_icon_name(GTK_WINDOW (window
), HB_STOCK_FILTER
);
1329 //store our window private data
1330 g_object_set_data(G_OBJECT(window
), "inst_data", (gpointer
)&data
);
1331 DB( g_print("(ui_flt_manage) window=%x, inst_data=%x\n", (guint
)window
, (guint
)&data
) );
1333 g_signal_connect (window
, "destroy",
1334 G_CALLBACK (gtk_widget_destroyed
), &window
);
1336 content
= gtk_dialog_get_content_area(GTK_DIALOG (window
));
1337 mainbox
= gtk_vbox_new (FALSE
, HB_BOX_SPACING
);
1338 gtk_box_pack_start (GTK_BOX (content
), mainbox
, TRUE
, TRUE
, 0);
1339 gtk_container_set_border_width (GTK_CONTAINER(mainbox
), HB_MAINBOX_SPACING
);
1342 notebook
= gtk_notebook_new();
1343 gtk_notebook_set_tab_pos(GTK_NOTEBOOK (notebook
), GTK_POS_LEFT
);
1344 gtk_box_pack_start (GTK_BOX (mainbox
), notebook
, TRUE
, TRUE
, 0);
1345 data
.notebook
= notebook
;
1347 //common (date + status + amount)
1348 /* label = gtk_label_new(_("General"));
1349 page = ui_flt_manage_page_general(&data);
1350 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
1353 label
= gtk_label_new(_("Date"));
1354 page
= ui_flt_manage_part_date(&data
);
1355 gtk_widget_show(GTK_WIDGET(page
));
1356 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1358 label
= gtk_label_new(_("Status"));
1359 page
= ui_flt_manage_part_status(&data
);
1360 gtk_widget_show(GTK_WIDGET(page
));
1361 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1363 label
= gtk_label_new(_("Paymode"));
1364 page
= ui_flt_manage_part_paymode(&data
);
1365 gtk_widget_show(GTK_WIDGET(page
));
1366 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1368 label
= gtk_label_new(_("Amount"));
1369 page
= ui_flt_manage_part_amount(&data
);
1370 gtk_widget_show(GTK_WIDGET(page
));
1371 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1373 label
= gtk_label_new(_("Text"));
1374 page
= ui_flt_manage_part_text(&data
);
1375 gtk_widget_show(GTK_WIDGET(page
));
1376 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1378 label
= gtk_label_new(_("Category"));
1379 page
= ui_flt_manage_page_category(&data
);
1380 gtk_widget_show(GTK_WIDGET(page
));
1381 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1383 label
= gtk_label_new(_("Payee"));
1384 page
= ui_flt_manage_page_payee(&data
);
1385 gtk_widget_show(GTK_WIDGET(page
));
1386 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1388 data
.show_account
= show_account
;
1389 if(show_account
== TRUE
)
1391 label
= gtk_label_new(_("Account"));
1392 page
= ui_flt_manage_page_account(&data
);
1393 gtk_widget_show(GTK_WIDGET(page
));
1394 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1397 //setup, init and show window
1398 ui_flt_manage_setup(&data
);
1399 ui_flt_manage_set(&data
);
1401 ui_flt_manage_option_update(window
, NULL
);
1404 /* signal connect */
1405 g_signal_connect (data
.CY_option
[FILTER_STATUS
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1406 g_signal_connect (data
.CY_option
[FILTER_DATE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1407 g_signal_connect (data
.CY_option
[FILTER_AMOUNT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1408 g_signal_connect (data
.CY_option
[FILTER_PAYMODE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1410 g_signal_connect (data
.CY_option
[FILTER_PAYEE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1411 g_signal_connect (data
.CY_option
[FILTER_CATEGORY
], "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1412 g_signal_connect (data
.CY_option
[FILTER_TEXT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1414 if(show_account
== TRUE
)
1416 g_signal_connect (data
.CY_option
[FILTER_ACCOUNT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1418 g_signal_connect (data
.BT_acc
[BUTTON_ALL
] , "clicked", G_CALLBACK (ui_flt_manage_acc_select
), GINT_TO_POINTER(BUTTON_ALL
));
1419 g_signal_connect (data
.BT_acc
[BUTTON_NONE
] , "clicked", G_CALLBACK (ui_flt_manage_acc_select
), GINT_TO_POINTER(BUTTON_NONE
));
1420 g_signal_connect (data
.BT_acc
[BUTTON_INVERT
], "clicked", G_CALLBACK (ui_flt_manage_acc_select
), GINT_TO_POINTER(BUTTON_INVERT
));
1423 g_signal_connect (data
.CY_month
, "changed", G_CALLBACK (ui_flt_manage_period_change
), NULL
);
1424 g_signal_connect (data
.NB_year
, "value-changed", G_CALLBACK (ui_flt_manage_period_change
), NULL
);
1426 g_signal_connect (data
.BT_pay
[BUTTON_ALL
] , "clicked", G_CALLBACK (ui_flt_manage_pay_select
), GINT_TO_POINTER(BUTTON_ALL
));
1427 g_signal_connect (data
.BT_pay
[BUTTON_NONE
] , "clicked", G_CALLBACK (ui_flt_manage_pay_select
), GINT_TO_POINTER(BUTTON_NONE
));
1428 g_signal_connect (data
.BT_pay
[BUTTON_INVERT
], "clicked", G_CALLBACK (ui_flt_manage_pay_select
), GINT_TO_POINTER(BUTTON_INVERT
));
1430 g_signal_connect (data
.BT_cat
[BUTTON_ALL
] , "clicked", G_CALLBACK (ui_flt_manage_cat_select
), GINT_TO_POINTER(BUTTON_ALL
));
1431 g_signal_connect (data
.BT_cat
[BUTTON_NONE
] , "clicked", G_CALLBACK (ui_flt_manage_cat_select
), GINT_TO_POINTER(BUTTON_NONE
));
1432 g_signal_connect (data
.BT_cat
[BUTTON_INVERT
], "clicked", G_CALLBACK (ui_flt_manage_cat_select
), GINT_TO_POINTER(BUTTON_INVERT
));
1435 gtk_widget_show_all (window
);
1439 gint retval
; // = 55;
1441 //while( result == 55 )
1443 retval
= gtk_dialog_run (GTK_DIALOG (window
));
1447 case GTK_RESPONSE_ACCEPT
:
1448 //do_application_specific_something ();
1449 ui_flt_manage_get(&data
);
1452 ui_flt_manage_clear(window
, NULL
);
1453 ui_flt_manage_get(&data
);
1456 //do_nothing_since_dialog_was_cancelled ();
1461 // cleanup and destroy
1462 //ui_flt_manage_cleanup(&data, result);
1465 DB( g_print(" free\n") );
1468 DB( g_print(" destroy\n") );
1469 gtk_widget_destroy (window
);
1471 DB( g_print(" all ok\n") );