/* 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.
*
#include "ui-payee.h"
#include "ui-category.h"
#include "gtk-dateentry.h"
-#include "list_operation.h"
+#include "list-operation.h"
/****************************************************************************/
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 : "");
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);
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)) );
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;
}
-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");
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)) )
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;
}
}
}
- /* 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;
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;
}
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++;
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++;
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);