gnucash unstable: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Thu Feb 22 18:54:40 EST 2018


Updated	 via  https://github.com/Gnucash/gnucash/commit/bab3bc7e (commit)
	 via  https://github.com/Gnucash/gnucash/commit/955696b0 (commit)
	from  https://github.com/Gnucash/gnucash/commit/61377194 (commit)



commit bab3bc7e93099a1bb1909010fc4c183d5cd0531f
Merge: 6137719 955696b
Author: John Ralls <jralls at ceridwen.us>
Date:   Thu Feb 22 15:53:30 2018 -0800

    Merge Bob Fewell's "Cache a couple of split register preferences...
    
    into unstable


commit 955696b0e77c841a661931b66f31c333456a8c27
Author: Robert Fewell <14uBobIT at gmail.com>
Date:   Wed Feb 21 00:54:49 2018 +0000

    Cache a couple of split register preferences
    
    Two preferences were being used heavily in the drawing of the register
    so it makes sense for them to be saved in the split_register structure
    so they can be easily be referenced.

diff --git a/gnucash/register/ledger-core/split-register-control.c b/gnucash/register/ledger-core/split-register-control.c
index 80873cd..3ab5c3e 100644
--- a/gnucash/register/ledger-core/split-register-control.c
+++ b/gnucash/register/ledger-core/split-register-control.c
@@ -1019,7 +1019,8 @@ gnc_split_register_auto_completion (SplitRegister *reg,
         /* auto-complete the account name */
         cell = gnc_table_layout_get_cell (reg->table->layout, XFRM_CELL);
 
-        account_name = gnc_get_account_name_for_register (xaccSplitGetAccount (auto_split));
+        account_name = gnc_get_account_name_for_split_register (xaccSplitGetAccount (auto_split),
+                           reg->show_leaf_accounts);
         gnc_combo_cell_set_value ((ComboCell *) cell, account_name);
         g_free(account_name);
 
diff --git a/gnucash/register/ledger-core/split-register-model.c b/gnucash/register/ledger-core/split-register-model.c
index 206e3f6..48d7a0b 100644
--- a/gnucash/register/ledger-core/split-register-model.c
+++ b/gnucash/register/ledger-core/split-register-model.c
@@ -573,7 +573,6 @@ gnc_split_register_get_cell_color_internal (VirtualLocation virt_loc,
     const char *cursor_name;
     VirtualCell *vcell;
     gboolean is_current;
-    gboolean double_alternate_virt;
     guint32 colorbase = 0;
 
      /* a bit of enum arithmetic */
@@ -617,11 +616,9 @@ gnc_split_register_get_cell_color_internal (VirtualLocation virt_loc,
             g_strcmp0 (cursor_name, CURSOR_DOUBLE_LEDGER) == 0 ||
             g_strcmp0 (cursor_name, CURSOR_DOUBLE_LEDGER_NUM_ACTN) == 0)
     {
-        double_alternate_virt = gnc_prefs_get_bool (GNC_PREFS_GROUP_GENERAL_REGISTER,
-                                                    GNC_PREF_ALT_COLOR_BY_TRANS);
         if (is_current)
         {
-            if (double_alternate_virt)
+            if (reg->double_alt_color)
                 return vcell->start_primary_color ?
                         (colorbase + COLOR_PRIMARY_ACTIVE) :
                         (colorbase + COLOR_SECONDARY_ACTIVE);
@@ -631,7 +628,7 @@ gnc_split_register_get_cell_color_internal (VirtualLocation virt_loc,
                     (colorbase + COLOR_SECONDARY_ACTIVE);
         }
 
-        if (double_alternate_virt)
+        if (reg->double_alt_color)
             return vcell->start_primary_color ?
                     (colorbase + COLOR_PRIMARY) :
                     (colorbase + COLOR_SECONDARY);
@@ -1383,7 +1380,8 @@ gnc_split_register_get_xfrm_entry (VirtualLocation virt_loc,
 
     g_free (name);
 
-    name = gnc_get_account_name_for_register (xaccSplitGetAccount (split));
+    name = gnc_get_account_name_for_split_register (xaccSplitGetAccount (split),
+               reg->show_leaf_accounts);
 
     return name;
 }
@@ -1424,7 +1422,8 @@ gnc_split_register_get_mxfrm_entry (VirtualLocation virt_loc,
     g_free (name);
 
     if (s)
-        name = gnc_get_account_name_for_register (xaccSplitGetAccount (s));
+        name = gnc_get_account_name_for_split_register (xaccSplitGetAccount (s),
+                   reg->show_leaf_accounts);
     else
     {
         /* For multi-split transactions and stock splits,
@@ -2164,8 +2163,8 @@ gnc_template_register_get_xfrm_entry (VirtualLocation virt_loc,
               "sx-account", &guid,
               NULL);
     account = xaccAccountLookup (guid, gnc_get_current_book ());
-    name = account ? gnc_get_account_name_for_register (account) : NULL;
-
+    name = account ? gnc_get_account_name_for_split_register (account,
+                         reg->show_leaf_accounts) : NULL;
     return name;
 }
 
diff --git a/gnucash/register/ledger-core/split-register.c b/gnucash/register/ledger-core/split-register.c
index 9b31668..69c1793 100644
--- a/gnucash/register/ledger-core/split-register.c
+++ b/gnucash/register/ledger-core/split-register.c
@@ -1876,7 +1876,7 @@ gnc_split_register_get_account_by_name (SplitRegister *reg, BasicCell * bcell,
     }
 
     /* Now have the account. */
-    account_name = gnc_get_account_name_for_register (account);
+    account_name = gnc_get_account_name_for_split_register (account, reg->show_leaf_accounts);
     if (g_strcmp0(account_name, gnc_basic_cell_get_value(bcell)))
     {
         /* The name has changed. Update the cell. */
@@ -2691,6 +2691,14 @@ split_register_pref_changed (gpointer prefs, gchar *pref, gpointer user_data)
     {
         info->separator_changed = TRUE;
     }
+    else if (g_str_has_suffix(pref, GNC_PREF_SHOW_LEAF_ACCT_NAMES))
+    {
+        reg->show_leaf_accounts = !reg->show_leaf_accounts;
+    }
+    else if (g_str_has_suffix(pref, GNC_PREF_ALT_COLOR_BY_TRANS))
+    {
+        reg->double_alt_color = !reg->double_alt_color;
+    }
     else
     {
         g_warning("split_register_pref_changed: Unknown preference %s", pref);
@@ -2730,6 +2738,14 @@ gnc_split_register_init (SplitRegister *reg,
                            GNC_PREF_ACCOUNT_SEPARATOR,
                            split_register_pref_changed,
                            reg);
+    gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL_REGISTER,
+                           GNC_PREF_SHOW_LEAF_ACCT_NAMES,
+                           split_register_pref_changed,
+                           reg);
+    gnc_prefs_register_cb (GNC_PREFS_GROUP_GENERAL_REGISTER,
+                           GNC_PREF_ALT_COLOR_BY_TRANS,
+                           split_register_pref_changed,
+                           reg);
     gnc_book_option_register_cb(OPTION_NAME_NUM_FIELD_SOURCE,
                                 split_register_book_option_changed,
                                 reg);
@@ -2738,6 +2754,11 @@ gnc_split_register_init (SplitRegister *reg,
 
     reg->unrecn_splits = NULL;
 
+    reg->show_leaf_accounts = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL_REGISTER,
+                                            GNC_PREF_SHOW_LEAF_ACCT_NAMES);
+    reg->double_alt_color = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL_REGISTER,
+                                            GNC_PREF_ALT_COLOR_BY_TRANS);
+
     reg->type = type;
     reg->style = style;
     reg->use_double_line = use_double_line;
@@ -3001,9 +3022,18 @@ gnc_split_register_destroy (SplitRegister *reg)
                                  GNC_PREF_ACCOUNT_SEPARATOR,
                                  split_register_pref_changed,
                                  reg);
-    gnc_book_option_remove_cb(OPTION_NAME_NUM_FIELD_SOURCE,
-                                split_register_book_option_changed,
-                                reg);
+    gnc_prefs_remove_cb_by_func (GNC_PREFS_GROUP_GENERAL_REGISTER,
+                                 GNC_PREF_SHOW_LEAF_ACCT_NAMES,
+                                 split_register_pref_changed,
+                                 reg);
+    gnc_prefs_remove_cb_by_func (GNC_PREFS_GROUP_GENERAL_REGISTER,
+                                 GNC_PREF_ALT_COLOR_BY_TRANS,
+                                 split_register_pref_changed,
+                                 reg);
+    gnc_book_option_remove_cb (OPTION_NAME_NUM_FIELD_SOURCE,
+                                 split_register_book_option_changed,
+                                 reg);
+
     gnc_split_register_cleanup (reg);
 
     gnc_table_destroy (reg->table);
diff --git a/gnucash/register/ledger-core/split-register.h b/gnucash/register/ledger-core/split-register.h
index f5cd7d6..5aa3a37 100644
--- a/gnucash/register/ledger-core/split-register.h
+++ b/gnucash/register/ledger-core/split-register.h
@@ -249,6 +249,9 @@ struct split_register
     gboolean use_tran_num_for_num_field;  /**< whether to use transaction number
                                                 or split action for number
                                                 field in register */
+    gboolean show_leaf_accounts; /**< whether to show full account names */
+    gboolean double_alt_color;   /**< whether transaction use alternate colors */
+
     gboolean is_template;
     gboolean do_auto_complete; /**< whether to use auto-completion */
 
diff --git a/libgnucash/app-utils/gnc-ui-util.c b/libgnucash/app-utils/gnc-ui-util.c
index 6e037e1..c4e3a86 100644
--- a/libgnucash/app-utils/gnc-ui-util.c
+++ b/libgnucash/app-utils/gnc-ui-util.c
@@ -412,16 +412,22 @@ gnc_get_current_commodities (void)
 }
 
 gchar *
+gnc_get_account_name_for_split_register(const Account *account, gboolean show_leaf_accounts)
+{
+    if (show_leaf_accounts)
+        return g_strdup (xaccAccountGetName (account));
+    else
+        return gnc_account_get_full_name (account);
+}
+
+gchar *
 gnc_get_account_name_for_register(const Account *account)
 {
     gboolean show_leaf_accounts;
     show_leaf_accounts = gnc_prefs_get_bool(GNC_PREFS_GROUP_GENERAL_REGISTER,
                                             GNC_PREF_SHOW_LEAF_ACCT_NAMES);
 
-    if (show_leaf_accounts)
-        return g_strdup (xaccAccountGetName (account));
-    else
-        return gnc_account_get_full_name (account);
+    return gnc_get_account_name_for_split_register(account, show_leaf_accounts);
 }
 
 Account *
diff --git a/libgnucash/app-utils/gnc-ui-util.h b/libgnucash/app-utils/gnc-ui-util.h
index a598641..7161bca 100644
--- a/libgnucash/app-utils/gnc-ui-util.h
+++ b/libgnucash/app-utils/gnc-ui-util.h
@@ -140,6 +140,17 @@ gchar *gnc_get_account_name_for_register(const Account *account);
 Account *gnc_account_lookup_for_register(const Account *base_account, const
         gchar *name);
 
+/**
+ * Get either the full name of the account or the simple name, depending on the
+ * show_leaf_accounts.
+ *
+ * @param account The account to retrieve the name for.
+ * @param show_leaf_accounts Whether the full name will be returned.
+ * @return A newly allocated string.
+*/
+gchar *gnc_get_account_name_for_split_register(const Account *account,
+        gboolean show_leaf_accounts);
+
 /*
  * This is a wrapper routine around an xaccGetBalanceInCurrency
  * function that handles additional needs of the gui.



Summary of changes:
 .../register/ledger-core/split-register-control.c  |  3 +-
 .../register/ledger-core/split-register-model.c    | 17 +++++-----
 gnucash/register/ledger-core/split-register.c      | 38 +++++++++++++++++++---
 gnucash/register/ledger-core/split-register.h      |  3 ++
 libgnucash/app-utils/gnc-ui-util.c                 | 14 +++++---
 libgnucash/app-utils/gnc-ui-util.h                 | 11 +++++++
 6 files changed, 68 insertions(+), 18 deletions(-)



More information about the gnucash-changes mailing list