]> Dogcows Code - chaz/homebank/blobdiff - src/ui-txn-multi.c
import homebank-5.2.6
[chaz/homebank] / src / ui-txn-multi.c
index 1c2a48ba3ab98c0e87711138b8aeeee64922b664..6d6fa27bd710cdd847f858ffc63b29d946c59baf 100644 (file)
@@ -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);
This page took 0.025567 seconds and 4 git commands to generate.