gnucash master: Multiple changes pushed

Robert Fewell bobit at code.gnucash.org
Wed May 27 09:45:54 EDT 2020


Updated	 via  https://github.com/Gnucash/gnucash/commit/1adbc548 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/5de1c6d7 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b50acc3b (commit)
	 via  https://github.com/Gnucash/gnucash/commit/85e6396d (commit)
	 via  https://github.com/Gnucash/gnucash/commit/923b25ff (commit)
	 via  https://github.com/Gnucash/gnucash/commit/c0abdb28 (commit)
	from  https://github.com/Gnucash/gnucash/commit/64198574 (commit)



commit 1adbc5486545d5bf866d2d707cd928077ccf4cd5
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed May 27 14:43:26 2020 +0100

    Change the position the register pop up so it aligns better

diff --git a/gnucash/register/register-gnome/gnucash-item-edit.c b/gnucash/register/register-gnome/gnucash-item-edit.c
index a307d1bd7..dcafee2ee 100644
--- a/gnucash/register/register-gnome/gnucash-item-edit.c
+++ b/gnucash/register/register-gnome/gnucash-item-edit.c
@@ -1023,7 +1023,7 @@ gnc_item_edit_show_popup (GncItemEdit *item_edit)
 
     // Adjust the popup_y point based on popping above or below
     if (up_height > down_height)
-        popup_y = y - popup_h;
+        popup_y = y - popup_h - 1;
     else
         popup_y = y + h;
 

commit 5de1c6d711c421380d7618da567fbc5208ab29e5
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed May 27 14:26:44 2020 +0100

    Fix the alignment of the Notes label in Transfer dialog

diff --git a/gnucash/gtkbuilder/dialog-transfer.glade b/gnucash/gtkbuilder/dialog-transfer.glade
index 50cd71297..9619f43fe 100644
--- a/gnucash/gtkbuilder/dialog-transfer.glade
+++ b/gnucash/gtkbuilder/dialog-transfer.glade
@@ -238,8 +238,7 @@
                       <object class="GtkLabel" id="label13">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="halign">start</property>
-                        <property name="margin_left">12</property>
+                        <property name="halign">end</property>
                         <property name="label" translatable="yes">Notes</property>
                       </object>
                       <packing>

commit b50acc3ba98393bd99974e33701016eac4fa7519
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed May 27 14:19:26 2020 +0100

    Set horizontal paned position in Lot viewer
    
    Set the initial Split horizontal paned position to be half way when the
    window is realized.

diff --git a/gnucash/gnome/dialog-lot-viewer.c b/gnucash/gnome/dialog-lot-viewer.c
index 3ef9b9bdd..e07c5e601 100644
--- a/gnucash/gnome/dialog-lot-viewer.c
+++ b/gnucash/gnome/dialog-lot-viewer.c
@@ -112,6 +112,7 @@ struct _GNCLotViewer
     GtkListStore  * split_in_lot_store;
     GtkTreeView   * split_free_view;
     GtkListStore  * split_free_store;
+    GtkWidget     * split_hpaned;
     GtkButton     * add_split_to_lot_button;
     GtkButton     * remove_split_from_lot_button;
     GtkToggleButton * only_show_open_lots_checkbutton;
@@ -1013,6 +1014,16 @@ lv_init_split_buttons (GNCLotViewer *lv)
 
 /* ======================================================================== */
 
+static void
+window_realize_set_split_paned_position_cb (GtkWidget *widget, gpointer user_data)
+{
+    GNCLotViewer *lv = user_data;
+    gint width;
+
+    gtk_window_get_size (GTK_WINDOW(lv->window), &width, NULL);
+    gtk_paned_set_position (GTK_PANED(lv->split_hpaned), width / 2);
+}
+
 static void
 lv_create (GNCLotViewer *lv, GtkWindow *parent)
 {
@@ -1049,6 +1060,7 @@ lv_create (GNCLotViewer *lv, GtkWindow *parent)
 
     lv->split_in_lot_view = GTK_TREE_VIEW(gtk_builder_get_object (builder, "split_in_lot_view"));
     lv->split_free_view = GTK_TREE_VIEW(gtk_builder_get_object (builder, "split_free_view"));
+    lv->split_hpaned = GTK_WIDGET(gtk_builder_get_object (builder, "split_hpaned"));
     lv_init_split_views(lv);
 
     lv->add_split_to_lot_button = GTK_BUTTON(gtk_builder_get_object (builder, "add_split_to_lot_button"));
@@ -1077,6 +1089,10 @@ lv_create (GNCLotViewer *lv, GtkWindow *parent)
 
     lv->selected_lot = NULL;
 
+    /* set the split paned position to be halfway at the start */
+    g_signal_connect (G_OBJECT(lv->window), "realize",
+                      G_CALLBACK(window_realize_set_split_paned_position_cb), lv);
+
     /* Setup signals */
     gtk_builder_connect_signals(builder, lv);
     g_object_unref(G_OBJECT(builder));

commit 85e6396dcd0f386ba73e981ccfe7f035c3143aed
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed May 27 14:08:12 2020 +0100

    Set the expanding column in the lot viewer
    
    Set the expanding columns in the lot viewer to be the 'Title' and the
    'Description'. Also ellipsize the description to help with long
    transaction descriptions.

diff --git a/gnucash/gnome/dialog-lot-viewer.c b/gnucash/gnome/dialog-lot-viewer.c
index 48bf842e3..3ef9b9bdd 100644
--- a/gnucash/gnome/dialog-lot-viewer.c
+++ b/gnucash/gnome/dialog-lot-viewer.c
@@ -885,6 +885,7 @@ lv_init_lot_view (GNCLotViewer *lv)
     column = gtk_tree_view_column_new_with_attributes(_("Title"), renderer,
              "text", LOT_COL_TITLE, NULL);
     gtk_tree_view_column_set_sort_column_id(column, LOT_COL_TITLE);
+    gtk_tree_view_column_set_expand (column, TRUE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
@@ -950,7 +951,15 @@ lv_init_split_view (GNCLotViewer *lv, GtkTreeView *view)
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Description"), renderer,
              "text", SPLIT_COL_DESCRIPTION, NULL);
+
+    g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+    /* as this column is the expander column, if ellipsize is set, the column
+       width would be small, so set a minimum width */
+    gtk_tree_view_column_set_min_width (column, 200);
+
     gtk_tree_view_column_set_sort_column_id(column, SPLIT_COL_DESCRIPTION);
+    gtk_tree_view_column_set_expand (column, TRUE);
+    gtk_tree_view_column_set_resizable (column, TRUE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();

commit 923b25ffedd1336e7bda60e7a747c44af66d86d4
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed May 27 14:02:02 2020 +0100

    Change the alignment of the numeric values in the lot viewer
    
    Change the alignment of the numeric columns to be right aligned so the
    number align up.

diff --git a/gnucash/gnome/dialog-lot-viewer.c b/gnucash/gnome/dialog-lot-viewer.c
index 7488d72c7..48bf842e3 100644
--- a/gnucash/gnome/dialog-lot-viewer.c
+++ b/gnucash/gnome/dialog-lot-viewer.c
@@ -823,6 +823,16 @@ static void print_date (GtkTreeViewColumn *tree_column,
     g_free (doc_date_str);
 }
 
+static void
+configure_number_columns (GtkTreeViewColumn *column,
+                          GtkCellRenderer *renderer, gint sort_column)
+{
+    gtk_tree_view_column_set_sort_column_id (column, sort_column);
+    gtk_cell_renderer_set_alignment (renderer, 1.0, 0.5); // right align amount column
+    gtk_tree_view_column_set_alignment (column, 1.0);
+    gtk_cell_renderer_set_padding (renderer, 5, 0); // add padding so its not close to edge
+}
+
 static void
 lv_init_lot_view (GNCLotViewer *lv)
 {
@@ -880,13 +890,13 @@ lv_init_lot_view (GNCLotViewer *lv)
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
              "text", LOT_COL_BALN, NULL);
-    gtk_tree_view_column_set_sort_column_id (column, LOT_COL_BALN_DOUBLE);
+    configure_number_columns (column, renderer, LOT_COL_BALN_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Gains"), renderer,
              "text", LOT_COL_GAINS, NULL);
-    gtk_tree_view_column_set_sort_column_id (column, LOT_COL_GAINS_DOUBLE);
+    configure_number_columns (column, renderer, LOT_COL_GAINS_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     /* Set up signals */
@@ -946,25 +956,25 @@ lv_init_split_view (GNCLotViewer *lv, GtkTreeView *view)
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Amount"), renderer,
              "text", SPLIT_COL_AMOUNT, NULL);
-    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_AMOUNT_DOUBLE);
+    configure_number_columns (column, renderer, SPLIT_COL_AMOUNT_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Value"), renderer,
              "text", SPLIT_COL_VALUE, NULL);
-    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_VALUE_DOUBLE);
+    configure_number_columns (column, renderer, SPLIT_COL_VALUE_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Gain/Loss"), renderer,
              "text", SPLIT_COL_GAIN_LOSS, NULL);
-    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_GAIN_LOSS_DOUBLE);
+    configure_number_columns (column, renderer, SPLIT_COL_GAIN_LOSS_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
              "text", SPLIT_COL_BALANCE, NULL);
-    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_BALANCE_DOUBLE);
+    configure_number_columns (column, renderer, SPLIT_COL_BALANCE_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     /* Set up the selection callbacks */

commit c0abdb28d1952a0d5125417820b58c2992d856a4
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed May 27 13:52:27 2020 +0100

    Bug 797768 - View Lots sorting numbers not right.
    
    When you try and sort on balance, amount and value the columns are
    sorted alphabetically as opposed to numeric value. Fixed by adding
    extra double columns to the list store and use them to sort the numeric
    columns.

diff --git a/gnucash/gnome/dialog-lot-viewer.c b/gnucash/gnome/dialog-lot-viewer.c
index fda7d288b..7488d72c7 100644
--- a/gnucash/gnome/dialog-lot-viewer.c
+++ b/gnucash/gnome/dialog-lot-viewer.c
@@ -61,7 +61,9 @@ enum lot_cols
     LOT_COL_CLOSE,
     LOT_COL_TITLE,
     LOT_COL_BALN,
+    LOT_COL_BALN_DOUBLE, // used only for sorting
     LOT_COL_GAINS,
+    LOT_COL_GAINS_DOUBLE, // used only for sorting
     LOT_COL_PNTR,
     NUM_LOT_COLS
 };
@@ -72,9 +74,13 @@ enum split_cols
     SPLIT_COL_NUM,
     SPLIT_COL_DESCRIPTION,
     SPLIT_COL_AMOUNT,
+    SPLIT_COL_AMOUNT_DOUBLE, // used only for sorting
     SPLIT_COL_VALUE,
+    SPLIT_COL_VALUE_DOUBLE, // used only for sorting
     SPLIT_COL_GAIN_LOSS,
+    SPLIT_COL_GAIN_LOSS_DOUBLE, // used only for sorting
     SPLIT_COL_BALANCE,
+    SPLIT_COL_BALANCE_DOUBLE, // used only for sorting
     SPLIT_COL_PNTR,
     NUM_SPLIT_COLS
 };
@@ -403,11 +409,13 @@ gnc_lot_viewer_fill (GNCLotViewer *lv)
         xaccSPrintAmount (baln_buff, amt_baln,
                           gnc_account_print_info (lv->account, TRUE));
         gtk_list_store_set(store, &iter, LOT_COL_BALN, baln_buff, -1);
+        gtk_list_store_set(store, &iter, LOT_COL_BALN_DOUBLE, gnc_numeric_to_double (amt_baln), -1);
 
         /* Capital Gains/Losses Appreciation/Depreciation */
         xaccSPrintAmount (gain_buff, gains_baln,
                           gnc_commodity_print_info (currency, TRUE));
         gtk_list_store_set(store, &iter, LOT_COL_GAINS, gain_buff, -1);
+        gtk_list_store_set(store, &iter, LOT_COL_GAINS_DOUBLE, gnc_numeric_to_double (gains_baln), -1);
 
         /* Self-reference */
         gtk_list_store_set(store, &iter, LOT_COL_PNTR, lot, -1);
@@ -524,6 +532,7 @@ gnc_split_viewer_fill (GNCLotViewer *lv, GtkListStore *store, SplitList *split_l
         xaccSPrintAmount (amtbuff, amnt,
                           gnc_account_print_info (lv->account, TRUE));
         gtk_list_store_set (store, &iter, SPLIT_COL_AMOUNT, amtbuff, -1);
+        gtk_list_store_set (store, &iter, SPLIT_COL_AMOUNT_DOUBLE, gnc_numeric_to_double (amnt), -1);
 
         /* Value.
          * For non-business accounts which are part of a lot,
@@ -535,6 +544,7 @@ gnc_split_viewer_fill (GNCLotViewer *lv, GtkListStore *store, SplitList *split_l
         xaccSPrintAmount (valbuff, valu,
                           gnc_commodity_print_info (currency, TRUE));
         gtk_list_store_set (store, &iter, SPLIT_COL_VALUE, valbuff, -1);
+        gtk_list_store_set (store, &iter, SPLIT_COL_VALUE_DOUBLE, gnc_numeric_to_double (valu), -1);
 
         /* Gains. Blank if none. */
         gains = xaccSplitGetCapGains (split);
@@ -548,6 +558,7 @@ gnc_split_viewer_fill (GNCLotViewer *lv, GtkListStore *store, SplitList *split_l
                               gnc_commodity_print_info (currency, TRUE));
         }
         gtk_list_store_set (store, &iter, SPLIT_COL_GAIN_LOSS, gainbuff, -1);
+        gtk_list_store_set (store, &iter, SPLIT_COL_GAIN_LOSS_DOUBLE, gnc_numeric_to_double (gains), -1);
 
         /* Balance of Gains */
         baln = gnc_numeric_add_fixed (baln, amnt);
@@ -561,6 +572,7 @@ gnc_split_viewer_fill (GNCLotViewer *lv, GtkListStore *store, SplitList *split_l
                               gnc_account_print_info (lv->account, TRUE));
         }
         gtk_list_store_set (store, &iter, SPLIT_COL_BALANCE, balnbuff, -1);
+        gtk_list_store_set (store, &iter, SPLIT_COL_BALANCE_DOUBLE, gnc_numeric_to_double (baln), -1);
 
         /* Self-reference */
         gtk_list_store_set(store, &iter, SPLIT_COL_PNTR, split, -1);
@@ -824,8 +836,10 @@ lv_init_lot_view (GNCLotViewer *lv)
 
     view = lv->lot_view;
     store = gtk_list_store_new(NUM_LOT_COLS, G_TYPE_STRING, G_TYPE_INT64,
-                               G_TYPE_INT64, G_TYPE_STRING, G_TYPE_STRING,
-                               G_TYPE_STRING, G_TYPE_POINTER);
+                               G_TYPE_INT64, G_TYPE_STRING,
+                               G_TYPE_STRING, G_TYPE_DOUBLE,
+                               G_TYPE_STRING,G_TYPE_DOUBLE,
+                               G_TYPE_POINTER);
     gtk_tree_view_set_model(view, GTK_TREE_MODEL(store));
     g_object_unref(store);
     lv->lot_store = store;
@@ -866,13 +880,13 @@ lv_init_lot_view (GNCLotViewer *lv)
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
              "text", LOT_COL_BALN, NULL);
-    gtk_tree_view_column_set_sort_column_id(column, LOT_COL_BALN);
+    gtk_tree_view_column_set_sort_column_id (column, LOT_COL_BALN_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Gains"), renderer,
              "text", LOT_COL_GAINS, NULL);
-    gtk_tree_view_column_set_sort_column_id(column, LOT_COL_GAINS);
+    gtk_tree_view_column_set_sort_column_id (column, LOT_COL_GAINS_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     /* Set up signals */
@@ -896,9 +910,12 @@ lv_init_split_view (GNCLotViewer *lv, GtkTreeView *view)
 
     g_return_val_if_fail(GTK_IS_TREE_VIEW(view), NULL);
 
-    store = gtk_list_store_new(NUM_SPLIT_COLS, G_TYPE_INT64, G_TYPE_STRING,
-                               G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
+    store = gtk_list_store_new(NUM_SPLIT_COLS, G_TYPE_INT64,
                                G_TYPE_STRING, G_TYPE_STRING,
+                               G_TYPE_STRING, G_TYPE_DOUBLE,
+                               G_TYPE_STRING, G_TYPE_DOUBLE,
+                               G_TYPE_STRING, G_TYPE_DOUBLE,
+                               G_TYPE_STRING, G_TYPE_DOUBLE,
                                G_TYPE_POINTER);
     gtk_tree_view_set_model(view, GTK_TREE_MODEL(store));
     g_object_unref(store);
@@ -929,25 +946,25 @@ lv_init_split_view (GNCLotViewer *lv, GtkTreeView *view)
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Amount"), renderer,
              "text", SPLIT_COL_AMOUNT, NULL);
-    gtk_tree_view_column_set_sort_column_id(column, SPLIT_COL_AMOUNT);
+    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_AMOUNT_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Value"), renderer,
              "text", SPLIT_COL_VALUE, NULL);
-    gtk_tree_view_column_set_sort_column_id(column, SPLIT_COL_VALUE);
+    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_VALUE_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Gain/Loss"), renderer,
              "text", SPLIT_COL_GAIN_LOSS, NULL);
-    gtk_tree_view_column_set_sort_column_id(column, SPLIT_COL_GAIN_LOSS);
+    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_GAIN_LOSS_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     renderer = gtk_cell_renderer_text_new();
     column = gtk_tree_view_column_new_with_attributes(_("Balance"), renderer,
              "text", SPLIT_COL_BALANCE, NULL);
-    gtk_tree_view_column_set_sort_column_id(column, SPLIT_COL_BALANCE);
+    gtk_tree_view_column_set_sort_column_id (column, SPLIT_COL_BALANCE_DOUBLE);
     gtk_tree_view_append_column(view, column);
 
     /* Set up the selection callbacks */



Summary of changes:
 gnucash/gnome/dialog-lot-viewer.c                  | 72 +++++++++++++++++++---
 gnucash/gtkbuilder/dialog-transfer.glade           |  3 +-
 .../register/register-gnome/gnucash-item-edit.c    |  2 +-
 3 files changed, 64 insertions(+), 13 deletions(-)



More information about the gnucash-changes mailing list