1 /* HomeBank -- Free, easy, personal accounting for everyone.
2 * Copyright (C) 1995-2017 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
[];
48 gchar
*CYA_FLT_TYPE
[] = {
56 gchar
*CYA_FLT_STATUS
[] = {
67 gchar
*CYA_FLT_RANGE
[] = {
107 /* = = = = = = = = = = = = = = = = = = = = */
112 static void ui_flt_manage_acc_select(GtkWidget
*widget
, gpointer user_data
)
114 struct ui_flt_manage_data
*data
;
115 gint select
= GPOINTER_TO_INT(user_data
);
121 DB( g_print("(ui_flt_manage) acc select\n") );
123 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
125 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
126 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
132 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, TRUE
, -1);
135 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, FALSE
, -1);
138 gtk_tree_model_get (model
, &iter
, LST_DEFACC_TOGGLE
, &toggle
, -1);
140 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFACC_TOGGLE
, toggle
, -1);
143 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
150 static void ui_flt_manage_pay_select(GtkWidget
*widget
, gpointer user_data
)
152 struct ui_flt_manage_data
*data
;
153 gint select
= GPOINTER_TO_INT(user_data
);
159 DB( g_print("(ui_flt_manage) pay select\n") );
161 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
163 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
164 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
170 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, TRUE
, -1);
173 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, FALSE
, -1);
176 gtk_tree_model_get (model
, &iter
, LST_DEFPAY_TOGGLE
, &toggle
, -1);
178 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, toggle
, -1);
181 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
188 static void ui_flt_manage_cat_select(GtkWidget
*widget
, gpointer user_data
)
190 struct ui_flt_manage_data
*data
;
191 gint select
= GPOINTER_TO_INT(user_data
);
193 GtkTreeIter iter
, child
;
198 DB( g_print("(ui_flt_manage) pay select\n") );
200 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
202 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
203 valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
209 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
212 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, FALSE
, -1);
215 gtk_tree_model_get (model
, &iter
, LST_DEFCAT_TOGGLE
, &toggle
, -1);
217 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, toggle
, -1);
221 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
222 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
229 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
232 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, FALSE
, -1);
235 gtk_tree_model_get (model
, &child
, LST_DEFCAT_TOGGLE
, &toggle
, -1);
237 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, toggle
, -1);
242 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
245 valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
253 static void ui_flt_manage_option_update(GtkWidget
*widget
, gpointer user_data
)
255 struct ui_flt_manage_data
*data
;
259 DB( g_print("(ui_flt_manage) update\n") );
261 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
264 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_STATUS
]));
265 sensitive
= active
== 0 ? FALSE
: TRUE
;
266 gtk_widget_set_sensitive(data
->CM_reconciled
, sensitive
);
267 gtk_widget_set_sensitive(data
->CM_cleared
, sensitive
);
270 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_DATE
]));
271 sensitive
= active
== 0 ? FALSE
: TRUE
;
272 gtk_widget_set_sensitive(data
->PO_mindate
, sensitive
);
273 gtk_widget_set_sensitive(data
->PO_maxdate
, sensitive
);
274 gtk_widget_set_sensitive(data
->CY_month
, sensitive
);
275 gtk_widget_set_sensitive(data
->NB_year
, sensitive
);
278 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_AMOUNT
]));
279 sensitive
= active
== 0 ? FALSE
: TRUE
;
280 gtk_widget_set_sensitive(data
->ST_minamount
, sensitive
);
281 gtk_widget_set_sensitive(data
->ST_maxamount
, sensitive
);
284 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_TEXT
]));
285 sensitive
= active
== 0 ? FALSE
: TRUE
;
286 gtk_widget_set_sensitive(data
->CM_exact
, sensitive
);
287 gtk_widget_set_sensitive(data
->ST_wording
, sensitive
);
288 gtk_widget_set_sensitive(data
->ST_info
, sensitive
);
289 gtk_widget_set_sensitive(data
->ST_tag
, sensitive
);
292 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_PAYMODE
]));
293 sensitive
= active
== 0 ? FALSE
: TRUE
;
294 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
296 gtk_widget_set_sensitive(data
->CM_paymode
[i
], sensitive
);
300 if(data
->show_account
== TRUE
)
302 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_ACCOUNT
]));
303 sensitive
= active
== 0 ? FALSE
: TRUE
;
304 gtk_widget_set_sensitive(data
->LV_acc
, sensitive
);
305 for(i
=0;i
<MAX_BUTTON
;i
++)
307 gtk_widget_set_sensitive(data
->BT_acc
[i
], sensitive
);
314 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_PAYEE
]));
315 sensitive
= active
== 0 ? FALSE
: TRUE
;
316 gtk_widget_set_sensitive(data
->LV_pay
, sensitive
);
317 for(i
=0;i
<MAX_BUTTON
;i
++)
319 gtk_widget_set_sensitive(data
->BT_pay
[i
], sensitive
);
323 active
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[FILTER_CATEGORY
]));
324 sensitive
= active
== 0 ? FALSE
: TRUE
;
325 gtk_widget_set_sensitive(data
->LV_cat
, sensitive
);
326 for(i
=0;i
<MAX_BUTTON
;i
++)
328 gtk_widget_set_sensitive(data
->BT_cat
[i
], sensitive
);
339 static void ui_flt_manage_get(struct ui_flt_manage_data
*data
)
344 DB( g_print("(ui_flt_manage) get\n") );
346 if(data
->filter
!=NULL
)
349 //GtkTreeSelection *selection;
350 GtkTreeIter iter
, child
;
355 for(i
=0;i
<FILTER_MAX
;i
++)
357 if(data
->show_account
== FALSE
&& i
== FILTER_ACCOUNT
)
360 data
->filter
->option
[i
] = gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_option
[i
]));
364 DB( g_print(" date\n") );
365 data
->filter
->mindate
= gtk_date_entry_get_date(GTK_DATE_ENTRY(data
->PO_mindate
));
366 data
->filter
->maxdate
= gtk_date_entry_get_date(GTK_DATE_ENTRY(data
->PO_maxdate
));
369 DB( g_print(" status\n") );
370 data
->filter
->reconciled
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_reconciled
));
371 data
->filter
->cleared
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_cleared
));
373 data
->filter
->forceadd
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forceadd
));
374 data
->filter
->forcechg
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forcechg
));
375 data
->filter
->forceremind
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_forceremind
));
378 DB( g_print(" paymode\n") );
379 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
380 data
->filter
->paymode
[i
] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_paymode
[i
]));
383 data
->filter
->minamount
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->ST_minamount
));
384 data
->filter
->maxamount
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->ST_maxamount
));
387 data
->filter
->exact
= gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data
->CM_exact
));
388 //free any previous string
389 if( data
->filter
->wording
)
391 g_free(data
->filter
->wording
);
392 data
->filter
->wording
= NULL
;
394 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_wording
));
396 if (txt
&& *txt
) // ignore if entry is empty
398 data
->filter
->wording
= g_strdup(txt
);
402 //free any previous string
403 if( data
->filter
->info
)
405 g_free(data
->filter
->info
);
406 data
->filter
->info
= NULL
;
408 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_info
));
409 // ignore if entry is empty
412 data
->filter
->info
= g_strdup(txt
);
416 //free any previous string
417 if( data
->filter
->tag
)
419 g_free(data
->filter
->tag
);
420 data
->filter
->tag
= NULL
;
422 txt
= (gchar
*)gtk_entry_get_text(GTK_ENTRY(data
->ST_tag
));
423 // ignore if entry is empty
426 data
->filter
->tag
= g_strdup(txt
);
431 if(data
->show_account
== TRUE
)
433 DB( g_print(" account\n") );
435 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
436 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
437 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
442 gtk_tree_model_get (model
, &iter
,
443 LST_DEFACC_TOGGLE
, &toggled
,
444 LST_DEFACC_DATAS
, &accitem
,
447 //data->filter->acc[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
448 accitem
->filter
= toggled
;
450 /* Make iter point to the next row in the list store */
451 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
456 DB( g_print(" payee\n") );
458 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
459 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
460 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
465 gtk_tree_model_get (model
, &iter
,
466 LST_DEFPAY_TOGGLE
, &toggled
,
467 LST_DEFPAY_DATAS
, &payitem
,
470 //data->filter->pay[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
471 payitem
->filter
= toggled
;
473 /* Make iter point to the next row in the list store */
474 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
478 DB( g_print(" category\n") );
480 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
481 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
482 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
487 gtk_tree_model_get (model
, &iter
,
488 LST_DEFCAT_TOGGLE
, &toggled
,
489 LST_DEFCAT_DATAS
, &catitem
,
492 //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
493 //data->filter->cat[i] = toggled;
494 catitem
->filter
= toggled
;
496 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
497 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
502 gtk_tree_model_get (model
, &child
,
503 LST_DEFCAT_TOGGLE
, &toggled
,
504 LST_DEFCAT_DATAS
, &catitem
,
508 //data->filter->cat[i] = toggled;
509 //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &child);
510 catitem
->filter
= toggled
;
513 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
516 /* Make iter point to the next row in the list store */
517 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
521 data
->filter
->last_tab
= gtk_notebook_get_current_page(GTK_NOTEBOOK(data
->notebook
));
522 DB( g_print(" page is %d\n", data
->filter
->last_tab
) );
532 static void ui_flt_manage_set(struct ui_flt_manage_data
*data
)
535 DB( g_print("(ui_flt_manage) set\n") );
537 if(data
->filter
!= NULL
)
540 //GtkTreeSelection *selection;
541 GtkTreeIter iter
, child
;
547 DB( g_print(" options\n") );
549 for(i
=0;i
<FILTER_MAX
;i
++)
551 if(data
->show_account
== FALSE
&& i
== FILTER_ACCOUNT
)
554 gtk_combo_box_set_active(GTK_COMBO_BOX(data
->CY_option
[i
]), data
->filter
->option
[i
]);
557 //DB( g_print(" setdate %d to %x\n", data->filter->mindate, data->PO_mindate) );
558 //DB( g_print(" setdate %d to %x\n", 0, data->PO_mindate) );
560 DB( g_print(" date\n") );
561 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_mindate
), data
->filter
->mindate
);
562 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_maxdate
), data
->filter
->maxdate
);
563 date
= g_date_new_julian(data
->filter
->maxdate
);
564 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->NB_year
), g_date_get_year(date
));
568 DB( g_print(" status\n") );
569 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_reconciled
), data
->filter
->reconciled
);
572 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forceadd
), data
->filter
->forceadd
);
573 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forcechg
), data
->filter
->forcechg
);
574 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_forceremind
), data
->filter
->forceremind
);
577 DB( g_print(" paymode\n") );
579 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
580 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_paymode
[i
]), data
->filter
->paymode
[i
]);
583 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->ST_minamount
), data
->filter
->minamount
);
584 gtk_spin_button_set_value(GTK_SPIN_BUTTON(data
->ST_maxamount
), data
->filter
->maxamount
);
587 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data
->CM_exact
), data
->filter
->exact
);
588 gtk_entry_set_text(GTK_ENTRY(data
->ST_info
), (data
->filter
->info
!= NULL
) ? data
->filter
->info
: "");
589 gtk_entry_set_text(GTK_ENTRY(data
->ST_wording
), (data
->filter
->wording
!= NULL
) ? data
->filter
->wording
: "");
590 gtk_entry_set_text(GTK_ENTRY(data
->ST_tag
), (data
->filter
->tag
!= NULL
) ? data
->filter
->tag
: "");
593 if(data
->show_account
== TRUE
)
595 DB( g_print(" account\n") );
597 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_acc
));
598 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
599 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
604 gtk_tree_model_get (model
, &iter
,
605 LST_DEFACC_DATAS
, &accitem
,
608 if(accitem
->filter
== TRUE
)
609 //gtk_tree_selection_select_iter(selection, &iter);
610 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
,
611 LST_DEFACC_TOGGLE
, TRUE
, -1);
613 /* Make iter point to the next row in the list store */
614 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
619 DB( g_print(" payee\n") );
621 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_pay
));
622 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
623 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
628 gtk_tree_model_get (model
, &iter
,
629 LST_DEFPAY_DATAS
, &payitem
,
632 if(payitem
->filter
== TRUE
)
633 gtk_list_store_set (GTK_LIST_STORE (model
), &iter
, LST_DEFPAY_TOGGLE
, TRUE
, -1);
635 /* Make iter point to the next row in the list store */
636 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
640 DB( g_print(" category\n") );
642 model
= gtk_tree_view_get_model(GTK_TREE_VIEW(data
->LV_cat
));
643 //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat));
644 i
=0; valid
= gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model
), &iter
);
649 gtk_tree_model_get (model
, &iter
,
650 LST_DEFCAT_DATAS
, &catitem
,
653 if(catitem
->filter
== TRUE
)
654 gtk_tree_store_set (GTK_TREE_STORE (model
), &iter
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
656 n_child
= gtk_tree_model_iter_n_children (GTK_TREE_MODEL(model
), &iter
);
657 gtk_tree_model_iter_children (GTK_TREE_MODEL(model
), &child
, &iter
);
662 gtk_tree_model_get (model
, &child
,
663 LST_DEFCAT_DATAS
, &catitem
,
666 if(catitem
->filter
== TRUE
)
667 gtk_tree_store_set (GTK_TREE_STORE (model
), &child
, LST_DEFCAT_TOGGLE
, TRUE
, -1);
670 gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &child
);
673 /* Make iter point to the next row in the list store */
674 i
++; valid
= gtk_tree_model_iter_next(GTK_TREE_MODEL(model
), &iter
);
678 gtk_notebook_set_current_page(GTK_NOTEBOOK(data
->notebook
), data
->filter
->last_tab
);
679 DB( g_print(" set page %d\n", data
->filter
->last_tab
) );
688 static void ui_flt_manage_clear(GtkWidget
*widget
, gpointer user_data
)
690 struct ui_flt_manage_data
*data
;
692 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget
), GTK_TYPE_WINDOW
)), "inst_data");
694 DB( g_print("(ui_flt_manage) clear\n") );
696 filter_default_all_set(data
->filter
);
698 ui_flt_manage_set(data
);
706 static void ui_flt_manage_setup(struct ui_flt_manage_data
*data
)
709 DB( g_print("(ui_flt_manage) setup\n") );
711 if(data
->show_account
== TRUE
&& data
->LV_acc
!= NULL
)
713 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc))), GTK_SELECTION_MULTIPLE);
715 ui_acc_listview_populate(data
->LV_acc
, ACC_LST_INSERT_REPORT
);
716 //populate_view_acc(data->LV_acc, GLOBALS->acc_list, FALSE);
721 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay))), GTK_SELECTION_MULTIPLE);
723 ui_pay_listview_populate(data
->LV_pay
);
724 //populate_view_pay(data->LV_pay, GLOBALS->pay_list, FALSE);
729 //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_cat))), GTK_SELECTION_MULTIPLE);
731 //populate_view_cat(data->LV_cat, GLOBALS->cat_list, FALSE);
732 ui_cat_listview_populate(data
->LV_cat
, CAT_TYPE_ALL
);
733 gtk_tree_view_expand_all (GTK_TREE_VIEW(data
->LV_cat
));
740 static GtkWidget
*ui_flt_manage_page_category (struct ui_flt_manage_data
*data
)
742 GtkWidget
*container
, *scrollwin
, *hbox
, *vbox
, *label
, *widget
;
744 container
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
745 gtk_container_set_border_width (GTK_CONTAINER (container
), SPACING_MEDIUM
);
747 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
748 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
750 label
= make_label_widget(_("_Option:"));
751 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
752 data
->CY_option
[FILTER_CATEGORY
] = make_nainex(label
);
753 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_CATEGORY
], TRUE
, TRUE
, 0);
755 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
756 gtk_box_pack_start (GTK_BOX (container
), hbox
, TRUE
, TRUE
, 0);
758 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
759 gtk_box_pack_start (GTK_BOX (hbox
), scrollwin
, TRUE
, TRUE
, 0);
761 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
762 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
763 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
765 data
->LV_cat
= (GtkWidget
*)ui_cat_listview_new(TRUE
, FALSE
);
766 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_cat
);
768 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
769 gtk_box_pack_start (GTK_BOX (hbox
), vbox
, FALSE
, FALSE
, 0);
771 widget
= gtk_button_new_with_label(_("All"));
772 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
773 data
->BT_cat
[BUTTON_ALL
] = widget
;
775 widget
= gtk_button_new_with_label(_("None"));
776 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
777 data
->BT_cat
[BUTTON_NONE
] = widget
;
779 widget
= gtk_button_new_with_label(_("Invert"));
780 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
781 data
->BT_cat
[BUTTON_INVERT
] = widget
;
789 static GtkWidget
*ui_flt_manage_page_payee (struct ui_flt_manage_data
*data
)
791 GtkWidget
*container
, *scrollwin
, *hbox
, *vbox
, *label
, *widget
;
793 container
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
794 gtk_container_set_border_width (GTK_CONTAINER (container
), SPACING_MEDIUM
);
796 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
797 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
799 label
= make_label_widget(_("_Option:"));
800 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
801 data
->CY_option
[FILTER_PAYEE
] = make_nainex(label
);
802 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_PAYEE
], TRUE
, TRUE
, 0);
804 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
805 gtk_box_pack_start (GTK_BOX (container
), hbox
, TRUE
, TRUE
, 0);
807 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
808 gtk_box_pack_start (GTK_BOX (hbox
), scrollwin
, TRUE
, TRUE
, 0);
810 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
811 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
812 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
814 data
->LV_pay
= (GtkWidget
*)ui_pay_listview_new(TRUE
, FALSE
);
815 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_pay
);
817 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
818 gtk_box_pack_start (GTK_BOX (hbox
), vbox
, FALSE
, FALSE
, 0);
820 widget
= gtk_button_new_with_label(_("All"));
821 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
822 data
->BT_pay
[BUTTON_ALL
] = widget
;
824 widget
= gtk_button_new_with_label(_("None"));
825 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
826 data
->BT_pay
[BUTTON_NONE
] = widget
;
828 widget
= gtk_button_new_with_label(_("Invert"));
829 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
830 data
->BT_pay
[BUTTON_INVERT
] = widget
;
838 static GtkWidget
*ui_flt_manage_page_account (struct ui_flt_manage_data
*data
)
840 GtkWidget
*container
, *scrollwin
, *hbox
, *vbox
, *label
, *widget
;
842 container
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
843 gtk_container_set_border_width (GTK_CONTAINER (container
), SPACING_MEDIUM
);
845 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
846 gtk_box_pack_start (GTK_BOX (container
), hbox
, FALSE
, FALSE
, 0);
848 label
= make_label_widget(_("_Option:"));
849 gtk_box_pack_start (GTK_BOX (hbox
), label
, TRUE
, TRUE
, 0);
850 data
->CY_option
[FILTER_ACCOUNT
] = make_nainex(label
);
851 gtk_box_pack_start (GTK_BOX (hbox
), data
->CY_option
[FILTER_ACCOUNT
], TRUE
, TRUE
, 0);
853 hbox
= gtk_box_new(GTK_ORIENTATION_HORIZONTAL
, SPACING_SMALL
);
854 gtk_box_pack_start (GTK_BOX (container
), hbox
, TRUE
, TRUE
, 0);
856 scrollwin
= gtk_scrolled_window_new(NULL
,NULL
);
857 gtk_box_pack_start (GTK_BOX (hbox
), scrollwin
, TRUE
, TRUE
, 0);
859 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin
), GTK_POLICY_NEVER
, GTK_POLICY_AUTOMATIC
);
860 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin
), GTK_SHADOW_ETCHED_IN
);
861 //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
863 data
->LV_acc
= ui_acc_listview_new(TRUE
);
864 gtk_container_add(GTK_CONTAINER(scrollwin
), data
->LV_acc
);
866 vbox
= gtk_box_new(GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
867 gtk_box_pack_start (GTK_BOX (hbox
), vbox
, FALSE
, FALSE
, 0);
869 widget
= gtk_button_new_with_label(_("All"));
870 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
871 data
->BT_acc
[BUTTON_ALL
] = widget
;
873 widget
= gtk_button_new_with_label(_("None"));
874 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
875 data
->BT_acc
[BUTTON_NONE
] = widget
;
877 widget
= gtk_button_new_with_label(_("Invert"));
878 gtk_box_pack_start (GTK_BOX (vbox
), widget
, FALSE
, FALSE
, 0);
879 data
->BT_acc
[BUTTON_INVERT
] = widget
;
885 static void get_period_minmax(guint month
, guint year
, guint32
*mindate
, guint32
*maxdate
)
892 // mindate is month 1, year :: maxdate is last day of month, year
893 g_date_set_dmy(date
, 1, month
, year
);
894 *mindate
= g_date_get_julian(date
);
895 g_date_add_days(date
, g_date_get_days_in_month(month
, year
));
896 *maxdate
= g_date_get_julian(date
)-1;
900 g_date_set_dmy(date
, 1, 1, year
);
901 *mindate
= g_date_get_julian(date
);
902 g_date_set_dmy(date
, 31, 12, year
);
903 *maxdate
= g_date_get_julian(date
);
910 static void ui_flt_manage_period_change(GtkWidget
*widget
, gpointer user_data
)
912 struct ui_flt_manage_data
*data
;
915 DB( g_print("(ui_flt_manage) period change\n") );
917 data
= g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget
, GTK_TYPE_WINDOW
)), "inst_data");
920 month
= gtk_combo_box_get_active(GTK_COMBO_BOX(data
->CY_month
));
921 year
= gtk_spin_button_get_value(GTK_SPIN_BUTTON(data
->NB_year
));
923 DB( g_print(" month=%d, year=%d\n", month
, year
) );
927 get_period_minmax(month
-1, year
, &data
->filter
->mindate
, &data
->filter
->maxdate
);
929 get_period_minmax(0, year
, &data
->filter
->mindate
, &data
->filter
->maxdate
);
931 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_mindate
), data
->filter
->mindate
);
932 gtk_date_entry_set_date(GTK_DATE_ENTRY(data
->PO_maxdate
), data
->filter
->maxdate
);
937 static GtkWidget
*ui_flt_manage_part_date(struct ui_flt_manage_data
*data
)
939 GtkWidget
*table
, *label
;
943 table
= gtk_grid_new ();
944 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
945 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
946 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
949 label
= make_label_group(_("Filter Date"));
950 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
953 label
= make_label_widget(_("_Option:"));
954 //----------------------------------------- l, r, t, b
955 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
956 data
->CY_option
[FILTER_DATE
] = make_nainex(label
);
957 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_DATE
], 2, row
, 1, 1);
960 label
= make_label_widget(_("_From:"));
961 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
962 data
->PO_mindate
= gtk_date_entry_new();
963 //data->PO_mindate = gtk_entry_new();
964 //gtk_grid_attach (GTK_GRID (table), data->PO_mindate, 1, 2, row, row+1);
965 gtk_grid_attach (GTK_GRID (table
), data
->PO_mindate
, 2, row
, 1, 1);
968 label
= make_label_widget(_("_To:"));
969 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
970 data
->PO_maxdate
= gtk_date_entry_new();
971 //data->PO_maxdate = gtk_entry_new();
972 //gtk_grid_attach (GTK_GRID (table), data->PO_maxdate, 1, 2, row, row+1);
973 gtk_grid_attach (GTK_GRID (table
), data
->PO_maxdate
, 2, row
, 1, 1);
976 label
= make_label_widget(_("_Month:"));
977 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
978 data
->CY_month
= make_cycle(label
, CYA_SELECT
);
979 gtk_grid_attach (GTK_GRID (table
), data
->CY_month
, 2, row
, 1, 1);
982 label
= make_label_widget(_("_Year:"));
983 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
984 data
->NB_year
= make_year(label
);
985 gtk_grid_attach (GTK_GRID (table
), data
->NB_year
, 2, row
, 1, 1);
992 static GtkWidget
*ui_flt_manage_part_text(struct ui_flt_manage_data
*data
)
994 GtkWidget
*table
, *label
;
997 table
= gtk_grid_new ();
998 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
999 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1000 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1003 label
= make_label_group(_("Filter Text"));
1004 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1007 label
= make_label_widget(_("_Option:"));
1008 //----------------------------------------- l, r, t, b
1009 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1011 //gtk_grid_attach (GTK_GRID (table), label, 0, 1, row, row+1);
1012 data
->CY_option
[FILTER_TEXT
] = make_nainex(label
);
1013 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_TEXT
], 2, row
, 1, 1);
1016 data
->CM_exact
= gtk_check_button_new_with_mnemonic (_("Case _sensitive"));
1017 gtk_grid_attach (GTK_GRID (table
), data
->CM_exact
, 2, row
, 1, 1);
1020 label
= make_label_widget(_("_Memo:"));
1021 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1022 data
->ST_wording
= make_string(label
);
1023 gtk_widget_set_hexpand (data
->ST_wording
, TRUE
);
1024 gtk_grid_attach (GTK_GRID (table
), data
->ST_wording
, 2, row
, 1, 1);
1027 label
= make_label_widget(_("_Info:"));
1028 //----------------------------------------- l, r, t, b
1029 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1030 data
->ST_info
= make_string(label
);
1031 gtk_widget_set_hexpand (data
->ST_info
, TRUE
);
1032 gtk_grid_attach (GTK_GRID (table
), data
->ST_info
, 2, row
, 1, 1);
1035 label
= make_label_widget(_("_Tag:"));
1036 //----------------------------------------- l, r, t, b
1037 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1038 data
->ST_tag
= make_string(label
);
1039 gtk_widget_set_hexpand (data
->ST_tag
, TRUE
);
1040 gtk_grid_attach (GTK_GRID (table
), data
->ST_tag
, 2, row
, 1, 1);
1046 static GtkWidget
*ui_flt_manage_part_amount(struct ui_flt_manage_data
*data
)
1048 GtkWidget
*table
, *label
;
1052 table
= gtk_grid_new ();
1053 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1054 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1055 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1060 label
= make_label_group(_("Filter Amount"));
1061 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1064 label
= make_label_widget(_("_Option:"));
1065 //----------------------------------------- l, r, t, b
1066 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1068 //gtk_grid_attach (GTK_GRID (table), label, 0, 1, row, row+1);
1069 data
->CY_option
[FILTER_AMOUNT
] = make_nainex(label
);
1070 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_AMOUNT
], 2, row
, 1, 1);
1073 label
= make_label_widget(_("_From:"));
1074 //----------------------------------------- l, r, t, b
1075 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1076 data
->ST_minamount
= make_amount(label
);
1077 gtk_grid_attach (GTK_GRID (table
), data
->ST_minamount
, 2, row
, 1, 1);
1080 label
= make_label_widget(_("_To:"));
1081 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1082 data
->ST_maxamount
= make_amount(label
);
1083 gtk_grid_attach (GTK_GRID (table
), data
->ST_maxamount
, 2, row
, 1, 1);
1091 static GtkWidget
*ui_flt_manage_part_status(struct ui_flt_manage_data
*data
)
1093 GtkWidget
*table
, *label
, *vbox
, *widget
;
1100 table
= gtk_grid_new ();
1101 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1102 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1103 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1106 label
= make_label_group (_("Filter Status"));
1107 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1110 label
= make_label_widget(_("_Option:"));
1111 //----------------------------------------- l, r, t, b
1112 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1114 data
->CY_option
[FILTER_STATUS
] = make_nainex(label
);
1115 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_STATUS
], 2, row
, 1, 1);
1118 vbox
= gtk_box_new (GTK_ORIENTATION_VERTICAL
, 0);
1119 gtk_grid_attach (GTK_GRID (table
), vbox
, 2, row
, 1, 1);
1121 widget
= gtk_check_button_new_with_mnemonic (_("reconciled"));
1122 data
->CM_reconciled
= widget
;
1123 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1125 widget
= gtk_check_button_new_with_mnemonic (_("cleared"));
1126 data
->CM_cleared
= widget
;
1127 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1130 label
= make_label_widget(_("Force:"));
1131 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1133 vbox
= gtk_box_new (GTK_ORIENTATION_VERTICAL
, 0);
1134 gtk_grid_attach (GTK_GRID (table
), vbox
, 2, row
, 1, 1);
1136 widget
= gtk_check_button_new_with_mnemonic (_("display 'Added'"));
1137 data
->CM_forceadd
= widget
;
1138 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1140 widget
= gtk_check_button_new_with_mnemonic (_("display 'Edited'"));
1141 data
->CM_forcechg
= widget
;
1142 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1144 widget
= gtk_check_button_new_with_mnemonic (_("display 'Remind'"));
1145 data
->CM_forceremind
= widget
;
1146 gtk_box_pack_start (GTK_BOX (vbox
), widget
, TRUE
, TRUE
, 0);
1152 static GtkWidget
*ui_flt_manage_part_paymode(struct ui_flt_manage_data
*data
)
1154 GtkWidget
*table
, *label
, *table1
, *image
;
1158 table
= gtk_grid_new ();
1159 gtk_grid_set_row_spacing (GTK_GRID (table
), SPACING_SMALL
);
1160 gtk_grid_set_column_spacing (GTK_GRID (table
), SPACING_MEDIUM
);
1161 gtk_container_set_border_width(GTK_CONTAINER(table
), SPACING_MEDIUM
);
1165 label
= make_label_group(_("Filter Payment"));
1166 gtk_grid_attach (GTK_GRID (table
), label
, 0, row
, 3, 1);
1170 label
= make_label_widget(_("_Option:"));
1171 //----------------------------------------- l, r, t, b
1172 gtk_grid_attach (GTK_GRID (table
), label
, 1, row
, 1, 1);
1173 data
->CY_option
[FILTER_PAYMODE
] = make_nainex(label
);
1174 gtk_grid_attach (GTK_GRID (table
), data
->CY_option
[FILTER_PAYMODE
], 2, row
, 1, 1);
1176 table1
= gtk_grid_new ();
1177 gtk_grid_set_row_spacing (GTK_GRID (table1
), 0);
1178 gtk_grid_set_column_spacing (GTK_GRID (table1
), 2);
1181 gtk_grid_attach (GTK_GRID (table
), table1
, 2, row
, 1, 1);
1183 for(i
=0;i
<NUM_PAYMODE_MAX
;i
++)
1187 data
->CM_paymode
[i
] = gtk_check_button_new();
1188 gtk_grid_attach (GTK_GRID (table1
), data
->CM_paymode
[i
], 0, row
, 1, 1);
1190 image
= gtk_image_new_from_icon_name( get_paymode_icon_name(i
), GTK_ICON_SIZE_MENU
);
1191 gtk_grid_attach (GTK_GRID (table1
), image
, 1, row
, 1, 1);
1193 label
= make_label(_(paymode_label_names
[i
]), 0.0, 0.5);
1194 gtk_grid_attach (GTK_GRID (table1
), label
, 2, row
, 1, 1);
1205 ** general page: date, amount, status, payment
1208 static GtkWidget *ui_flt_manage_page_general (struct ui_flt_manage_data *data)
1210 GtkWidget *container, *part;
1212 //container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
1213 // gtk_alignment_new(xalign, yalign, xscale, yscale)
1214 //gtk_container_set_border_width(GTK_CONTAINER(container), SPACING_SMALL);
1216 container = gtk_grid_new (2, 3, FALSE);
1217 gtk_grid_set_row_spacing (GTK_GRID (container), SPACING_SMALL*2);
1218 gtk_grid_set_column_spacing (GTK_GRID (container), SPACING_MEDIUM*2);
1219 gtk_container_set_border_width(GTK_CONTAINER(container), SPACING_SMALL);
1222 part = ui_flt_manage_part_date(data);
1223 gtk_grid_attach(GTK_GRID (container), part, 0, 1, 0, 1);
1226 part = ui_flt_manage_part_amount(data);
1227 gtk_grid_attach (GTK_GRID (container), part, 0, 1, 1, 2);
1230 part = ui_flt_manage_part_paymode(data);
1231 gtk_grid_attach (GTK_GRID (container), part, 1, 2, 0, 2);
1234 part = ui_flt_manage_part_status(data);
1235 gtk_grid_attach (GTK_GRID (container), part, 2, 3, 0, 1);
1238 part = ui_flt_manage_part_text(data);
1239 gtk_grid_attach (GTK_GRID (container), part, 2, 3, 1, 2);
1241 gtk_container_set_border_width(GTK_CONTAINER(container), SPACING_SMALL);
1252 gint
ui_flt_manage_dialog_new(GtkWidget
*widget
, Filter
*filter
, gboolean show_account
)
1254 struct ui_flt_manage_data data
;
1255 GtkWidget
*parentwindow
, *window
, *content
, *mainbox
, *notebook
, *label
, *page
;
1257 //data = g_malloc0(sizeof(struct ui_flt_manage_data));
1258 //if(!data) return NULL;
1259 memset(&data
, 0, sizeof(data
));
1261 data
.filter
= filter
;
1263 parentwindow
= gtk_widget_get_ancestor(GTK_WIDGET(widget
), GTK_TYPE_WINDOW
);
1265 window
= gtk_dialog_new_with_buttons (_("Edit filter"),
1266 GTK_WINDOW (parentwindow
),
1271 GTK_RESPONSE_REJECT
,
1273 GTK_RESPONSE_ACCEPT
,
1276 gtk_window_set_icon_name(GTK_WINDOW (window
), ICONNAME_HB_FILTER
);
1278 //store our window private data
1279 g_object_set_data(G_OBJECT(window
), "inst_data", (gpointer
)&data
);
1280 DB( g_print("(ui_flt_manage) window=%x, inst_data=%x\n", (guint
)window
, (guint
)&data
) );
1282 g_signal_connect (window
, "destroy",
1283 G_CALLBACK (gtk_widget_destroyed
), &window
);
1285 content
= gtk_dialog_get_content_area(GTK_DIALOG (window
));
1286 mainbox
= gtk_box_new (GTK_ORIENTATION_VERTICAL
, SPACING_SMALL
);
1287 gtk_box_pack_start (GTK_BOX (content
), mainbox
, TRUE
, TRUE
, 0);
1288 gtk_container_set_border_width (GTK_CONTAINER(mainbox
), SPACING_MEDIUM
);
1291 notebook
= gtk_notebook_new();
1292 gtk_notebook_set_tab_pos(GTK_NOTEBOOK (notebook
), GTK_POS_LEFT
);
1293 gtk_box_pack_start (GTK_BOX (mainbox
), notebook
, TRUE
, TRUE
, 0);
1294 data
.notebook
= notebook
;
1296 //common (date + status + amount)
1297 /* label = gtk_label_new(_("General"));
1298 page = ui_flt_manage_page_general(&data);
1299 gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
1302 label
= gtk_label_new(_("Date"));
1303 page
= ui_flt_manage_part_date(&data
);
1304 gtk_widget_show(GTK_WIDGET(page
));
1305 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1307 label
= gtk_label_new(_("Status"));
1308 page
= ui_flt_manage_part_status(&data
);
1309 gtk_widget_show(GTK_WIDGET(page
));
1310 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1312 label
= gtk_label_new(_("Payment"));
1313 page
= ui_flt_manage_part_paymode(&data
);
1314 gtk_widget_show(GTK_WIDGET(page
));
1315 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1317 label
= gtk_label_new(_("Amount"));
1318 page
= ui_flt_manage_part_amount(&data
);
1319 gtk_widget_show(GTK_WIDGET(page
));
1320 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1322 label
= gtk_label_new(_("Text"));
1323 page
= ui_flt_manage_part_text(&data
);
1324 gtk_widget_show(GTK_WIDGET(page
));
1325 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1327 label
= gtk_label_new(_("Category"));
1328 page
= ui_flt_manage_page_category(&data
);
1329 gtk_widget_show(GTK_WIDGET(page
));
1330 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1332 label
= gtk_label_new(_("Payee"));
1333 page
= ui_flt_manage_page_payee(&data
);
1334 gtk_widget_show(GTK_WIDGET(page
));
1335 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1337 data
.show_account
= show_account
;
1338 if(show_account
== TRUE
)
1340 label
= gtk_label_new(_("Account"));
1341 page
= ui_flt_manage_page_account(&data
);
1342 gtk_widget_show(GTK_WIDGET(page
));
1343 gtk_notebook_append_page (GTK_NOTEBOOK (notebook
), page
, label
);
1346 //setup, init and show window
1347 ui_flt_manage_setup(&data
);
1348 ui_flt_manage_set(&data
);
1350 ui_flt_manage_option_update(window
, NULL
);
1353 /* signal connect */
1354 g_signal_connect (data
.CY_option
[FILTER_STATUS
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1355 g_signal_connect (data
.CY_option
[FILTER_DATE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1356 g_signal_connect (data
.CY_option
[FILTER_AMOUNT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1357 g_signal_connect (data
.CY_option
[FILTER_PAYMODE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1359 g_signal_connect (data
.CY_option
[FILTER_PAYEE
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1360 g_signal_connect (data
.CY_option
[FILTER_CATEGORY
], "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1361 g_signal_connect (data
.CY_option
[FILTER_TEXT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1363 if(show_account
== TRUE
)
1365 g_signal_connect (data
.CY_option
[FILTER_ACCOUNT
] , "changed", G_CALLBACK (ui_flt_manage_option_update
), NULL
);
1367 g_signal_connect (data
.BT_acc
[BUTTON_ALL
] , "clicked", G_CALLBACK (ui_flt_manage_acc_select
), GINT_TO_POINTER(BUTTON_ALL
));
1368 g_signal_connect (data
.BT_acc
[BUTTON_NONE
] , "clicked", G_CALLBACK (ui_flt_manage_acc_select
), GINT_TO_POINTER(BUTTON_NONE
));
1369 g_signal_connect (data
.BT_acc
[BUTTON_INVERT
], "clicked", G_CALLBACK (ui_flt_manage_acc_select
), GINT_TO_POINTER(BUTTON_INVERT
));
1372 g_signal_connect (data
.CY_month
, "changed", G_CALLBACK (ui_flt_manage_period_change
), NULL
);
1373 g_signal_connect (data
.NB_year
, "value-changed", G_CALLBACK (ui_flt_manage_period_change
), NULL
);
1375 g_signal_connect (data
.BT_pay
[BUTTON_ALL
] , "clicked", G_CALLBACK (ui_flt_manage_pay_select
), GINT_TO_POINTER(BUTTON_ALL
));
1376 g_signal_connect (data
.BT_pay
[BUTTON_NONE
] , "clicked", G_CALLBACK (ui_flt_manage_pay_select
), GINT_TO_POINTER(BUTTON_NONE
));
1377 g_signal_connect (data
.BT_pay
[BUTTON_INVERT
], "clicked", G_CALLBACK (ui_flt_manage_pay_select
), GINT_TO_POINTER(BUTTON_INVERT
));
1379 g_signal_connect (data
.BT_cat
[BUTTON_ALL
] , "clicked", G_CALLBACK (ui_flt_manage_cat_select
), GINT_TO_POINTER(BUTTON_ALL
));
1380 g_signal_connect (data
.BT_cat
[BUTTON_NONE
] , "clicked", G_CALLBACK (ui_flt_manage_cat_select
), GINT_TO_POINTER(BUTTON_NONE
));
1381 g_signal_connect (data
.BT_cat
[BUTTON_INVERT
], "clicked", G_CALLBACK (ui_flt_manage_cat_select
), GINT_TO_POINTER(BUTTON_INVERT
));
1384 gtk_widget_show_all (window
);
1388 gint retval
; // = 55;
1390 //while( result == 55 )
1392 retval
= gtk_dialog_run (GTK_DIALOG (window
));
1396 case GTK_RESPONSE_ACCEPT
:
1397 //do_application_specific_something ();
1398 ui_flt_manage_get(&data
);
1401 ui_flt_manage_clear(window
, NULL
);
1402 ui_flt_manage_get(&data
);
1405 //do_nothing_since_dialog_was_cancelled ();
1410 // cleanup and destroy
1411 //ui_flt_manage_cleanup(&data, result);
1414 DB( g_print(" free\n") );
1417 DB( g_print(" destroy\n") );
1418 gtk_widget_destroy (window
);
1420 DB( g_print(" all ok\n") );