~sjrct/homebank/resize-xfer-window

« back to all changes in this revision

Viewing changes to src/dsp-mainwindow.c

  • Committer: Maxime Doyen
  • Date: 2023-09-06 19:23:05 UTC
  • Revision ID: homebank@free.fr-20230906192305-k19peze360g5cr9t
5.7 release

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
#include "list-account.h"
28
28
 
29
29
#include "hub-scheduled.h"
30
 
#include "hub-spending.h"
 
30
#include "hub-reptotal.h"
 
31
#include "hub-reptime.h"
31
32
#include "hub-transaction.h"
32
33
 
33
34
#include "dsp-account.h"
234
235
 
235
236
        gtk_dialog_run (GTK_DIALOG (dialog));
236
237
 
237
 
        gtk_widget_destroy (dialog);
 
238
        gtk_window_destroy (GTK_WINDOW(dialog));
238
239
 
239
240
        g_free(version);
240
241
        
297
298
 
298
299
static void ui_mainwindow_action_quit(void)
299
300
{
300
 
gboolean result;
301
 
 
302
 
        //emulate the wm close button
303
 
        g_signal_emit_by_name(GLOBALS->mainwindow, "delete-event", NULL, &result);
 
301
        gtk_window_close(GTK_WINDOW(GLOBALS->mainwindow));
304
302
}
305
303
 
306
304
 
478
476
static void ui_mainwindow_action_toggle_upcoming(GtkCheckMenuItem *menuitem, gpointer     user_data)
479
477
{
480
478
//struct hbfile_data *data = g_object_get_data(G_OBJECT(GLOBALS->mainwindow), "inst_data");
 
479
gint flags = UF_VISUAL;
481
480
 
482
481
        PREFS->wal_upcoming = gtk_check_menu_item_get_active(menuitem);
483
 
        ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(UF_VISUAL));
484
 
}
485
 
 
486
 
static void ui_mainwindow_action_toggle_topspending(GtkCheckMenuItem *menuitem, gpointer     user_data)
487
 
{
488
 
//struct hbfile_data *data = g_object_get_data(G_OBJECT(GLOBALS->mainwindow), "inst_data");
489
 
 
490
 
        PREFS->wal_spending = gtk_check_menu_item_get_active(menuitem);
491
 
        ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(UF_VISUAL));
 
482
        if( PREFS->wal_upcoming == TRUE )
 
483
                flags |= UF_REFRESHALL;
 
484
        ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(flags));
 
485
}
 
486
 
 
487
static void ui_mainwindow_action_toggle_totchart(GtkCheckMenuItem *menuitem, gpointer     user_data)
 
488
{
 
489
//struct hbfile_data *data = g_object_get_data(G_OBJECT(GLOBALS->mainwindow), "inst_data");
 
490
gint flags = UF_VISUAL;
 
491
 
 
492
        PREFS->wal_totchart = gtk_check_menu_item_get_active(menuitem);
 
493
        if( PREFS->wal_totchart == TRUE )
 
494
                flags |= UF_REFRESHALL;
 
495
        ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(flags));
 
496
}
 
497
 
 
498
static void ui_mainwindow_action_toggle_timchart(GtkCheckMenuItem *menuitem, gpointer     user_data)
 
499
{
 
500
//struct hbfile_data *data = g_object_get_data(G_OBJECT(GLOBALS->mainwindow), "inst_data");
 
501
gint flags = UF_VISUAL;
 
502
 
 
503
        PREFS->wal_timchart = gtk_check_menu_item_get_active(menuitem);
 
504
        if( PREFS->wal_timchart == TRUE )
 
505
                flags |= UF_REFRESHALL;
 
506
        ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(flags));
492
507
}
493
508
 
494
509
static void ui_mainwindow_action_toggle_minor(GtkCheckMenuItem *menuitem, gpointer     user_data)
501
516
        gtk_tree_view_columns_autosize (GTK_TREE_VIEW(data->LV_upc));
502
517
 
503
518
        // top spending
504
 
        gtk_chart_show_minor(GTK_CHART(data->RE_pie), GLOBALS->minor);
 
519
        gtk_chart_show_minor(GTK_CHART(data->RE_hubtot_chart), GLOBALS->minor);
505
520
        
506
 
        ui_hub_spending_update(data->window, data);
 
521
        ui_hub_reptotal_update(data->window, data);
 
522
        ui_hub_reptime_update(data->window, data);
507
523
 
508
524
}
509
525
 
685
701
        content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog));
686
702
 
687
703
        table = gtk_grid_new ();
688
 
        //gtk_grid_set_row_spacing (GTK_GRID (table), SPACING_SMALL);
689
704
        gtk_grid_set_column_spacing (GTK_GRID (table), SPACING_MEDIUM);
690
 
        gtk_container_set_border_width (GTK_CONTAINER(table), SPACING_LARGE);
691
705
        gtk_box_pack_start (GTK_BOX (content_area), table, FALSE, FALSE, 0);
692
706
 
693
707
        //get our icon
715
729
        mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, SPACING_MEDIUM);
716
730
        gtk_box_pack_start (GTK_BOX (content_area), mainvbox, FALSE, FALSE, 0);
717
731
        gtk_widget_set_halign (mainvbox, GTK_ALIGN_CENTER);
718
 
        gtk_container_set_border_width (GTK_CONTAINER(mainvbox), SPACING_LARGE);
719
732
 
720
733
        //label = make_label (_("What do you want to do:"), 0, 0);
721
734
        //gimp_label_set_attributes(GTK_LABEL(label), PANGO_ATTR_WEIGHT, PANGO_WEIGHT_BOLD, -1);
762
775
        PREFS->showwelcome = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(check));
763
776
 
764
777
        // cleanup and destroy
765
 
        gtk_widget_destroy (dialog);
 
778
        gtk_window_destroy (GTK_WINDOW(dialog));
766
779
 
767
780
        // do appropriate action
768
781
        switch(result)
859
872
 
860
873
                if(item->window)
861
874
                {
862
 
                        gtk_widget_destroy(GTK_WIDGET(item->window));
 
875
                        gtk_window_destroy (GTK_WINDOW(item->window));
863
876
                        item->window = NULL;
864
877
                }
865
878
 
899
912
                        gtk_window_get_window_type(window),
900
913
                        gtk_window_get_title(window) ));
901
914
 
902
 
                gtk_widget_destroy(GTK_WIDGET(window));
 
915
                gtk_window_destroy (GTK_WINDOW(window));
903
916
                list = g_slist_next(list);      
904
917
        }
905
918
        
906
919
        gtk_tree_store_clear(GTK_TREE_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_acc))));
 
920
 
907
921
        gtk_list_store_clear(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_upc))));
908
 
        gtk_list_store_clear(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_top))));
909
922
        
 
923
        //TODO those 2 do nothing
 
924
        ui_hub_reptotal_clear(GLOBALS->mainwindow, NULL);
 
925
        ui_hub_reptime_clear(GLOBALS->mainwindow, NULL);
 
926
 
910
927
        data->showall = FALSE;
911
928
        ui_hub_account_dispose(data);
912
929
        ui_hub_account_setup(data);
 
930
 
 
931
        ui_hub_reptotal_dispose(data);
 
932
        ui_hub_reptotal_setup(data);
 
933
 
 
934
        ui_hub_reptime_dispose(data);
 
935
        ui_hub_reptime_setup(data);
913
936
        
914
937
        hbfile_cleanup(file_clear);
915
938
        hbfile_setup(file_clear);
973
996
        da_transaction_free(ope);
974
997
        
975
998
        deftransaction_dispose(window, NULL);
976
 
        gtk_widget_destroy (window);
 
999
        gtk_window_destroy (GTK_WINDOW(window));
977
1000
 
978
1001
        /* todo optimize this */
979
1002
        if(count > 0)
1164
1187
                DB( g_print(" - start update window\n") );
1165
1188
 
1166
1189
                ui_hub_account_populate(GLOBALS->mainwindow, NULL);
1167
 
                ui_hub_scheduled_populate(GLOBALS->mainwindow, NULL);
1168
 
                ui_hub_spending_populate(GLOBALS->mainwindow, NULL);
1169
 
                ui_hub_transaction_populate(data);
1170
 
        
1171
 
                ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(UF_TITLE+UF_SENSITIVE+UF_VISUAL));
 
1190
                ui_mainwindow_update(GLOBALS->mainwindow, GINT_TO_POINTER(UF_TITLE+UF_SENSITIVE+UF_VISUAL+UF_REFRESHALL));
1172
1191
        }
1173
1192
 
1174
1193
 
1303
1322
        GtkTreeModel     *model;
1304
1323
        GtkTreeIter       iter;
1305
1324
        GtkTreePath             *path;
1306
 
        gboolean        active,sensitive;
 
1325
        gboolean        active, sensitive;
1307
1326
 
1308
1327
                DB( g_print(" 2: disabled, opelist count\n") );
1309
1328
 
1322
1341
 
1323
1342
                        if( depth > 1 )
1324
1343
                        {
1325
 
                                DB( g_print(" depth is %d\n", depth) );
1326
 
 
1327
1344
                                gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, LST_DSPACC_DATAS, &acc, -1);
1328
1345
                                data->acc = acc;
 
1346
                                DB( g_print(" depth is %d, acc=%p\n", depth, acc) );
1329
1347
                        }
1330
1348
                        else
1331
1349
                                active = FALSE;
1332
1350
                }
1333
1351
 
 
1352
        //5.7 browse account website
 
1353
                sensitive = account_has_website(data->acc);
 
1354
                DB( g_print(" account has url: %d\n", sensitive) );
 
1355
                gtk_widget_set_sensitive(data->BT_browse, sensitive);
 
1356
 
1334
1357
                DB( g_print(" changes %d - new %d\n", GLOBALS->changes_count, GLOBALS->hbfile_is_new) );
1335
1358
 
1336
1359
        // save
1435
1458
                DB( g_print(" - show toolbar=%d\n", PREFS->wal_toolbar) );
1436
1459
                hb_widget_visible(data->toolbar, PREFS->wal_toolbar); 
1437
1460
 
1438
 
                DB( g_print(" - show top_spending=%d\n", PREFS->wal_spending) );
1439
 
                hb_widget_visible(data->GR_top, PREFS->wal_spending); 
1440
 
 
1441
 
                //TODO: why this ? to redraw ?
1442
 
                hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_range), PREFS->date_range_wal);
1443
 
                
 
1461
                DB( g_print(" - show totchart=%d\n", PREFS->wal_totchart) );
 
1462
                hb_widget_visible(data->GR_hubtot, PREFS->wal_totchart); 
 
1463
 
 
1464
                DB( g_print(" - show timchart=%d\n", PREFS->wal_timchart) );
 
1465
                hb_widget_visible(data->GR_hubtim, PREFS->wal_timchart); 
 
1466
 
1444
1467
                DB( g_print(" - show upcoming=%d\n", PREFS->wal_upcoming) );
1445
1468
                hb_widget_visible(data->GR_upc, PREFS->wal_upcoming); 
1446
1469
 
1453
1476
                DB( g_print(" 16: refreshall\n") );
1454
1477
 
1455
1478
                ui_hub_account_compute(GLOBALS->mainwindow, NULL);
1456
 
                ui_hub_spending_populate(GLOBALS->mainwindow, NULL);
1457
 
                ui_hub_scheduled_populate(GLOBALS->mainwindow, NULL);
1458
 
                ui_hub_transaction_populate(data);
 
1479
                //5.7 don't process if not visible...
 
1480
                if( PREFS->wal_totchart )
 
1481
                        ui_hub_reptotal_populate(GLOBALS->mainwindow, NULL);
 
1482
                if( PREFS->wal_timchart )
 
1483
                        ui_hub_reptime_populate(GLOBALS->mainwindow, NULL);
 
1484
                if( PREFS->wal_upcoming )
 
1485
                {
 
1486
                        ui_hub_scheduled_populate(GLOBALS->mainwindow, NULL);
 
1487
                        ui_hub_transaction_populate(data);
 
1488
                }
1459
1489
        }
1460
1490
 
1461
 
 
1462
1491
}
1463
1492
 
1464
1493
 
1539
1568
        {
1540
1569
                //TODO: retval is useless and below should move to destroy
1541
1570
                retval = TRUE;
1542
 
                gtk_widget_destroy(data->LV_top);
 
1571
 
 
1572
                //ui_hub_xxx_dispose(data);
 
1573
                gtk_widget_destroy(data->LV_hubtot);
 
1574
                ui_hub_reptotal_dispose(data);
 
1575
 
 
1576
                gtk_widget_destroy(data->LV_hubtim);
 
1577
                ui_hub_reptime_dispose(data);
1543
1578
 
1544
1579
                ui_hub_account_dispose(data);
1545
1580
                
1546
1581
                g_free(data->wintitle);
1547
 
                da_flt_free(data->filter);
1548
1582
                g_free(user_data);
1549
1583
                
1550
1584
                gtk_main_quit();
1861
1895
 
1862
1896
                data->MI_showtbar = menuitem = gtk_check_menu_item_new_with_mnemonic(_("_Toolbar"));
1863
1897
                gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
1864
 
                data->MI_showspend = menuitem = gtk_check_menu_item_new_with_mnemonic(_("_Top spending"));
 
1898
                data->MI_showtotchart = menuitem = gtk_check_menu_item_new_with_mnemonic(_("T_otal Chart"));
 
1899
                gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
 
1900
                data->MI_showtimchart = menuitem = gtk_check_menu_item_new_with_mnemonic(_("T_ime Chart"));
1865
1901
                gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
1866
1902
                data->MI_showbotlist = menuitem = gtk_check_menu_item_new_with_mnemonic(_("_Bottom Lists"));
1867
1903
                gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
2005
2041
        GLOBALS->mainwindow = window;
2006
2042
 
2007
2043
        mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
2008
 
        gtk_container_add (GTK_CONTAINER (window), mainvbox);
 
2044
        gtk_window_set_child(GTK_WINDOW(window), mainvbox);
2009
2045
 
2010
2046
        //menu and toolbar
2011
2047
        data->recent_manager = gtk_recent_manager_get_default ();
2051
2087
        
2052
2088
        /* Add the main area */
2053
2089
        vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
2054
 
    //gtk_container_set_border_width (GTK_CONTAINER(vbox), SPACING_MEDIUM);
2055
2090
    gtk_box_pack_start (GTK_BOX (mainvbox), vbox, TRUE, TRUE, 0);
2056
2091
 
2057
2092
        vpaned = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
2058
2093
        data->vpaned = vpaned;
2059
2094
    gtk_box_pack_start (GTK_BOX (vbox), vpaned, TRUE, TRUE, 0);
2060
2095
 
 
2096
        // top part
2061
2097
        hpaned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
2062
2098
        data->hpaned = hpaned;
2063
2099
        gtk_paned_pack1 (GTK_PANED(vpaned), hpaned, FALSE, FALSE);
2066
2102
                //gtk_widget_set_size_request (widget, 100, -1);
2067
2103
                gtk_paned_pack1 (GTK_PANED(hpaned), widget, FALSE, FALSE);
2068
2104
 
2069
 
                widget = ui_hub_spending_create(data);
 
2105
                //5.7 add home time chart
 
2106
                box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
 
2107
                gtk_box_set_homogeneous(GTK_BOX(box), TRUE);
 
2108
                gtk_paned_pack2 (GTK_PANED(hpaned), box, TRUE, FALSE);
 
2109
                
 
2110
                widget = ui_hub_reptotal_create(data);
2070
2111
                //gtk_widget_set_size_request (widget, -1, 100);
2071
 
                gtk_paned_pack2 (GTK_PANED(hpaned), widget, TRUE, FALSE);
2072
 
 
 
2112
                gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0);
 
2113
 
 
2114
                widget = ui_hub_reptime_create(data);
 
2115
                gtk_box_pack_start (GTK_BOX (box), widget, TRUE, TRUE, 0);
 
2116
 
 
2117
 
 
2118
        // bottom part
2073
2119
        box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
2074
2120
        data->GR_upc = box;
2075
2121
        gtk_paned_pack2 (GTK_PANED(vpaned), box, TRUE, FALSE);
2121
2167
        //todo: move this elsewhere
2122
2168
        DB( g_print(" - setup stuff\n") );
2123
2169
 
2124
 
        data->filter = da_flt_malloc();
2125
 
        filter_reset(data->filter);
2126
 
        hbtk_combo_box_set_active_id(GTK_COMBO_BOX_TEXT(data->CY_range), PREFS->date_range_wal);
2127
 
 
2128
2170
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data->MI_showtbar), PREFS->wal_toolbar);
2129
 
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data->MI_showspend), PREFS->wal_spending);
 
2171
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data->MI_showtotchart), PREFS->wal_totchart);
 
2172
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data->MI_showtimchart), PREFS->wal_timchart);
2130
2173
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(data->MI_showbotlist), PREFS->wal_upcoming);
2131
2174
 
2132
2175
        /* Drag and drop support, set targets to NULL because we add the
2168
2211
        g_signal_connect (data->MI_prefs , "activate", G_CALLBACK (ui_mainwindow_action_preferences), (gpointer)data);
2169
2212
 
2170
2213
        g_signal_connect (data->MI_showtbar , "toggled", G_CALLBACK (ui_mainwindow_action_toggle_toolbar), (gpointer)data);
2171
 
        g_signal_connect (data->MI_showspend , "toggled", G_CALLBACK (ui_mainwindow_action_toggle_topspending), (gpointer)data);
 
2214
        g_signal_connect (data->MI_showtotchart , "toggled", G_CALLBACK (ui_mainwindow_action_toggle_totchart), (gpointer)data);
 
2215
        g_signal_connect (data->MI_showtimchart , "toggled", G_CALLBACK (ui_mainwindow_action_toggle_timchart), (gpointer)data);
2172
2216
        g_signal_connect (data->MI_showbotlist , "toggled", G_CALLBACK (ui_mainwindow_action_toggle_upcoming), (gpointer)data);
2173
2217
        g_signal_connect (data->MI_eurominor , "toggled", G_CALLBACK (ui_mainwindow_action_toggle_minor), (gpointer)data);
2174
2218