~mdoyen/homebank/5.7.x

« back to all changes in this revision

Viewing changes to src/ui-archive.c

  • Committer: Maxime Doyen
  • Date: 2023-09-06 19:22:10 UTC
  • Revision ID: homebank@free.fr-20230906192210-kal1pe00sty1jt2g
5.7 release

Show diffs side-by-side

added added

removed removed

Lines of Context:
114
114
    {
115
115
                case LST_DEFARC_SORT_DATE:
116
116
                        retval = item1->nextdate - item2->nextdate;
 
117
                        //#2024956 default to next date
 
118
                        if(!retval)
 
119
                                goto domemo;
117
120
                        break;
118
121
                case LST_DEFARC_SORT_MEMO:
119
 
                        retval = (item1->flags & GF_INCOME) - (item2->flags & GF_INCOME);
 
122
domemo:                 retval = (item1->flags & GF_INCOME) - (item2->flags & GF_INCOME);
120
123
                        if(!retval)
121
124
                        {
122
125
                                retval = hb_string_utf8_compare(item1->memo, item2->memo);
174
177
 
175
178
 
176
179
static void 
 
180
ui_arc_listview_cell_data_func_icons (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 
181
{
 
182
Archive *item;
 
183
gchar *iconname = NULL;
 
184
 
 
185
        gtk_tree_model_get(model, iter, LST_DEFARC_DATAS, &item, -1);
 
186
 
 
187
        switch(GPOINTER_TO_INT(user_data))
 
188
        {
 
189
                case 1:
 
190
                        iconname = ( item->flags & OF_PREFILLED  ) ? ICONNAME_HB_OPE_PREFILLED : NULL;
 
191
                        break;
 
192
        }
 
193
 
 
194
        g_object_set(renderer, "icon-name", iconname, NULL);
 
195
}
 
196
 
 
197
 
 
198
static void 
177
199
ui_arc_listview_cell_data_function_auto (GtkTreeViewColumn *col, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
178
200
{
179
201
Archive *item;
439
461
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
440
462
        #endif
441
463
 
 
464
        // column: icons
 
465
        column = gtk_tree_view_column_new();
 
466
        renderer = gtk_cell_renderer_pixbuf_new ();
 
467
        //gtk_cell_renderer_set_fixed_size(renderer, GLOBALS->lst_pixbuf_maxwidth, -1);
 
468
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
 
469
        gtk_tree_view_column_set_cell_data_func(column, renderer, ui_arc_listview_cell_data_func_icons, GINT_TO_POINTER(1), NULL);
 
470
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
 
471
 
 
472
 
442
473
        /* column: Scheduled icon */
443
474
        column = gtk_tree_view_column_new();
444
475
        renderer = gtk_cell_renderer_pixbuf_new ();
459
490
        
460
491
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
461
492
 
462
 
        /* column: Next on */
 
493
        /* column: Date Next on */
463
494
        renderer = gtk_cell_renderer_text_new ();
464
495
        //#2004631 date and column title alignement
465
496
        //g_object_set(renderer, "xalign", 1.0, NULL);
471
502
        //#2004631 date and column title alignement
472
503
        //gtk_tree_view_column_set_alignment (column, 0.5);
473
504
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
474
 
        
 
505
 
475
506
        /* column: Payee */
476
507
        column = ui_arc_listview_column_text_create(_("Payee"), LST_DEFARC_SORT_PAYEE, ui_arc_listview_cell_data_function_payee, NULL);
477
508
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
479
510
        /* column: Category */
480
511
        column = ui_arc_listview_column_text_create(_("Category"), LST_DEFARC_SORT_CATEGORY, ui_arc_listview_cell_data_function_category, NULL);
481
512
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
482
 
        
 
513
 
483
514
        /* column: Memo */
484
515
        column = ui_arc_listview_column_text_create(_("Memo"), LST_DEFARC_SORT_MEMO, ui_arc_listview_cell_data_function_memo, NULL);
485
516
        gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
486
 
        
 
517
 
487
518
        /* column : amount */
488
519
        column = gtk_tree_view_column_new();
489
520
        gtk_tree_view_column_set_title(column, _("Amount"));
512
543
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store), LST_DEFARC_SORT_AMOUNT, ui_arc_listview_compare_func, GINT_TO_POINTER(LST_DEFARC_SORT_AMOUNT), NULL);
513
544
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(store), LST_DEFARC_SORT_ACCOUNT, ui_arc_listview_compare_func, GINT_TO_POINTER(LST_DEFARC_SORT_ACCOUNT), NULL);
514
545
 
515
 
        gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), LST_DEFARC_SORT_MEMO, GTK_SORT_ASCENDING);
 
546
        //#2024956 default to next date
 
547
        //gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), LST_DEFARC_SORT_MEMO, GTK_SORT_ASCENDING);
 
548
        gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), LST_DEFARC_SORT_DATE, GTK_SORT_ASCENDING);
516
549
 
517
550
        //gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(view), FALSE);
518
551
        //gtk_tree_view_set_reorderable (GTK_TREE_VIEW(view), TRUE);
758
791
        }
759
792
 
760
793
        deftransaction_dispose(dialog, NULL);
761
 
        gtk_widget_destroy (dialog);
 
794
        gtk_window_destroy (GTK_WINDOW(dialog));
762
795
        
763
796
        da_transaction_free(new_txn);
764
797
 
805
838
                }
806
839
 
807
840
                deftransaction_dispose(dialog, NULL);
808
 
                gtk_widget_destroy (dialog);
 
841
                gtk_window_destroy (GTK_WINDOW(dialog));
809
842
                
810
843
                da_transaction_free(new_txn);
811
844
        }
1046
1079
 
1047
1080
        DB( g_print("\n[ui-scheduled] cleanup\n") );
1048
1081
 
1049
 
        da_archive_glist_sorted(1);
 
1082
        da_archive_glist_sorted(HB_GLIST_SORT_NAME);
1050
1083
 
1051
1084
        GLOBALS->changes_count += data->change;
1052
1085
 
1179
1212
        group_grid = gtk_grid_new ();
1180
1213
        gtk_grid_set_row_spacing (GTK_GRID (group_grid), SPACING_SMALL);
1181
1214
        gtk_grid_set_column_spacing (GTK_GRID (group_grid), SPACING_MEDIUM);
1182
 
        g_object_set(group_grid, "margin", SPACING_SMALL, NULL);
1183
 
        gtk_container_add(GTK_CONTAINER(expander), group_grid);
 
1215
        hb_widget_set_margin(GTK_WIDGET(group_grid), SPACING_SMALL);
 
1216
        gtk_expander_set_child (GTK_EXPANDER(expander), group_grid);
1184
1217
        
1185
1218
        row++;
1186
1219
        label = make_label_widget(_("Week end:"));
1222
1255
GtkWidget *dialog, *content_area, *bbox, *hbox, *vbox, *tbar;
1223
1256
GtkWidget *box, *treeview, *scrollwin;
1224
1257
GtkWidget *widget, *content, *menubutton, *image, *label;
1225
 
GtkToolItem *toolitem;
1226
1258
gint w, h, dw, dh;
1227
1259
 
1228
1260
        DB( g_print("\n[ui-scheduled] dialog\n") );
1255
1287
        content_area = gtk_dialog_get_content_area(GTK_DIALOG (dialog));                // return a vbox
1256
1288
 
1257
1289
        content = gtk_box_new(GTK_ORIENTATION_VERTICAL, SPACING_MEDIUM);
1258
 
        g_object_set(content, "margin", SPACING_LARGE, NULL);
 
1290
        hb_widget_set_margin(GTK_WIDGET(content), SPACING_LARGE);
1259
1291
        gtk_box_pack_start (GTK_BOX (content_area), content, TRUE, TRUE, 0);
1260
1292
        
1261
1293
        hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1295
1327
        treeview = (GtkWidget *)ui_arc_listview_new();
1296
1328
        data->LV_arc = treeview;
1297
1329
        gtk_widget_set_size_request(treeview, HB_MINWIDTH_LIST, -1);
1298
 
        gtk_container_add(GTK_CONTAINER(scrollwin), treeview);
 
1330
        gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW(scrollwin), treeview);
1299
1331
        gtk_box_pack_start (GTK_BOX (vbox), scrollwin, TRUE, TRUE, 0);
1300
1332
 
1301
 
        tbar = gtk_toolbar_new();
1302
 
        gtk_toolbar_set_icon_size (GTK_TOOLBAR(tbar), GTK_ICON_SIZE_MENU);
1303
 
        gtk_toolbar_set_style(GTK_TOOLBAR(tbar), GTK_TOOLBAR_ICONS);
 
1333
        tbar = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, SPACING_MEDIUM);
1304
1334
        gtk_style_context_add_class (gtk_widget_get_style_context (tbar), GTK_STYLE_CLASS_INLINE_TOOLBAR);
1305
1335
        gtk_box_pack_start (GTK_BOX (vbox), tbar, FALSE, FALSE, 0);
1306
1336
 
1307
1337
        bbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1308
 
        toolitem = gtk_tool_item_new();
1309
 
        gtk_container_add (GTK_CONTAINER(toolitem), bbox);
1310
 
        gtk_toolbar_insert(GTK_TOOLBAR(tbar), GTK_TOOL_ITEM(toolitem), -1);
 
1338
        gtk_box_pack_start (GTK_BOX (tbar), bbox, FALSE, FALSE, 0);
1311
1339
 
1312
1340
                widget = make_image_button(ICONNAME_LIST_ADD, _("Add"));
1313
1341
                data->BT_add = widget;
1314
 
                gtk_container_add (GTK_CONTAINER(bbox), widget);
 
1342
                gtk_box_pack_start(GTK_BOX(bbox), widget, FALSE, FALSE, 0);
1315
1343
 
1316
1344
                widget = make_image_button(ICONNAME_LIST_DELETE, _("Delete"));
1317
1345
                data->BT_rem = widget;
1318
 
                gtk_container_add (GTK_CONTAINER(bbox), widget);
1319
 
 
1320
 
        toolitem = gtk_separator_tool_item_new ();
1321
 
        //gtk_tool_item_set_expand (toolitem, TRUE);
1322
 
        gtk_separator_tool_item_set_draw(GTK_SEPARATOR_TOOL_ITEM(toolitem), FALSE);
1323
 
        gtk_toolbar_insert(GTK_TOOLBAR(tbar), GTK_TOOL_ITEM(toolitem), -1);
 
1346
                gtk_box_pack_start(GTK_BOX(bbox), widget, FALSE, FALSE, 0);
1324
1347
 
1325
1348
        bbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
1326
 
        toolitem = gtk_tool_item_new();
1327
 
        gtk_container_add (GTK_CONTAINER(toolitem), bbox);
1328
 
        gtk_toolbar_insert(GTK_TOOLBAR(tbar), GTK_TOOL_ITEM(toolitem), -1);
1329
 
 
1330
 
        //widget = gtk_button_new_with_mnemonic(_("_Edit"));
1331
 
        widget = make_image_button(ICONNAME_LIST_EDIT, _("Edit"));
1332
 
        data->BT_edit = widget;
1333
 
        gtk_container_add (GTK_CONTAINER(bbox), widget);
1334
 
        
1335
 
        //schedule button
1336
 
        menubutton = gtk_menu_button_new ();
1337
 
        data->MB_schedule = menubutton;
1338
 
        gtk_menu_button_set_direction (GTK_MENU_BUTTON(menubutton), GTK_ARROW_DOWN );
1339
 
        gtk_widget_set_halign (menubutton, GTK_ALIGN_END);
1340
 
        //gtk_widget_set_hexpand (menubutton, TRUE);
1341
 
        gtk_widget_show_all(menubutton);
1342
 
        gtk_container_add (GTK_CONTAINER(bbox), menubutton);
1343
 
 
1344
 
        box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
1345
 
        label = gtk_label_new_with_mnemonic (_("_Schedule"));
1346
 
        gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
1347
 
        image = gtk_image_new_from_icon_name ("pan-down-symbolic", GTK_ICON_SIZE_BUTTON);
1348
 
        gtk_box_pack_start (GTK_BOX(box), image, FALSE, FALSE, 0);
1349
 
        gtk_container_add(GTK_CONTAINER(menubutton), box);
1350
 
        GtkWidget *template = ui_arc_manage_create_scheduling(data);
1351
 
        GtkWidget *popover = create_popover (menubutton, template, GTK_POS_TOP);
1352
 
        data->PO_schedule = popover;
1353
 
        gtk_menu_button_set_popover(GTK_MENU_BUTTON(menubutton), popover);
 
1349
        gtk_box_pack_start (GTK_BOX (tbar), bbox, FALSE, FALSE, 0);
 
1350
 
 
1351
                //widget = gtk_button_new_with_mnemonic(_("_Edit"));
 
1352
                widget = make_image_button(ICONNAME_LIST_EDIT, _("Edit"));
 
1353
                data->BT_edit = widget;
 
1354
                gtk_box_pack_start(GTK_BOX(bbox), widget, FALSE, FALSE, 0);
 
1355
 
 
1356
                //schedule button
 
1357
                menubutton = gtk_menu_button_new ();
 
1358
                data->MB_schedule = menubutton;
 
1359
                gtk_menu_button_set_direction (GTK_MENU_BUTTON(menubutton), GTK_ARROW_DOWN );
 
1360
                gtk_widget_set_halign (menubutton, GTK_ALIGN_END);
 
1361
                //gtk_widget_set_hexpand (menubutton, TRUE);
 
1362
                gtk_widget_show_all(menubutton);
 
1363
                gtk_box_pack_start(GTK_BOX(bbox), menubutton, FALSE, FALSE, 0);
 
1364
 
 
1365
                box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, SPACING_SMALL);
 
1366
                label = gtk_label_new_with_mnemonic (_("_Schedule"));
 
1367
                gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
 
1368
                image = gtk_image_new_from_icon_name ("pan-down-symbolic", GTK_ICON_SIZE_BUTTON);
 
1369
                gtk_box_pack_start (GTK_BOX(box), image, FALSE, FALSE, 0);
 
1370
                gtk_container_add(GTK_CONTAINER(menubutton), box);
 
1371
                GtkWidget *template = ui_arc_manage_create_scheduling(data);
 
1372
                GtkWidget *popover = create_popover (menubutton, template, GTK_POS_TOP);
 
1373
                data->PO_schedule = popover;
 
1374
                gtk_menu_button_set_popover(GTK_MENU_BUTTON(menubutton), popover);
1354
1375
        
1355
1376
 
1356
1377
        // connect dialog signals
1369
1390
 
1370
1391
        // cleanup and destroy
1371
1392
        ui_arc_manage_cleanup(data, result);
1372
 
        gtk_widget_destroy (dialog);
 
1393
        gtk_window_destroy (GTK_WINDOW(dialog));
1373
1394
 
1374
1395
        g_free(data);
1375
1396