X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fui-txn-multi.c;h=6d6fa27bd710cdd847f858ffc63b29d946c59baf;hb=5176d625f663a51663b33dfec764563e12fe22c4;hp=1c2a48ba3ab98c0e87711138b8aeeee64922b664;hpb=d11c8dd3275ed2a4a35598e69c0804dcf9435766;p=chaz%2Fhomebank diff --git a/src/ui-txn-multi.c b/src/ui-txn-multi.c index 1c2a48b..6d6fa27 100644 --- a/src/ui-txn-multi.c +++ b/src/ui-txn-multi.c @@ -1,5 +1,5 @@ /* HomeBank -- Free, easy, personal accounting for everyone. - * Copyright (C) 1995-2018 Maxime DOYEN + * Copyright (C) 1995-2019 Maxime DOYEN * * This file is part of HomeBank. * @@ -25,7 +25,7 @@ #include "ui-payee.h" #include "ui-category.h" #include "gtk-dateentry.h" -#include "list_operation.h" +#include "list-operation.h" /****************************************************************************/ @@ -62,6 +62,12 @@ gchar *tagstr; gtk_date_entry_set_date(GTK_DATE_ENTRY(data->PO_date), (guint)ope->date); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(data->CM_date), TRUE); break; + case LST_DSPOPE_AMOUNT: + case LST_DSPOPE_EXPENSE: + case LST_DSPOPE_INCOME: + gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_amount), ope->amount); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(data->CM_amount), TRUE); + break; case LST_DSPOPE_INFO: gtk_combo_box_set_active(GTK_COMBO_BOX(data->NU_mode), ope->paymode); gtk_entry_set_text(GTK_ENTRY(data->ST_info), (ope->info != NULL) ? ope->info : ""); @@ -81,7 +87,7 @@ gchar *tagstr; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(data->CM_cat), TRUE); break; case LST_DSPOPE_TAGS: - tagstr = transaction_tags_tostring(ope); + tagstr = tags_tostring(ope->tags); gtk_entry_set_text(GTK_ENTRY(data->ST_tags), (tagstr != NULL) ? tagstr : ""); g_free(tagstr); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(data->CM_tags), TRUE); @@ -102,6 +108,9 @@ struct ui_multipleedit_dialog_data *data; if(data->PO_date) gtk_widget_set_sensitive (data->PO_date, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(data->CM_date)) ); + if(data->ST_amount) + gtk_widget_set_sensitive (data->ST_amount , gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(data->CM_amount )) ); + if(data->NU_mode && data->ST_info) { gtk_widget_set_sensitive (data->NU_mode, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(data->CM_mode)) ); @@ -147,7 +156,7 @@ GList *selection, *list; GtkTreeIter iter; gtk_tree_model_get_iter(model, &iter, list->data); - gtk_tree_model_get(model, &iter, LST_DSPOPE_DATAS, &entry, -1); + gtk_tree_model_get(model, &iter, MODEL_TXN_POINTER, &entry, -1); if(entry->paymode == PAYMODE_INTXFER) data->has_xfer = TRUE; @@ -161,11 +170,12 @@ GList *selection, *list; } -gint ui_multipleedit_dialog_apply( GtkWidget *widget, gpointer user_data ) +gint ui_multipleedit_dialog_apply( GtkWidget *widget, gboolean *do_sort ) { struct ui_multipleedit_dialog_data *data; GtkTreeModel *model; GList *selection, *list; +gboolean tmp_sort = FALSE; guint changes; data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data"); @@ -186,20 +196,39 @@ guint changes; gboolean change = FALSE; gtk_tree_model_get_iter(model, &iter, list->data); - gtk_tree_model_get(model, &iter, LST_DSPOPE_DATAS, &txn, -1); + gtk_tree_model_get(model, &iter, MODEL_TXN_POINTER, &txn, -1); DB( g_print(" modifying %s %.2f\n", txn->memo, txn->amount) ); + //TODO: this is always true if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_DATE) == TRUE ) { if( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(data->CM_date)) ) { + guint32 olddate = txn->date; + txn->date = gtk_date_entry_get_date(GTK_DATE_ENTRY(data->PO_date)); DB( g_print(" -> date: '%d'\n", txn->date) ); + + //#1270687/1792808: sort if date changed + if(olddate != txn->date) + tmp_sort = TRUE; + change = TRUE; } } + if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_AMOUNT) == TRUE + || list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_EXPENSE) == TRUE + || list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_INCOME) == TRUE ) + { + if( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(data->CM_amount)) ) + { + txn->amount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_amount)); + change = TRUE; + } + } + if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_INFO) == TRUE ) { if( gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(data->CM_mode)) ) @@ -271,7 +300,8 @@ guint changes; txt = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->ST_tags)); if (txt && *txt) { - transaction_tags_parse(txn, txt); + g_free(txn->tags); + txn->tags = tags_parse(txt); DB( g_print(" -> tags: '%s'\n", txt) ); change = TRUE; } @@ -298,22 +328,6 @@ guint changes; } } - /* since 5.1 date and amount are no more editable - case LST_DSPOPE_DATE: - txn->date = gtk_date_entry_get_date(GTK_DATE_ENTRY(widget1)); - data->do_sort = TRUE; - refreshbalance = TRUE; - break; - case LST_DSPOPE_EXPENSE: - case LST_DSPOPE_INCOME: - case LST_DSPOPE_AMOUNT: - txn->flags &= ~(OF_INCOME); //delete flag - txn->amount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widget1)); - if(txn->amount > 0) txn->flags |= OF_INCOME; - refreshbalance = TRUE; - break; - */ - if( change == TRUE ) { txn->flags |= OF_CHANGED; @@ -333,6 +347,9 @@ guint changes; g_list_foreach(selection, (GFunc)gtk_tree_path_free, NULL); g_list_free(selection); + if( do_sort != NULL ) + *do_sort = tmp_sort; + return GLOBALS->changes_count - changes; } @@ -411,6 +428,38 @@ gint row; g_signal_connect (data->CM_date , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); } + if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_AMOUNT) == TRUE + || list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_EXPENSE) == TRUE + || list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_INCOME) == TRUE ) + { + row++; + label = make_label_widget(_("_Amount:")); + gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1); + widget = gtk_check_button_new(); + data->CM_amount = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 1, 1); + widget = make_amount(label); + data->ST_amount = widget; + gtk_widget_set_hexpand (widget, TRUE); + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + + g_signal_connect (data->CM_amount , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); + } + + row++; + label = make_label_widget(_("A_ccount:")); + data->LB_acc = label; + gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1); + widget = gtk_check_button_new(); + data->CM_acc = widget; + gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 1, 1); + widget = ui_acc_comboboxentry_new(label); + data->PO_acc = widget; + gtk_widget_set_hexpand (widget, TRUE); + gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); + + g_signal_connect (data->CM_acc , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); + if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_INFO) == TRUE ) { row++; @@ -441,20 +490,6 @@ gint row; g_signal_connect (data->CM_info , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); } - row++; - label = make_label_widget(_("A_ccount:")); - data->LB_acc = label; - gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1); - widget = gtk_check_button_new(); - data->CM_acc = widget; - gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 1, 1); - widget = ui_acc_comboboxentry_new(label); - data->PO_acc = widget; - gtk_widget_set_hexpand (widget, TRUE); - gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - - g_signal_connect (data->CM_acc , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); - if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_PAYEE) == TRUE ) { row++; @@ -487,39 +522,38 @@ gint row; g_signal_connect (data->CM_cat , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); } - if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_TAGS) == TRUE ) + if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_MEMO) == TRUE ) { row++; - label = make_label_widget(_("Ta_gs:")); + label = make_label_widget(_("M_emo:")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1); widget = gtk_check_button_new(); - data->CM_tags = widget; + data->CM_memo = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 1, 1); - widget = make_string(label); - data->ST_tags = widget; + widget = make_memo_entry(label); + data->ST_memo = widget; gtk_widget_set_hexpand (widget, TRUE); gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - g_signal_connect (data->CM_tags , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); + g_signal_connect (data->CM_memo , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); } - if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_MEMO) == TRUE ) + if( list_txn_column_id_isvisible(GTK_TREE_VIEW(data->treeview), LST_DSPOPE_TAGS) == TRUE ) { row++; - label = make_label_widget(_("M_emo:")); + label = make_label_widget(_("Ta_gs:")); gtk_grid_attach (GTK_GRID (group_grid), label, 0, row, 1, 1); widget = gtk_check_button_new(); - data->CM_memo = widget; + data->CM_tags = widget; gtk_grid_attach (GTK_GRID (group_grid), widget, 1, row, 1, 1); - widget = make_memo_entry(label); - data->ST_memo = widget; + widget = make_string(label); + data->ST_tags = widget; gtk_widget_set_hexpand (widget, TRUE); gtk_grid_attach (GTK_GRID (group_grid), widget, 2, row, 1, 1); - g_signal_connect (data->CM_memo , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); + g_signal_connect (data->CM_tags , "toggled", G_CALLBACK (ui_multipleedit_dialog_update), NULL); } - ui_multipleedit_dialog_update(dialog, NULL); ui_acc_comboboxentry_populate(GTK_COMBO_BOX(data->PO_acc), GLOBALS->h_acc, ACC_LST_INSERT_NORMAL);