~veselkovsd/homebank/ignore_week-end

« back to all changes in this revision

Viewing changes to src/ui-filter.c

  • Committer: Maxime Doyen
  • Date: 2020-01-09 20:51:22 UTC
  • Revision ID: homebank@free.fr-20200109205122-160pgd4y7hirpins
5.3 release

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*  HomeBank -- Free, easy, personal accounting for everyone.
2
 
 *  Copyright (C) 1995-2019 Maxime DOYEN
 
2
 *  Copyright (C) 1995-2020 Maxime DOYEN
3
3
 *
4
4
 *  This file is part of HomeBank.
5
5
 *
46
46
extern gchar *CYA_FLT_STATUS[];
47
47
extern gchar *CYA_FLT_RANGE[];
48
48
extern gchar *CYA_SELECT[];
49
 
extern char *paymode_label_names[];
 
49
 
50
50
extern gchar *nainex_label_names[];
51
51
 
 
52
extern HbKivData CYA_TXN_PAYMODE[NUM_PAYMODE_MAX];
 
53
 
52
54
 
53
55
/* = = = = = = = = = = = = = = = = = = = = */
54
56
 
55
 
 
 
57
//#1828732 add expand/collapse all for categories in edit filter
56
58
static void ui_flt_hub_category_expand_all(GtkWidget *widget, gpointer user_data)
57
59
{
58
60
struct ui_flt_manage_data *data;
77
79
}
78
80
 
79
81
 
80
 
static void ui_flt_panel_category_get(struct ui_flt_manage_data *data)
 
82
static void ui_flt_hub_category_get(Filter *flt, struct ui_flt_manage_data *data)
81
83
{
82
84
gint i;
83
85
 
84
 
        DB( g_print("(ui_flt_panel_category) get\n") );
 
86
        DB( g_print("(ui_flt_hub_category) get\n") );
85
87
 
86
88
        if(data->filter !=NULL)
87
89
        {
123
125
                                        LST_DEFCAT_DATAS, &catitem,
124
126
                                        -1);
125
127
 
 
128
                                DB( g_print(" subcat k:%3d = %d (%s)\n", catitem->key, toggled, catitem->name) );
 
129
                                da_flt_status_cat_set(flt, catitem->key, toggled);
126
130
 
127
131
                                //data->filter->cat[i] = toggled;
128
132
                                //data->filter->cat[i] = gtk_tree_selection_iter_is_selected(selection, &child);
140
144
}
141
145
 
142
146
 
143
 
static void ui_flt_panel_category_set(struct ui_flt_manage_data *data)
 
147
static void ui_flt_hub_category_set(Filter *flt, struct ui_flt_manage_data *data)
144
148
{
145
149
 
146
 
        DB( g_print("(ui_flt_panel_category) set\n") );
 
150
        DB( g_print("(ui_flt_hub_category) set\n") );
147
151
 
148
152
        if(data->filter != NULL)
149
153
        {
199
203
}
200
204
 
201
205
 
202
 
 
203
206
static void ui_flt_manage_cat_select(GtkWidget *widget, gpointer user_data)
204
207
{
205
208
struct ui_flt_manage_data *data;
265
268
 
266
269
 
267
270
static gboolean
268
 
ui_flt_panel_category_activate_link (GtkWidget   *label,
 
271
ui_flt_hub_category_activate_link (GtkWidget   *label,
269
272
               const gchar *uri,
270
273
               gpointer     data)
271
274
{
291
294
 
292
295
 
293
296
static GtkWidget *
294
 
ui_flt_panel_category_new (struct ui_flt_manage_data *data)
 
297
ui_flt_hub_category_new (struct ui_flt_manage_data *data)
295
298
{
296
299
GtkWidget *hubbox, *scrollwin, *hbox, *vbox, *widget, *label, *tbar;
297
300
GtkToolItem *toolitem;
298
301
        
299
302
        hubbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
300
303
 
301
 
        label = make_label (_("Categories"), 0, 0);
 
304
        /*label = make_label (_("Categories"), 0, 0);
302
305
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
303
 
        gtk_box_pack_start (GTK_BOX (hubbox), label, FALSE, FALSE, 0);  
 
306
        gtk_box_pack_start (GTK_BOX (hubbox), label, FALSE, FALSE, 0);*/        
304
307
 
305
 
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
 
308
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
306
309
        gtk_box_pack_start (GTK_BOX (hubbox), hbox, FALSE, FALSE, 0);
307
310
 
308
311
        label = make_label (_("Select:"), 0, 0.5);
 
312
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_SMALL, -1);
309
313
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
310
314
 
311
315
        label = make_clicklabel("all", _("All"));
312
316
        data->BT_cat[BUTTON_ALL] = label;
313
317
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
314
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link), NULL);
 
318
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_hub_category_activate_link), NULL);
315
319
        
316
320
        label = make_clicklabel("non", _("None"));
317
321
        data->BT_cat[BUTTON_NONE] = label;
318
322
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
319
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link), NULL);
 
323
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_hub_category_activate_link), NULL);
320
324
 
321
325
        label = make_clicklabel("inv", _("Invert"));
322
326
        data->BT_cat[BUTTON_INVERT] = label;
323
327
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
324
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_category_activate_link), NULL);
 
328
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_hub_category_activate_link), NULL);
325
329
 
326
330
        //list
327
331
        vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
373
377
/* = = = = = = = = = = = = = = = = */
374
378
 
375
379
 
 
380
static void ui_flt_hub_payee_get(Filter *flt, struct ui_flt_manage_data *data)
 
381
{
 
382
GtkTreeModel *model;
 
383
GtkTreeIter     iter;
 
384
gboolean valid;
 
385
gboolean toggled;
 
386
gint i;
 
387
 
 
388
        DB( g_print("(ui_flt_hub_payee) get\n") );
 
389
 
 
390
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_pay));
 
391
        //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
 
392
        i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
 
393
        while (valid)
 
394
        {
 
395
        Payee *payitem;
 
396
 
 
397
                gtk_tree_model_get (model, &iter,
 
398
                        LST_DEFPAY_TOGGLE, &toggled,
 
399
                        LST_DEFPAY_DATAS, &payitem,
 
400
                        -1);
 
401
 
 
402
                DB( g_print(" payee k:%3d = %d (%s)\n", payitem->key, toggled, payitem->name) );
 
403
                da_flt_status_pay_set(flt, payitem->key, toggled);
 
404
                
 
405
                //payitem->flt_select = toggled;
 
406
 
 
407
                /* Make iter point to the next row in the list store */
 
408
                i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
 
409
        }
 
410
 
 
411
}
 
412
 
 
413
 
 
414
static void ui_flt_hub_payee_set(Filter *flt, struct ui_flt_manage_data *data)
 
415
{
 
416
 
 
417
        DB( g_print("(ui_flt_hub_payee) set\n") );
 
418
 
 
419
        if(data->filter != NULL)
 
420
        {
 
421
        GtkTreeModel *model;
 
422
        //GtkTreeSelection *selection;
 
423
        GtkTreeIter     iter;
 
424
        gboolean valid;
 
425
        gint i;
 
426
 
 
427
                model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_pay));
 
428
                //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
 
429
                i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
 
430
                while (valid)
 
431
                {
 
432
                Payee *payitem;
 
433
                gboolean status;
 
434
 
 
435
                        gtk_tree_model_get (model, &iter,
 
436
                                LST_DEFPAY_DATAS, &payitem,
 
437
                                -1);
 
438
 
 
439
                        status = da_flt_status_pay_get(flt, payitem->key);
 
440
                        gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFPAY_TOGGLE, status, -1);
 
441
 
 
442
                        /* Make iter point to the next row in the list store */
 
443
                        i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
 
444
                }
 
445
 
 
446
 
 
447
        }
 
448
}
 
449
 
 
450
 
376
451
static void ui_flt_manage_pay_select(GtkWidget *widget, gpointer user_data)
377
452
{
378
453
struct ui_flt_manage_data *data;
409
484
}
410
485
 
411
486
 
412
 
 
413
487
static gboolean
414
 
ui_flt_panel_payee_activate_link (GtkWidget   *label,
 
488
ui_flt_hub_payee_activate_link (GtkWidget   *label,
415
489
               const gchar *uri,
416
490
               gpointer     data)
417
491
{
437
511
 
438
512
 
439
513
static GtkWidget *
440
 
ui_flt_panel_payee_new (struct ui_flt_manage_data *data)
 
514
ui_flt_hub_payee_new (struct ui_flt_manage_data *data)
441
515
{
442
516
GtkWidget *scrollwin, *hbox, *vbox, *label;
443
517
 
444
518
        vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
445
519
 
446
 
        label = make_label (_("Payees"), 0, 0);
 
520
        /*label = make_label (_("Payees"), 0, 0);
447
521
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
448
 
        gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);    
 
522
        gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);*/  
449
523
 
450
 
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
 
524
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
451
525
        gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
452
526
 
453
527
        label = make_label (_("Select:"), 0, 0.5);
 
528
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_SMALL, -1);
454
529
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
455
530
 
456
531
        label = make_clicklabel("all", _("All"));
457
532
        data->BT_pay[BUTTON_ALL] = label;
458
533
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
459
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link), NULL);
 
534
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_hub_payee_activate_link), NULL);
460
535
        
461
536
        label = make_clicklabel("non", _("None"));
462
537
        data->BT_pay[BUTTON_NONE] = label;
463
538
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
464
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link), NULL);
 
539
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_hub_payee_activate_link), NULL);
465
540
 
466
541
        label = make_clicklabel("inv", _("Invert"));
467
542
        data->BT_pay[BUTTON_INVERT] = label;
468
543
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
469
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_payee_activate_link), NULL);
 
544
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_hub_payee_activate_link), NULL);
470
545
 
471
546
        scrollwin = gtk_scrolled_window_new(NULL,NULL);
472
547
        gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
482
557
}
483
558
 
484
559
 
485
 
 
486
 
 
487
 
 
488
 
 
489
 
 
490
560
/* = = = = = = = = = = = = = = = = */
491
561
 
492
 
static void ui_flt_manage_acc_select(GtkWidget *widget, gpointer user_data)
493
 
{
494
 
struct ui_flt_manage_data *data;
495
 
gint select = GPOINTER_TO_INT(user_data);
496
 
GtkTreeModel *model;
497
 
GtkTreeIter     iter;
498
 
gboolean valid;
499
 
gboolean toggle;
500
 
 
501
 
        DB( g_print("(ui_flt_manage) acc select\n") );
502
 
 
503
 
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
504
 
 
505
 
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_acc));
506
 
        valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
507
 
        while (valid)
508
 
        {
509
 
                switch(select)
510
 
                {
511
 
                        case BUTTON_ALL:
512
 
                                gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, TRUE, -1);
513
 
                                break;
514
 
                        case BUTTON_NONE:
515
 
                                gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, FALSE, -1);
516
 
                                break;
517
 
                        case BUTTON_INVERT:
518
 
                                        gtk_tree_model_get (model, &iter, LST_DEFACC_TOGGLE, &toggle, -1);
519
 
                                        toggle ^= 1;
520
 
                                        gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, toggle, -1);
521
 
                                break;
522
 
                }
523
 
                valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
524
 
        }
 
562
 
 
563
static void ui_flt_hub_account_get(Filter *flt, struct ui_flt_hub_stuf *data)
 
564
{
 
565
GtkTreeModel *model;
 
566
GtkTreeIter     iter;
 
567
gboolean valid;
 
568
gint i;
 
569
 
 
570
        DB( g_print("(ui_flt_hub_account) get\n") );
 
571
 
 
572
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->treeview));
 
573
        //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
 
574
        i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
 
575
        while (valid)
 
576
        {
 
577
        Account *accitem;
 
578
        gboolean toggled;
 
579
 
 
580
                gtk_tree_model_get (model, &iter,
 
581
                        LST_DEFACC_TOGGLE, &toggled,
 
582
                        LST_DEFACC_DATAS, &accitem,
 
583
                        -1);
 
584
 
 
585
                DB( g_print(" acc k:%3d = %d (%s)\n", accitem->key, toggled, accitem->name) );
 
586
                da_flt_status_acc_set(flt, accitem->key, toggled);
 
587
 
 
588
                //accitem->flt_select = toggled;
 
589
 
 
590
                /* Make iter point to the next row in the list store */
 
591
                i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
 
592
        }
 
593
}
 
594
 
 
595
 
 
596
static void ui_flt_hub_account_set(Filter *flt, struct ui_flt_hub_stuf *data)
 
597
{
 
598
GtkTreeModel *model;
 
599
GtkTreeIter     iter;
 
600
gboolean valid;
 
601
gint i;
 
602
 
 
603
        DB( g_print("(ui_flt_hub_account) set\n") );
 
604
 
 
605
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->treeview));
 
606
        //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
 
607
        i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
 
608
        while (valid)
 
609
        {
 
610
        Account *accitem;
 
611
        gboolean status;
 
612
 
 
613
                gtk_tree_model_get (model, &iter,
 
614
                        LST_DEFACC_DATAS, &accitem,
 
615
                        -1);
 
616
 
 
617
                status = da_flt_status_acc_get(flt, accitem->key);
 
618
                        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
 
619
                                LST_DEFACC_TOGGLE, status, -1);
 
620
 
 
621
                /* Make iter point to the next row in the list store */
 
622
                i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
 
623
        }
 
624
 
 
625
 
525
626
}
526
627
 
527
628
 
528
629
static gboolean
529
 
ui_flt_panel_account_activate_link (GtkWidget   *label,
 
630
ui_flt_hub_account_activate_link (GtkWidget   *label,
530
631
               const gchar *uri,
531
 
               gpointer     data)
 
632
               gpointer     user_data)
532
633
{
 
634
GtkTreeModel *model;
 
635
GtkTreeIter     iter;
 
636
gboolean valid;
 
637
gboolean toggle;
 
638
 
 
639
        DB( g_print("(ui_flt_hub_account) activate_link\n") );
 
640
 
 
641
        g_return_val_if_fail(GTK_IS_TREE_VIEW(user_data), TRUE);
 
642
 
 
643
        model = gtk_tree_view_get_model(GTK_TREE_VIEW(user_data));
 
644
 
533
645
        DB( g_print(" comboboxlink '%s' \n", uri) );
534
646
 
535
647
        if (g_strcmp0 (uri, "all") == 0)        
536
648
        {
537
 
                ui_flt_manage_acc_select(label, GINT_TO_POINTER(BUTTON_ALL) );
 
649
                valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
 
650
                while (valid)
 
651
                {
 
652
                        gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, TRUE, -1);
 
653
                        valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
 
654
                }
538
655
        }
539
656
        else
540
657
        if (g_strcmp0 (uri, "non") == 0)        
541
658
        {
542
 
                ui_flt_manage_acc_select(label, GINT_TO_POINTER(BUTTON_NONE) );
 
659
                valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
 
660
                while (valid)
 
661
                {
 
662
                        gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, FALSE, -1);
 
663
                        valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
 
664
                }
543
665
        }
544
666
        else
545
667
        if (g_strcmp0 (uri, "inv") == 0)        
546
668
        {
547
 
                ui_flt_manage_acc_select(label, GINT_TO_POINTER(BUTTON_INVERT) );
 
669
                valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
 
670
                while (valid)
 
671
                {
 
672
                        gtk_tree_model_get (model, &iter, LST_DEFACC_TOGGLE, &toggle, -1);
 
673
                        toggle ^= 1;
 
674
                        gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFACC_TOGGLE, toggle, -1);
 
675
                        valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
 
676
                }
548
677
        }
549
678
 
550
679
    return TRUE;
551
680
}
552
681
 
 
682
 
553
683
static GtkWidget *
554
 
ui_flt_panel_account_new (struct ui_flt_manage_data *data)
 
684
ui_flt_hub_account_new (struct ui_flt_hub_stuf *data)
555
685
{
556
686
GtkWidget *scrollwin, *hbox, *vbox, *label;
557
687
 
 
688
        DB( g_print("(ui_flt_hub_account) new\n") );
 
689
 
558
690
        vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
559
691
 
560
 
        label = make_label (_("Accounts"), 0, 0);
 
692
        /*label = make_label (_("Accounts"), 0, 0);
561
693
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
562
 
        gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);    
 
694
        gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);*/
563
695
 
564
 
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
 
696
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
565
697
        gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
566
698
 
567
699
        label = make_label (_("Select:"), 0, 0.5);
 
700
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_SMALL, -1);
568
701
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
569
702
 
570
703
        label = make_clicklabel("all", _("All"));
571
 
        data->BT_acc[BUTTON_ALL] = label;
 
704
        data->BT_all= label;
572
705
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
573
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link), NULL);
574
706
        
575
707
        label = make_clicklabel("non", _("None"));
576
 
        data->BT_acc[BUTTON_NONE] = label;
 
708
        data->BT_none = label;
577
709
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
578
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link), NULL);
579
710
 
580
711
        label = make_clicklabel("inv", _("Invert"));
581
 
        data->BT_acc[BUTTON_INVERT] = label;
 
712
        data->BT_invert = label;
582
713
        gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
583
 
        g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_panel_account_activate_link), NULL);
584
714
 
585
715
        scrollwin = gtk_scrolled_window_new(NULL,NULL);
 
716
        //gtk_widget_set_size_request (scrollwin, HB_MINWIDTH_LIST, HB_MINHEIGHT_LIST);
 
717
 
586
718
        gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
587
719
 
588
720
        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
589
721
        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), GTK_SHADOW_ETCHED_IN);
590
722
        //gtk_container_set_border_width (GTK_CONTAINER(scrollwin), SPACING_SMALL);
591
723
 
592
 
        data->LV_acc = (GtkWidget *)ui_acc_listview_new(TRUE);
593
 
        gtk_container_add(GTK_CONTAINER(scrollwin), data->LV_acc);
 
724
        data->treeview = (GtkWidget *)ui_acc_listview_new(TRUE);
 
725
        gtk_container_add(GTK_CONTAINER(scrollwin), data->treeview);
 
726
 
 
727
        g_signal_connect (data->BT_all, "activate-link", G_CALLBACK (ui_flt_hub_account_activate_link), data->treeview);
 
728
        g_signal_connect (data->BT_none, "activate-link", G_CALLBACK (ui_flt_hub_account_activate_link), data->treeview);
 
729
        g_signal_connect (data->BT_invert, "activate-link", G_CALLBACK (ui_flt_hub_account_activate_link), data->treeview);
594
730
 
595
731
        return(vbox);
596
732
}
609
745
static void ui_flt_manage_option_update(GtkWidget *widget, gpointer user_data)
610
746
{
611
747
struct ui_flt_manage_data *data;
612
 
gint active, i;
 
748
gint active;
613
749
gboolean sensitive;
614
750
 
615
751
        DB( g_print("(ui_flt_manage) update\n") );
619
755
        // status
620
756
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_STATUS]));
621
757
        sensitive = active == 0 ? FALSE : TRUE;
622
 
        gtk_widget_set_sensitive(data->CM_reconciled, sensitive);
623
 
        gtk_widget_set_sensitive(data->CM_cleared, sensitive);
 
758
        gtk_widget_set_sensitive(data->GR_page[FILTER_STATUS], sensitive);
624
759
 
 
760
        // type
 
761
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_TYPE]));
 
762
        sensitive = active == 0 ? FALSE : TRUE;
 
763
        gtk_widget_set_sensitive(data->GR_page[FILTER_TYPE], sensitive);
 
764
        
625
765
        // date
626
766
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_DATE]));
627
767
        sensitive = active == 0 ? FALSE : TRUE;
628
 
        gtk_widget_set_sensitive(data->PO_mindate, sensitive);
629
 
        gtk_widget_set_sensitive(data->PO_maxdate, sensitive);
630
 
        gtk_widget_set_sensitive(data->CY_month, sensitive);
631
 
        gtk_widget_set_sensitive(data->NB_year, sensitive);
 
768
        gtk_widget_set_sensitive(data->GR_page[FILTER_DATE], sensitive);
632
769
 
633
770
        // amount
634
771
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_AMOUNT]));
635
772
        sensitive = active == 0 ? FALSE : TRUE;
636
 
        gtk_widget_set_sensitive(data->ST_minamount, sensitive);
637
 
        gtk_widget_set_sensitive(data->ST_maxamount, sensitive);
 
773
        gtk_widget_set_sensitive(data->GR_page[FILTER_AMOUNT], sensitive);
638
774
 
639
775
        // text
640
776
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_TEXT]));
641
777
        sensitive = active == 0 ? FALSE : TRUE;
642
 
        gtk_widget_set_sensitive(data->CM_exact, sensitive);
643
 
        gtk_widget_set_sensitive(data->ST_memo, sensitive);
644
 
        gtk_widget_set_sensitive(data->ST_info, sensitive);
645
 
        gtk_widget_set_sensitive(data->ST_tag, sensitive);
 
778
        gtk_widget_set_sensitive(data->GR_page[FILTER_TEXT], sensitive);
646
779
 
647
 
        //paymode
 
780
        // paymode
648
781
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_PAYMODE]));
649
782
        sensitive = active == 0 ? FALSE : TRUE;
650
 
        for(i=0;i<NUM_PAYMODE_MAX;i++)
651
 
        {
652
 
                gtk_widget_set_sensitive(data->CM_paymode[i], sensitive);
653
 
        }
 
783
        gtk_widget_set_sensitive(data->GR_page[FILTER_PAYMODE], sensitive);
654
784
 
655
 
        //account
 
785
        // account
656
786
        if(data->show_account == TRUE)
657
787
        {
658
788
                active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_ACCOUNT]));
659
789
                sensitive = active == 0 ? FALSE : TRUE;
660
 
                gtk_widget_set_sensitive(data->LV_acc, sensitive);
661
 
                for(i=0;i<MAX_BUTTON;i++)
662
 
                {
663
 
                        gtk_widget_set_sensitive(data->BT_acc[i], sensitive);
664
 
                }
665
 
 
666
 
 
 
790
                gtk_widget_set_sensitive(data->GR_page[FILTER_ACCOUNT], sensitive);
667
791
        }
668
792
 
669
 
        //payee
 
793
        // payee
670
794
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_PAYEE]));
671
795
        sensitive = active == 0 ? FALSE : TRUE;
672
 
        gtk_widget_set_sensitive(data->LV_pay, sensitive);
673
 
        for(i=0;i<MAX_BUTTON;i++)
674
 
        {
675
 
                gtk_widget_set_sensitive(data->BT_pay[i], sensitive);
676
 
        }
 
796
        gtk_widget_set_sensitive(data->GR_page[FILTER_PAYEE], sensitive);
677
797
 
678
 
        //category
 
798
        // category
679
799
        active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_option[FILTER_CATEGORY]));
680
800
        sensitive = active == 0 ? FALSE : TRUE;
681
 
        gtk_widget_set_sensitive(data->LV_cat, sensitive);
682
 
        for(i=0;i<MAX_BUTTON;i++)
683
 
        {
684
 
                gtk_widget_set_sensitive(data->BT_cat[i], sensitive);
685
 
        }
686
 
 
687
 
 
 
801
        gtk_widget_set_sensitive(data->GR_page[FILTER_CATEGORY], sensitive);
688
802
 
689
803
}
690
804
 
701
815
 
702
816
        if(data->filter !=NULL)
703
817
        {
704
 
        GtkTreeModel *model;
705
 
        //GtkTreeSelection *selection;
706
 
        GtkTreeIter     iter;
707
 
 
708
 
        gboolean valid;
709
 
        gboolean toggled;
710
818
 
711
819
                for(i=0;i<FILTER_MAX;i++)
712
820
                {
722
830
                data->filter->maxdate = gtk_date_entry_get_date(GTK_DATE_ENTRY(data->PO_maxdate));
723
831
 
724
832
        //status
725
 
                DB( g_print(" status\n") );
726
 
                data->filter->reconciled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_reconciled));
727
 
                data->filter->cleared  = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_cleared));
 
833
                DB( g_print(" status/type\n") );
 
834
                data->filter->type = hbtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(data->CY_type));
 
835
                data->filter->status = hbtk_combo_box_get_active_id(GTK_COMBO_BOX_TEXT(data->CY_status));
728
836
 
729
837
                data->filter->forceadd = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_forceadd));
730
838
                data->filter->forcechg = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_forcechg));
731
839
                data->filter->forceremind  = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_forceremind));
 
840
                data->filter->forcevoid  = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_forcevoid));
732
841
 
733
842
        //paymode
734
843
                DB( g_print(" paymode\n") );
735
844
                for(i=0;i<NUM_PAYMODE_MAX;i++)
736
 
                        data->filter->paymode[i] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]));
 
845
                {
 
846
                gint uid;
 
847
                        
 
848
                        if( !GTK_IS_TOGGLE_BUTTON(data->CM_paymode[i] ))
 
849
                                continue;
737
850
 
 
851
                        uid = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(data->CM_paymode[i]), "uid")); 
 
852
                        data->filter->paymode[uid] = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]));
 
853
                }
 
854
                        
738
855
        //amount
739
856
                data->filter->minamount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_minamount));
740
857
                data->filter->maxamount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_maxamount));
782
899
                        data->filter->tag = g_strdup(txt);
783
900
                }
784
901
 
785
 
 
786
902
        // account
787
903
                if(data->show_account == TRUE)
788
904
                {
789
 
                        DB( g_print(" account\n") );
790
 
 
791
 
                        model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_acc));
792
 
                        //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
793
 
                        i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
794
 
                        while (valid)
795
 
                        {
796
 
                        Account *accitem;
797
 
 
798
 
                                gtk_tree_model_get (model, &iter,
799
 
                                        LST_DEFACC_TOGGLE, &toggled,
800
 
                                        LST_DEFACC_DATAS, &accitem,
801
 
                                        -1);
802
 
 
803
 
                                //data->filter->acc[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
804
 
                                accitem->flt_select = toggled;
805
 
 
806
 
                                /* Make iter point to the next row in the list store */
807
 
                                i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
808
 
                        }
 
905
                        ui_flt_hub_account_get(data->filter, &data->pnl_acc_data);
809
906
                }
810
907
 
811
908
        // payee
812
 
                DB( g_print(" payee\n") );
813
 
 
814
 
                model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_pay));
815
 
                //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
816
 
                i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
817
 
                while (valid)
818
 
                {
819
 
                Payee *payitem;
820
 
 
821
 
                        gtk_tree_model_get (model, &iter,
822
 
                                LST_DEFPAY_TOGGLE, &toggled,
823
 
                                LST_DEFPAY_DATAS, &payitem,
824
 
                                -1);
825
 
 
826
 
                        //data->filter->pay[i] = gtk_tree_selection_iter_is_selected(selection, &iter);
827
 
                        payitem->flt_select = toggled;
828
 
 
829
 
                        /* Make iter point to the next row in the list store */
830
 
                        i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
831
 
                }
 
909
                ui_flt_hub_payee_get(data->filter, data);
832
910
 
833
911
        // category
834
 
                DB( g_print(" category\n") );
835
 
 
836
 
                ui_flt_panel_category_get(data);
 
912
                ui_flt_hub_category_get(data->filter, data);
837
913
 
838
914
        // active tab
839
915
        g_strlcpy(data->filter->last_tab, gtk_stack_get_visible_child_name(GTK_STACK(data->stack)), 8);
854
930
 
855
931
        if(data->filter != NULL)
856
932
        {
857
 
        GtkTreeModel *model;
858
 
        //GtkTreeSelection *selection;
859
 
        GtkTreeIter     iter;
860
 
        GDate *date;
861
 
 
862
 
        gboolean valid;
863
933
        gint i;
864
934
 
865
935
                DB( g_print(" options\n") );
878
948
                DB( g_print(" date\n") );
879
949
                gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_mindate), data->filter->mindate);
880
950
                gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_maxdate), data->filter->maxdate);
881
 
                date = g_date_new_julian(data->filter->maxdate);
882
 
                gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->NB_year), g_date_get_year(date));
883
 
                g_date_free(date);
884
951
 
885
952
        //status
886
 
                DB( g_print(" status\n") );
887
 
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_reconciled), data->filter->reconciled);
888
 
 
 
953
                DB( g_print(" status/type\n") );
 
954
                hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_type), data->filter->type);
 
955
                hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_status), data->filter->status);
889
956
 
890
957
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_forceadd), data->filter->forceadd);
891
958
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_forcechg), data->filter->forcechg);
892
959
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_forceremind), data->filter->forceremind);
 
960
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_forcevoid), data->filter->forcevoid);
893
961
 
894
962
        //paymode
895
963
                DB( g_print(" paymode\n") );
896
964
 
897
965
                for(i=0;i<NUM_PAYMODE_MAX;i++)
898
 
                        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]), data->filter->paymode[i]);
 
966
                {
 
967
                gint uid;
 
968
                        
 
969
                        if( !GTK_IS_TOGGLE_BUTTON(data->CM_paymode[i] ))
 
970
                                continue;
 
971
 
 
972
                        uid = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(data->CM_paymode[i]), "uid")); 
 
973
                        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]), data->filter->paymode[uid]);
 
974
 
 
975
                }
899
976
 
900
977
        //amount
901
 
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_minamount), data->filter->minamount);
902
 
        gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_maxamount), data->filter->maxamount);
 
978
                gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_minamount), data->filter->minamount);
 
979
                gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_maxamount), data->filter->maxamount);
903
980
 
904
 
        //text
905
 
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_exact), data->filter->exact);
906
 
        gtk_entry_set_text(GTK_ENTRY(data->ST_info), (data->filter->info != NULL) ? data->filter->info : "");
907
 
        gtk_entry_set_text(GTK_ENTRY(data->ST_memo), (data->filter->memo != NULL) ? data->filter->memo : "");
908
 
        gtk_entry_set_text(GTK_ENTRY(data->ST_tag), (data->filter->tag != NULL) ? data->filter->tag : "");
 
981
                //text
 
982
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_exact), data->filter->exact);
 
983
                gtk_entry_set_text(GTK_ENTRY(data->ST_info), (data->filter->info != NULL) ? data->filter->info : "");
 
984
                gtk_entry_set_text(GTK_ENTRY(data->ST_memo), (data->filter->memo != NULL) ? data->filter->memo : "");
 
985
                gtk_entry_set_text(GTK_ENTRY(data->ST_tag), (data->filter->tag != NULL) ? data->filter->tag : "");
909
986
 
910
987
        //account
911
988
                if(data->show_account == TRUE)
912
989
                {
913
990
                        DB( g_print(" account\n") );
914
 
 
915
 
                        model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_acc));
916
 
                        //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc));
917
 
                        i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
918
 
                        while (valid)
919
 
                        {
920
 
                        Account *accitem;
921
 
 
922
 
                                gtk_tree_model_get (model, &iter,
923
 
                                        LST_DEFACC_DATAS, &accitem,
924
 
                                        -1);
925
 
 
926
 
                                if(accitem->flt_select == TRUE)
927
 
                                        //gtk_tree_selection_select_iter(selection, &iter);
928
 
                                        gtk_list_store_set (GTK_LIST_STORE (model), &iter,
929
 
                                                LST_DEFACC_TOGGLE, TRUE, -1);
930
 
 
931
 
                                /* Make iter point to the next row in the list store */
932
 
                                i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
933
 
                        }
 
991
                        ui_flt_hub_account_set(data->filter, &data->pnl_acc_data);
934
992
                }
935
993
 
936
994
        // payee
937
 
                DB( g_print(" payee\n") );
938
 
 
939
 
                model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_pay));
940
 
                //selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_pay));
941
 
                i=0; valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
942
 
                while (valid)
943
 
                {
944
 
                Payee *payitem;
945
 
 
946
 
                        gtk_tree_model_get (model, &iter,
947
 
                                LST_DEFPAY_DATAS, &payitem,
948
 
                                -1);
949
 
 
950
 
                        if(payitem->flt_select == TRUE)
951
 
                                gtk_list_store_set (GTK_LIST_STORE (model), &iter, LST_DEFPAY_TOGGLE, TRUE, -1);
952
 
 
953
 
                        /* Make iter point to the next row in the list store */
954
 
                        i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
955
 
                }
 
995
                ui_flt_hub_payee_set(data->filter, data);
956
996
 
957
997
        // category
958
 
                DB( g_print(" category\n") );
959
 
 
960
 
                ui_flt_panel_category_set(data);
 
998
                ui_flt_hub_category_set(data->filter, data);
961
999
 
962
1000
        }
963
1001
}
989
1027
 
990
1028
        DB( g_print("(ui_flt_manage) setup\n") );
991
1029
 
992
 
        if(data->show_account == TRUE && data->LV_acc != NULL)
 
1030
        if(data->show_account == TRUE && data->pnl_acc_data.treeview != NULL)
993
1031
        {
994
1032
                //gtk_tree_selection_set_mode(GTK_TREE_SELECTION(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_acc))), GTK_SELECTION_MULTIPLE);
995
1033
 
996
 
                ui_acc_listview_populate(data->LV_acc, ACC_LST_INSERT_REPORT);
 
1034
                ui_acc_listview_populate(data->pnl_acc_data.treeview, ACC_LST_INSERT_REPORT);
997
1035
                //populate_view_acc(data->LV_acc, GLOBALS->acc_list, FALSE);
998
1036
        }
999
1037
 
1016
1054
}
1017
1055
 
1018
1056
 
1019
 
 
1020
 
 
 
1057
static GtkWidget *ui_flt_manage_page_option (struct ui_flt_manage_data *data, guint index)
 
1058
{
 
1059
GtkWidget *container, *hbox, *label;
 
1060
 
 
1061
        container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_LARGE);
 
1062
        //gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM);
 
1063
 
 
1064
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
 
1065
        gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 0);
 
1066
        
 
1067
        label = make_label_widget(_("_Option:"));
 
1068
        gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
 
1069
        data->CY_option[index] = make_nainex(label);
 
1070
        //data->CY_option[index] = hbtk_radio_button_new(nainex_label_names, TRUE);
 
1071
        gtk_box_pack_start (GTK_BOX (hbox), data->CY_option[index], TRUE, TRUE, 0);
 
1072
 
 
1073
        return(container);
 
1074
}
1021
1075
 
1022
1076
 
1023
1077
static GtkWidget *ui_flt_manage_page_category (struct ui_flt_manage_data *data)
1024
1078
{
1025
 
GtkWidget *container, *panel, *hbox, *label;
1026
 
 
1027
 
        container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
1028
 
        gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM);
1029
 
 
1030
 
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
1031
 
        gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 0);
1032
 
 
1033
 
        label = make_label_widget(_("_Option:"));
1034
 
        gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1035
 
        data->CY_option[FILTER_CATEGORY] = make_nainex(label);
1036
 
        gtk_box_pack_start (GTK_BOX (hbox), data->CY_option[FILTER_CATEGORY], TRUE, TRUE, 0);
1037
 
 
1038
 
        panel = ui_flt_panel_category_new(data);
 
1079
GtkWidget *container, *panel;
 
1080
 
 
1081
        container = ui_flt_manage_page_option(data, FILTER_CATEGORY);
 
1082
        panel = ui_flt_hub_category_new(data);
 
1083
        data->GR_page[FILTER_CATEGORY] = panel;
1039
1084
        gtk_box_pack_start (GTK_BOX (container), panel, TRUE, TRUE, 0);
1040
1085
 
1041
1086
        return(container);
1044
1089
 
1045
1090
static GtkWidget *ui_flt_manage_page_payee (struct ui_flt_manage_data *data)
1046
1091
{
1047
 
GtkWidget *container, *panel, *hbox, *label;
1048
 
 
1049
 
        container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
1050
 
        gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM);
1051
 
 
1052
 
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
1053
 
        gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 0);
1054
 
 
1055
 
        label = make_label_widget(_("_Option:"));
1056
 
        gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1057
 
        data->CY_option[FILTER_PAYEE] = make_nainex(label);
1058
 
        gtk_box_pack_start (GTK_BOX (hbox), data->CY_option[FILTER_PAYEE], TRUE, TRUE, 0);
1059
 
 
1060
 
        panel = ui_flt_panel_payee_new(data);
 
1092
GtkWidget *container, *panel;
 
1093
 
 
1094
        container = ui_flt_manage_page_option(data, FILTER_PAYEE);
 
1095
        panel = ui_flt_hub_payee_new(data);
 
1096
        data->GR_page[FILTER_PAYEE] = panel;
1061
1097
        gtk_box_pack_start (GTK_BOX (container), panel, TRUE, TRUE, 0);
1062
1098
 
1063
1099
        return(container);
1068
1104
*/
1069
1105
static GtkWidget *ui_flt_manage_page_account (struct ui_flt_manage_data *data)
1070
1106
{
1071
 
GtkWidget *container, *panel, *hbox, *label;
1072
 
 
1073
 
        container = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
1074
 
        gtk_container_set_border_width (GTK_CONTAINER (container), SPACING_MEDIUM);
1075
 
 
1076
 
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
1077
 
        gtk_box_pack_start (GTK_BOX (container), hbox, FALSE, FALSE, 0);
1078
 
 
1079
 
        label = make_label_widget(_("_Option:"));
1080
 
        gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
1081
 
        data->CY_option[FILTER_ACCOUNT] = make_nainex(label);
1082
 
        gtk_box_pack_start (GTK_BOX (hbox), data->CY_option[FILTER_ACCOUNT], TRUE, TRUE, 0);
1083
 
 
1084
 
        panel = ui_flt_panel_account_new(data);
 
1107
GtkWidget *container, *panel;
 
1108
 
 
1109
        container = ui_flt_manage_page_option(data, FILTER_ACCOUNT);
 
1110
        panel = ui_flt_hub_account_new(&data->pnl_acc_data);
 
1111
        data->GR_page[FILTER_ACCOUNT] = panel;
1085
1112
        gtk_box_pack_start (GTK_BOX (container), panel, TRUE, TRUE, 0);
1086
1113
 
1087
1114
        return(container);
1088
1115
}
1089
1116
 
1090
1117
 
1091
 
static void get_period_minmax(guint month, guint year, guint32 *mindate, guint32 *maxdate)
1092
 
{
1093
 
GDate *date;
1094
 
 
1095
 
        date = g_date_new();
1096
 
        if(month)
1097
 
        {
1098
 
                // mindate is month 1, year :: maxdate is last day of month, year
1099
 
                g_date_set_dmy(date, 1, month, year);
1100
 
                *mindate = g_date_get_julian(date);
1101
 
                g_date_add_days(date, g_date_get_days_in_month(month, year));
1102
 
                *maxdate = g_date_get_julian(date)-1;
1103
 
        }
1104
 
        else
1105
 
        {
1106
 
                g_date_set_dmy(date, 1, 1, year);
1107
 
                *mindate = g_date_get_julian(date);
1108
 
                g_date_set_dmy(date, 31, 12, year);
1109
 
                *maxdate = g_date_get_julian(date);
1110
 
        }
1111
 
        g_date_free(date);
1112
 
}
1113
 
 
1114
 
 
1115
 
 
1116
 
static void ui_flt_manage_period_change(GtkWidget *widget, gpointer user_data)
1117
 
{
1118
 
struct ui_flt_manage_data *data;
1119
 
gint month, year;
1120
 
 
1121
 
        DB( g_print("(ui_flt_manage) period change\n") );
1122
 
 
1123
 
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
1124
 
 
1125
 
 
1126
 
        month = gtk_combo_box_get_active(GTK_COMBO_BOX(data->CY_month));
1127
 
        year = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->NB_year));
1128
 
 
1129
 
        DB( g_print(" month=%d, year=%d\n", month, year) );
1130
 
 
1131
 
 
1132
 
        if(month != 0)
1133
 
                get_period_minmax(month-1, year, &data->filter->mindate, &data->filter->maxdate);
1134
 
        else
1135
 
                get_period_minmax(0, year, &data->filter->mindate, &data->filter->maxdate);
1136
 
 
1137
 
        gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_mindate), data->filter->mindate);
1138
 
        gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_maxdate), data->filter->maxdate);
1139
 
}
1140
 
 
1141
 
 
1142
1118
static GtkWidget *ui_flt_manage_part_date(struct ui_flt_manage_data *data)
1143
1119
{
1144
 
GtkWidget *table, *label;
 
1120
GtkWidget *container, *table, *label;
1145
1121
gint row;
1146
1122
 
1147
 
        table = gtk_grid_new ();
 
1123
        container = ui_flt_manage_page_option(data, FILTER_DATE);
 
1124
 
 
1125
    table = gtk_grid_new ();
1148
1126
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
1149
1127
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
1150
 
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
1151
 
 
 
1128
        
 
1129
        data->GR_page[FILTER_DATE] = table;
 
1130
        gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
 
1131
        
1152
1132
        row = 0;
1153
 
        label = make_label_widget(_("_Option:"));
1154
 
        //----------------------------------------- l, r, t, b
1155
 
        gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1156
 
        data->CY_option[FILTER_DATE] = make_nainex(label);
1157
 
        gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_DATE], 2, row, 1, 1);
1158
 
 
1159
 
        row++;
1160
 
        label = make_label (_("Dates"), 0, 0);
 
1133
        /*label = make_label (_("Dates"), 0, 0);
1161
1134
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
1162
1135
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
1163
1136
 
1164
 
        row++;
 
1137
        row++;*/
1165
1138
        label = make_label_widget(_("_From:"));
1166
 
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
 
1139
        gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1167
1140
        data->PO_mindate = gtk_date_entry_new(label);
1168
 
        gtk_grid_attach (GTK_GRID (table), data->PO_mindate, 1, row, 2, 1);
 
1141
        gtk_grid_attach (GTK_GRID (table), data->PO_mindate, 2, row, 1, 1);
1169
1142
 
1170
1143
        row++;
1171
1144
        label = make_label_widget(_("_To:"));
1172
 
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
 
1145
        gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1173
1146
        data->PO_maxdate = gtk_date_entry_new(label);
1174
 
        gtk_grid_attach (GTK_GRID (table), data->PO_maxdate, 1, row, 2, 1);
1175
 
 
1176
 
        row++;
1177
 
        label = make_label_widget(_("_Month:"));
1178
 
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
1179
 
        data->CY_month = make_cycle(label, CYA_SELECT);
1180
 
        gtk_grid_attach (GTK_GRID (table), data->CY_month, 1, row, 2, 1);
1181
 
 
1182
 
        row++;
1183
 
        label = make_label_widget(_("_Year:"));
1184
 
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
1185
 
        data->NB_year = make_year(label);
1186
 
        gtk_grid_attach (GTK_GRID (table), data->NB_year, 1, row, 2, 1);
1187
 
 
1188
 
        return table;
 
1147
        gtk_grid_attach (GTK_GRID (table), data->PO_maxdate, 2, row, 1, 1);
 
1148
 
 
1149
        return container;
1189
1150
}
1190
1151
 
1191
1152
 
1192
1153
static GtkWidget *ui_flt_manage_part_text(struct ui_flt_manage_data *data)
1193
1154
{
1194
 
GtkWidget *table, *label;
 
1155
GtkWidget *container, *table, *label;
1195
1156
gint row;
1196
1157
 
 
1158
        container = ui_flt_manage_page_option(data, FILTER_TEXT);
 
1159
        
1197
1160
        table = gtk_grid_new ();
1198
1161
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
1199
1162
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
1200
 
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
1201
1163
 
 
1164
        data->GR_page[FILTER_TEXT] = table;
 
1165
        gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
 
1166
        
1202
1167
        row = 0;
1203
 
        label = make_label_widget(_("_Option:"));
1204
 
        //----------------------------------------- l, r, t, b
1205
 
        gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1206
 
        data->CY_option[FILTER_TEXT] = make_nainex(label);
1207
 
        gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_TEXT], 2, row, 1, 1);
1208
 
 
1209
 
        row++;
1210
 
        label = make_label (_("Texts"), 0, 0);
 
1168
        /*label = make_label (_("Texts"), 0, 0);
1211
1169
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
1212
1170
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
1213
1171
 
1214
 
        row++;
 
1172
        row++;*/
1215
1173
        label = make_label_widget(_("_Memo:"));
1216
1174
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
1217
1175
        data->ST_memo = make_string(label);
1239
1197
        gtk_grid_attach (GTK_GRID (table), data->CM_exact, 1, row, 2, 1);
1240
1198
 
1241
1199
 
1242
 
        return table;
 
1200
        return container;
1243
1201
}
1244
1202
 
1245
1203
static GtkWidget *ui_flt_manage_part_amount(struct ui_flt_manage_data *data)
1246
1204
{
1247
 
GtkWidget *table, *label;
 
1205
GtkWidget *container, *table, *label;
1248
1206
gint row;
1249
1207
 
 
1208
        container = ui_flt_manage_page_option(data, FILTER_AMOUNT);
 
1209
        
1250
1210
        table = gtk_grid_new ();
1251
1211
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
1252
1212
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
1253
 
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
1254
1213
 
 
1214
        data->GR_page[FILTER_AMOUNT] = table;
 
1215
        gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
 
1216
        
1255
1217
        row = 0;
1256
 
        label = make_label_widget(_("_Option:"));
1257
 
        //----------------------------------------- l, r, t, b
1258
 
        gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1259
 
        data->CY_option[FILTER_AMOUNT] = make_nainex(label);
1260
 
        gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_AMOUNT], 2, row, 1, 1);
1261
 
 
1262
 
        row++;
1263
 
        label = make_label (_("Amounts"), 0, 0);
 
1218
        /*label = make_label (_("Amounts"), 0, 0);
1264
1219
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
1265
1220
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
1266
1221
 
1267
 
        row++;
 
1222
        row++;*/
1268
1223
        label = make_label_widget(_("_From:"));
1269
1224
        //----------------------------------------- l, r, t, b
1270
1225
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
1277
1232
        data->ST_maxamount = make_amount(label);
1278
1233
        gtk_grid_attach (GTK_GRID (table), data->ST_maxamount, 1, row, 2, 1);
1279
1234
 
1280
 
        return table;
 
1235
        return container;
1281
1236
}
1282
1237
 
1283
1238
 
1284
1239
static GtkWidget *ui_flt_manage_part_status(struct ui_flt_manage_data *data)
1285
1240
{
1286
 
GtkWidget *table, *label, *vbox, *widget;
 
1241
GtkWidget *content, *container, *table, *label, *widget, *vbox;
1287
1242
gint row;
1288
1243
 
1289
 
        table = gtk_grid_new ();
1290
 
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
1291
 
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
1292
 
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
1293
 
 
1294
 
        row = 0;
1295
 
        label = make_label_widget(_("_Option:"));
1296
 
        //----------------------------------------- l, r, t, b
1297
 
        gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1298
 
        data->CY_option[FILTER_STATUS] = make_nainex(label);
1299
 
        gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_STATUS], 2, row, 1, 1);
1300
 
 
1301
 
        row++;
1302
 
        label = make_label (_("Statuses"), 0, 0);
1303
 
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
1304
 
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
1305
 
 
1306
 
 
1307
 
                row++;
1308
 
                vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
1309
 
                gtk_grid_attach (GTK_GRID (table), vbox, 2, row, 1, 1);
1310
 
 
1311
 
                widget = gtk_check_button_new_with_mnemonic (_("reconciled"));
1312
 
                data->CM_reconciled = widget;
1313
 
                gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
1314
 
 
1315
 
                widget = gtk_check_button_new_with_mnemonic (_("cleared"));
1316
 
                data->CM_cleared = widget;
1317
 
                gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
1318
 
 
1319
 
                row++;
 
1244
        content = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
 
1245
 
 
1246
        //status
 
1247
        container = ui_flt_manage_page_option(data, FILTER_STATUS);
 
1248
        gtk_box_pack_start (GTK_BOX (content), container, TRUE, TRUE, 0);
 
1249
 
 
1250
        table = gtk_grid_new ();
 
1251
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
 
1252
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
 
1253
        gtk_widget_set_margin_bottom(table, SPACING_LARGE);
 
1254
 
 
1255
        data->GR_page[FILTER_STATUS] = table;
 
1256
        gtk_box_pack_start (GTK_BOX (container), table, TRUE, TRUE, 0);
 
1257
 
 
1258
        row = 0;
 
1259
        label = make_label_widget(_("_Status:"));
 
1260
        //----------------------------------------- l, r, t, b
 
1261
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
 
1262
        
 
1263
        widget = hbtk_combo_box_new(NULL);
 
1264
        hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget), FLT_STATUS_ALL       , _("Any Status"));
 
1265
        hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget), FLT_STATUS_CLEARED   , _("Cleared"));
 
1266
        hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget), FLT_STATUS_RECONCILED, _("Reconciled"));
 
1267
        data->CY_status = widget;
 
1268
        gtk_grid_attach (GTK_GRID (table), widget, 1, row, 1, 1);
 
1269
        
 
1270
        // type
 
1271
        container = ui_flt_manage_page_option(data, FILTER_TYPE);
 
1272
        gtk_box_pack_start (GTK_BOX (content), container, TRUE, TRUE, 0);
 
1273
 
 
1274
        table = gtk_grid_new ();
 
1275
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
 
1276
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
 
1277
 
 
1278
        data->GR_page[FILTER_TYPE] = table;
 
1279
        gtk_box_pack_start (GTK_BOX (container), table, FALSE, FALSE, 0);
 
1280
 
 
1281
        row = 0;
 
1282
        label = make_label_widget(_("_Type:"));
 
1283
        //----------------------------------------- l, r, t, b
 
1284
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 1, 1);
 
1285
 
 
1286
        widget = hbtk_combo_box_new(NULL);
 
1287
        hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget), FLT_TYPE_ALL    , _("Any Type"));
 
1288
        hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget), FLT_TYPE_EXPENSE, _("Expense"));
 
1289
        hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget), FLT_TYPE_INCOME , _("Income"));
 
1290
        hbtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(widget), FLT_TYPE_INTXFER, _("Transfer"));
 
1291
        data->CY_type = widget;
 
1292
        gtk_grid_attach (GTK_GRID (table), widget, 1, row, 1, 1);
 
1293
 
 
1294
 
 
1295
        table = gtk_grid_new ();
 
1296
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
 
1297
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
 
1298
 
 
1299
        gtk_box_pack_start (GTK_BOX (content), table, TRUE, TRUE, 0);
 
1300
 
 
1301
                row = 0;
1320
1302
                label = make_label_widget(_("Force:"));
1321
1303
                data->LB_force = label;
1322
1304
                gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1337
1319
                data->CM_forceremind = widget;
1338
1320
                gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
1339
1321
 
1340
 
        return table;
1341
 
}
 
1322
                widget = gtk_check_button_new_with_mnemonic (_("display 'Void'"));
 
1323
                data->CM_forcevoid = widget;
 
1324
                gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
 
1325
 
 
1326
        return content;
 
1327
}
 
1328
 
 
1329
 
 
1330
static gboolean
 
1331
ui_flt_manage_part_paymode_activate_link (GtkWidget   *label,
 
1332
               const gchar *uri,
 
1333
               gpointer     user_data)
 
1334
{
 
1335
struct ui_flt_manage_data *data;
 
1336
gint i;
 
1337
        
 
1338
        DB( g_print("(ui_flt_hub_account) activate_link\n") );
 
1339
 
 
1340
        data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(label, GTK_TYPE_WINDOW)), "inst_data");
 
1341
        
 
1342
        for(i=0;i<NUM_PAYMODE_MAX;i++)
 
1343
        {
 
1344
                if( !GTK_IS_TOGGLE_BUTTON(data->CM_paymode[i] ))
 
1345
                        continue;
 
1346
 
 
1347
                if (g_strcmp0 (uri, "all") == 0)        
 
1348
                {
 
1349
                        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]), TRUE);
 
1350
                }
 
1351
                else
 
1352
                if (g_strcmp0 (uri, "non") == 0)        
 
1353
                {
 
1354
                        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]), FALSE);
 
1355
                }
 
1356
                else
 
1357
                if (g_strcmp0 (uri, "inv") == 0)        
 
1358
                {
 
1359
                gboolean act = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]));
 
1360
                        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(data->CM_paymode[i]), !act);
 
1361
                }
 
1362
        }
 
1363
 
 
1364
    return TRUE;
 
1365
}
 
1366
 
1342
1367
 
1343
1368
 
1344
1369
static GtkWidget *ui_flt_manage_part_paymode(struct ui_flt_manage_data *data)
1345
1370
{
1346
 
GtkWidget *table, *label, *table1, *image;
 
1371
GtkWidget *container, *vbox, *hbox, *label, *widget, *table, *image;
 
1372
HbKivData *tmp, *kvdata = CYA_TXN_PAYMODE;
1347
1373
gint i, row;
1348
1374
 
1349
 
        table = gtk_grid_new ();
1350
 
        gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
1351
 
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
1352
 
        gtk_container_set_border_width(GTK_CONTAINER(table), SPACING_MEDIUM);
1353
 
 
1354
 
        row = 0;
1355
 
        label = make_label_widget(_("_Option:"));
1356
 
        //----------------------------------------- l, r, t, b
1357
 
        gtk_grid_attach (GTK_GRID (table), label, 1, row, 1, 1);
1358
 
        data->CY_option[FILTER_PAYMODE] = make_nainex(label);
1359
 
        gtk_grid_attach (GTK_GRID (table), data->CY_option[FILTER_PAYMODE], 2, row, 1, 1);
1360
 
 
1361
 
        row++;
1362
 
        label = make_label (_("Payments"), 0, 0);
 
1375
        container = ui_flt_manage_page_option(data, FILTER_PAYMODE);
 
1376
        
 
1377
        vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
 
1378
        data->GR_page[FILTER_PAYMODE] = vbox;
 
1379
        gtk_box_pack_start (GTK_BOX (container), vbox, TRUE, TRUE, 0);
 
1380
 
 
1381
        hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
 
1382
        gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
 
1383
 
 
1384
                label = make_label (_("Select:"), 0, 0.5);
 
1385
                gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_SMALL, -1);
 
1386
                gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
 
1387
 
 
1388
                label = make_clicklabel("all", _("All"));
 
1389
                //data->BT_cat[BUTTON_ALL] = label;
 
1390
                gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
 
1391
                g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_manage_part_paymode_activate_link), NULL);
 
1392
                
 
1393
                label = make_clicklabel("non", _("None"));
 
1394
                //data->BT_cat[BUTTON_NONE] = label;
 
1395
                gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
 
1396
                g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_manage_part_paymode_activate_link), NULL);
 
1397
 
 
1398
                label = make_clicklabel("inv", _("Invert"));
 
1399
                //data->BT_cat[BUTTON_INVERT] = label;
 
1400
                gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
 
1401
                g_signal_connect (label, "activate-link", G_CALLBACK (ui_flt_manage_part_paymode_activate_link), NULL);
 
1402
 
 
1403
        /*label = make_label (_("Payments"), 0, 0);
1363
1404
        gimp_label_set_attributes (GTK_LABEL (label), PANGO_ATTR_SCALE, PANGO_SCALE_LARGE, -1);
1364
1405
        gtk_grid_attach (GTK_GRID (table), label, 0, row, 3, 1);
1365
1406
 
1366
 
        row++;
1367
 
        table1 = gtk_grid_new ();
1368
 
        gtk_grid_set_row_spacing (GTK_GRID (table1), SPACING_SMALL);
1369
 
        gtk_grid_set_column_spacing (GTK_GRID (table1), SPACING_SMALL);
1370
 
        gtk_grid_attach (GTK_GRID (table), table1, 1, row, 2, 1);
1371
 
 
 
1407
        row++;*/
 
1408
        table = gtk_grid_new ();
 
1409
        //gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
 
1410
        //gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_SMALL);
 
1411
        gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
 
1412
        
 
1413
        
1372
1414
        for(i=0;i<NUM_PAYMODE_MAX;i++)
1373
1415
        {
 
1416
        tmp = &kvdata[i];
 
1417
 
 
1418
                if( tmp->name == NULL )
 
1419
                        break;
 
1420
 
1374
1421
                row = i;
1375
1422
 
1376
 
                image = gtk_image_new_from_icon_name( get_paymode_icon_name(i), GTK_ICON_SIZE_MENU);
1377
 
                gtk_grid_attach (GTK_GRID (table1), image, 0, row, 1, 1);
 
1423
                image = gtk_image_new_from_icon_name( tmp->iconname, GTK_ICON_SIZE_MENU);
 
1424
                gtk_grid_attach (GTK_GRID (table), image, 0, row, 1, 1);
1378
1425
 
1379
 
                data->CM_paymode[i] = gtk_check_button_new_with_mnemonic(_(paymode_label_names[i]));
1380
 
                gtk_grid_attach (GTK_GRID (table1), data->CM_paymode[i], 1, row, 1, 1);
 
1426
                widget = gtk_check_button_new_with_mnemonic(_(tmp->name));
 
1427
                data->CM_paymode[i] = widget;
 
1428
                g_object_set_data(G_OBJECT(widget), "uid", GUINT_TO_POINTER(tmp->key));
 
1429
                gtk_grid_attach (GTK_GRID (table), data->CM_paymode[i], 1, row, 1, 1);
1381
1430
        }
1382
1431
 
1383
 
        return table;
 
1432
        return container;
1384
1433
}
1385
1434
 
1386
1435
 
1389
1438
*/
1390
1439
gint ui_flt_manage_dialog_new(GtkWindow *parentwindow, Filter *filter, gboolean show_account, gboolean txnmode)
1391
1440
{
1392
 
struct ui_flt_manage_data data;
1393
 
GtkWidget *window, *content, *mainbox, *box, *sidebar, *stack, *page;
 
1441
struct ui_flt_manage_data *data;
 
1442
GtkWidget *window, *content, *mainbox, *sidebar, *stack, *page;
1394
1443
//gint w, h;
1395
1444
 
1396
 
        //data = g_malloc0(sizeof(struct ui_flt_manage_data));
1397
 
        //if(!data) return NULL;
1398
 
        memset(&data, 0, sizeof(struct ui_flt_manage_data));
 
1445
        data = g_malloc0(sizeof(struct ui_flt_manage_data));
1399
1446
 
1400
 
        data.filter = filter;
 
1447
        data->filter = filter;
1401
1448
 
1402
1449
        window = gtk_dialog_new_with_buttons (_("Edit filter"),
1403
1450
                                            GTK_WINDOW (parentwindow),
1418
1465
 
1419
1466
 
1420
1467
        //store our window private data
1421
 
        g_object_set_data(G_OBJECT(window), "inst_data", (gpointer)&data);
1422
 
        DB( g_print("(ui_flt_manage) window=%p, inst_data=%p\n", window, &data) );
 
1468
        g_object_set_data(G_OBJECT(window), "inst_data", (gpointer)data);
 
1469
        DB( g_print("(ui_flt_manage) window=%p, inst_data=%p\n", window, data) );
1423
1470
 
1424
1471
    g_signal_connect (window, "destroy",
1425
1472
                        G_CALLBACK (gtk_widget_destroyed), &window);
1426
1473
 
1427
1474
        content = gtk_dialog_get_content_area(GTK_DIALOG (window));
1428
 
        mainbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_SMALL);
 
1475
        mainbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1429
1476
        gtk_box_pack_start (GTK_BOX (content), mainbox, TRUE, TRUE, 0);
1430
1477
        //gtk_container_set_border_width (GTK_CONTAINER(mainbox), SPACING_MEDIUM);
1431
1478
 
1432
 
        box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1433
 
    gtk_box_pack_start (GTK_BOX (mainbox), box, TRUE, TRUE, 0);
1434
 
 
1435
1479
        sidebar = gtk_stack_sidebar_new ();
1436
 
    gtk_box_pack_start (GTK_BOX (box), sidebar, FALSE, FALSE, 0);
 
1480
        gtk_widget_set_margin_bottom(sidebar, SPACING_LARGE);
 
1481
    gtk_box_pack_start (GTK_BOX (mainbox), sidebar, FALSE, FALSE, 0);
1437
1482
 
1438
1483
 
1439
1484
        stack = gtk_stack_new ();
1440
1485
        gtk_stack_set_transition_type (GTK_STACK (stack), GTK_STACK_TRANSITION_TYPE_SLIDE_UP_DOWN);
1441
1486
        gtk_stack_sidebar_set_stack (GTK_STACK_SIDEBAR (sidebar), GTK_STACK (stack));
1442
 
        data.stack = stack;
1443
 
    gtk_box_pack_start (GTK_BOX (box), stack, TRUE, TRUE, 0);
 
1487
        gtk_container_set_border_width(GTK_CONTAINER(stack), SPACING_LARGE);
 
1488
 
 
1489
        data->stack = stack;
 
1490
    gtk_box_pack_start (GTK_BOX (mainbox), stack, TRUE, TRUE, 0);
1444
1491
 
1445
1492
 
1446
1493
        //common (date + status + amount)
1449
1496
        gtk_notebook_append_page (GTK_NOTEBOOK (notebook), page, label);
1450
1497
*/
1451
1498
 
1452
 
        page = ui_flt_manage_part_date(&data);
 
1499
        page = ui_flt_manage_part_date(data);
1453
1500
        //gtk_widget_show(GTK_WIDGET(page));
1454
1501
        gtk_stack_add_titled (GTK_STACK (stack), page, "dat", _("Dates"));
1455
1502
 
1456
 
        page = ui_flt_manage_part_status(&data);
 
1503
        page = ui_flt_manage_part_status(data);
1457
1504
        //gtk_widget_show(GTK_WIDGET(page));
1458
 
        gtk_stack_add_titled (GTK_STACK (stack), page, "sta", _("Statuses"));
 
1505
        gtk_stack_add_titled (GTK_STACK (stack), page, "sta", _("Status"));
1459
1506
 
1460
 
        page = ui_flt_manage_part_paymode(&data);
 
1507
        page = ui_flt_manage_part_paymode(data);
1461
1508
        //gtk_widget_show(GTK_WIDGET(page));
1462
1509
        gtk_stack_add_titled (GTK_STACK (stack), page, "pmt", _("Payments"));
1463
1510
 
1464
 
        page = ui_flt_manage_part_amount(&data);
 
1511
        page = ui_flt_manage_part_amount(data);
1465
1512
        //gtk_widget_show(GTK_WIDGET(page));
1466
1513
        gtk_stack_add_titled (GTK_STACK (stack), page, "amt", _("Amounts"));
1467
1514
 
1468
 
        page = ui_flt_manage_part_text(&data);
 
1515
        page = ui_flt_manage_part_text(data);
1469
1516
        //gtk_widget_show(GTK_WIDGET(page));
1470
1517
        gtk_stack_add_titled (GTK_STACK (stack), page, "txt", _("Texts"));
1471
 
        
1472
 
        page = ui_flt_manage_page_category(&data);
 
1518
 
 
1519
        page = ui_flt_manage_page_category(data);
1473
1520
        //gtk_widget_show(GTK_WIDGET(page));
1474
1521
        gtk_stack_add_titled (GTK_STACK (stack), page, "cat", _("Categories"));
1475
1522
 
1476
 
        page = ui_flt_manage_page_payee(&data);
 
1523
        page = ui_flt_manage_page_payee(data);
1477
1524
        //gtk_widget_show(GTK_WIDGET(page));
1478
1525
        gtk_stack_add_titled (GTK_STACK (stack), page, "pay", _("Payees"));
1479
1526
 
1480
 
        data.show_account = show_account;
 
1527
        data->show_account = show_account;
1481
1528
        if(show_account == TRUE)
1482
1529
        {
1483
 
                page = ui_flt_manage_page_account(&data);
 
1530
                page = ui_flt_manage_page_account(data);
1484
1531
                //gtk_widget_show(GTK_WIDGET(page));
1485
1532
                gtk_stack_add_titled (GTK_STACK (stack), page, "acc", _("Accounts"));
1486
1533
        }
1487
1534
 
 
1535
        
1488
1536
        //setup, init and show window
1489
 
        ui_flt_manage_setup(&data);
1490
 
        ui_flt_manage_set(&data);
 
1537
        ui_flt_manage_setup(data);
 
1538
        ui_flt_manage_set(data);
1491
1539
 
1492
1540
        ui_flt_manage_option_update(window, NULL);
1493
 
        
 
1541
 
1494
1542
        /* signal connect */
1495
 
    g_signal_connect (data.CY_option[FILTER_STATUS]  , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1496
 
    g_signal_connect (data.CY_option[FILTER_DATE]    , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1497
 
    g_signal_connect (data.CY_option[FILTER_AMOUNT]  , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1498
 
    g_signal_connect (data.CY_option[FILTER_PAYMODE] , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1543
    g_signal_connect (data->CY_option[FILTER_STATUS]  , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1544
        g_signal_connect (data->CY_option[FILTER_TYPE]    , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1545
    g_signal_connect (data->CY_option[FILTER_DATE]    , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1546
    g_signal_connect (data->CY_option[FILTER_AMOUNT]  , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1547
    g_signal_connect (data->CY_option[FILTER_PAYMODE] , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1499
1548
 
1500
 
    g_signal_connect (data.CY_option[FILTER_PAYEE]   , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1501
 
    g_signal_connect (data.CY_option[FILTER_CATEGORY], "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1502
 
    g_signal_connect (data.CY_option[FILTER_TEXT]    , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1549
    g_signal_connect (data->CY_option[FILTER_PAYEE]   , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1550
    g_signal_connect (data->CY_option[FILTER_CATEGORY], "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1551
    g_signal_connect (data->CY_option[FILTER_TEXT]    , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1503
1552
 
1504
1553
        if(show_account == TRUE)
1505
1554
        {
1506
 
            g_signal_connect (data.CY_option[FILTER_ACCOUNT] , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
 
1555
            g_signal_connect (data->CY_option[FILTER_ACCOUNT] , "changed", G_CALLBACK (ui_flt_manage_option_update), NULL);
1507
1556
 
1508
1557
        }
1509
1558
 
1510
 
        g_signal_connect (data.CY_month, "changed", G_CALLBACK (ui_flt_manage_period_change), NULL);
1511
 
        g_signal_connect (data.NB_year, "value-changed", G_CALLBACK (ui_flt_manage_period_change), NULL);
1512
1559
 
1513
1560
 
1514
1561
        gtk_widget_show_all (window);
1515
1562
 
1516
1563
        if(!txnmode)
1517
1564
        {
1518
 
                hb_widget_visible (data.LB_force, FALSE);
1519
 
                hb_widget_visible (data.GR_force, FALSE);
 
1565
                hb_widget_visible (data->LB_force, FALSE);
 
1566
                hb_widget_visible (data->GR_force, FALSE);
1520
1567
        }
1521
1568
 
1522
1569
 
1523
 
        if( *data.filter->last_tab != '\0' )
1524
 
                gtk_stack_set_visible_child_name (GTK_STACK(data.stack), data.filter->last_tab);
1525
 
        DB( g_print(" set page '%s'\n", data.filter->last_tab) );
 
1570
        if( *data->filter->last_tab != '\0' )
 
1571
                gtk_stack_set_visible_child_name (GTK_STACK(data->stack), data->filter->last_tab);
 
1572
        DB( g_print(" set page '%s'\n", data->filter->last_tab) );
1526
1573
 
1527
1574
 
1528
1575
        //wait for the user
1536
1583
            {
1537
1584
                case GTK_RESPONSE_ACCEPT:
1538
1585
                   //do_application_specific_something ();
1539
 
                   ui_flt_manage_get(&data);
1540
 
                   break;
 
1586
                        ui_flt_manage_get(data);
 
1587
                        break;
1541
1588
                case 55:
1542
1589
                        ui_flt_manage_clear(window, NULL);
1543
 
                   ui_flt_manage_get(&data);
 
1590
                        ui_flt_manage_get(data);
1544
1591
                        break;
1545
1592
                default:
1546
1593
                   //do_nothing_since_dialog_was_cancelled ();
1558
1605
        DB( g_print(" destroy\n") );
1559
1606
        gtk_widget_destroy (window);
1560
1607
 
 
1608
        g_free(data);
 
1609
        
1561
1610
        DB( g_print(" all ok\n") );
1562
1611
 
1563
1612
        return retval;