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