diff --git a/gnucash/register/ledger-core/split-register-model.c b/gnucash/register/ledger-core/split-register-model.c index 8782d3c774..b579548ce5 100644 --- a/gnucash/register/ledger-core/split-register-model.c +++ b/gnucash/register/ledger-core/split-register-model.c @@ -508,6 +508,72 @@ gnc_split_register_get_default_tooltip (VirtualLocation virt_loc, return g_strdup (tooltip); } +static char * +gnc_split_register_get_recn_tooltip (VirtualLocation virt_loc, + gpointer user_data) +{ + SplitRegister *reg = user_data; + Split *split; + + split = gnc_split_register_get_split (reg, virt_loc.vcell_loc); + if (!split) + return NULL; + + if (xaccSplitGetReconcile (split) == YREC) + { + Timespec ts = {0,0}; + const char *str_rec_date; + xaccSplitGetDateReconciledTS (split, &ts); + str_rec_date = gnc_print_date (ts); + return g_strdup_printf (_("Reconciled on %s"), str_rec_date); + } + else if (xaccSplitGetReconcile (split) == VREC) + { + Transaction *trans = xaccSplitGetParent (split); + return g_strdup (xaccTransGetVoidReason (trans)); + } + else + return NULL; +} + +static char * +gnc_split_register_get_associate_tooltip (VirtualLocation virt_loc, + gpointer user_data) +{ + SplitRegister *reg = user_data; + Transaction *trans; + const char *uri; + + trans = gnc_split_register_get_trans (reg, virt_loc.vcell_loc); + if (!trans) + return NULL; + + // get the existing uri + uri = xaccTransGetAssociation (trans); + + // Check for uri is empty or NULL + if (g_strcmp0 (uri, "") != 0 && g_strcmp0 (uri, NULL) != 0) + { + gboolean valid_path_head = FALSE; + gchar *path_head = gnc_prefs_get_string (GNC_PREFS_GROUP_GENERAL, "assoc-head"); + + if ((path_head != NULL) && (g_strcmp0 (path_head, "") != 0)) // not default entry + valid_path_head = TRUE; + + if (valid_path_head && g_str_has_prefix (uri,"file:/") && !g_str_has_prefix (uri,"file://")) + { + const gchar *part = uri + strlen ("file:"); + gchar *new_uri = g_strconcat (path_head, part, NULL); + g_free (path_head); + return g_strdup (new_uri); + } + else + return g_strdup (uri); + } + else + return NULL; +} + static gnc_numeric get_trans_total_amount (SplitRegister *reg, Transaction *trans) { @@ -2564,6 +2630,13 @@ gnc_split_register_model_new (void) // gnc_table_model_set_default_tooltip_handler( // model, gnc_split_register_get_default_tooltip); + gnc_table_model_set_tooltip_handler (model, + gnc_split_register_get_recn_tooltip, + RECN_CELL); + + gnc_table_model_set_tooltip_handler (model, + gnc_split_register_get_associate_tooltip, + ASSOC_CELL); // help handlers