mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Store account "hidden" and "placeholder" flags as booleans in the account record and with new
<hidden> and <placeholder> tags in the XML file. The values are still stored in the slots as well for backward compatibility. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@18246 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
7998d0571d
commit
e1318e0c1e
@ -73,6 +73,8 @@ static const GncSqlColumnTableEntry col_table[] =
|
|||||||
(QofAccessFunc)get_parent, set_parent },
|
(QofAccessFunc)get_parent, set_parent },
|
||||||
{ "code", CT_STRING, ACCOUNT_MAX_CODE_LEN, 0, "code" },
|
{ "code", CT_STRING, ACCOUNT_MAX_CODE_LEN, 0, "code" },
|
||||||
{ "description", CT_STRING, ACCOUNT_MAX_DESCRIPTION_LEN, 0, "description" },
|
{ "description", CT_STRING, ACCOUNT_MAX_DESCRIPTION_LEN, 0, "description" },
|
||||||
|
{ "hidden", CT_BOOLEAN, 0, 0, "hidden" },
|
||||||
|
{ "placeholder", CT_BOOLEAN, 0, 0, "placeholder" },
|
||||||
{ NULL }
|
{ NULL }
|
||||||
/*@ +full_init_block @*/
|
/*@ +full_init_block @*/
|
||||||
};
|
};
|
||||||
|
@ -68,6 +68,8 @@ const gchar *account_version_string = "2.0.0";
|
|||||||
#define act_currency_scu_string "act:currency-scu"
|
#define act_currency_scu_string "act:currency-scu"
|
||||||
#define act_security_string "act:security"
|
#define act_security_string "act:security"
|
||||||
#define act_security_scu_string "act:security-scu"
|
#define act_security_scu_string "act:security-scu"
|
||||||
|
#define act_hidden_string "act:hidden"
|
||||||
|
#define act_placeholder_string "act:placeholder"
|
||||||
|
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
gnc_account_dom_tree_create(Account *act,
|
gnc_account_dom_tree_create(Account *act,
|
||||||
@ -95,6 +97,13 @@ gnc_account_dom_tree_create(Account *act,
|
|||||||
act_type_string,
|
act_type_string,
|
||||||
xaccAccountTypeEnumAsString(xaccAccountGetType(act))));
|
xaccAccountTypeEnumAsString(xaccAccountGetType(act))));
|
||||||
|
|
||||||
|
xmlAddChild(ret, boolean_to_dom_tree(
|
||||||
|
act_hidden_string,
|
||||||
|
xaccAccountGetHidden(act)));
|
||||||
|
xmlAddChild(ret, boolean_to_dom_tree(
|
||||||
|
act_placeholder_string,
|
||||||
|
xaccAccountGetPlaceholder(act)));
|
||||||
|
|
||||||
acct_commodity = xaccAccountGetCommodity(act);
|
acct_commodity = xaccAccountGetCommodity(act);
|
||||||
if (acct_commodity != NULL)
|
if (acct_commodity != NULL)
|
||||||
{
|
{
|
||||||
@ -243,6 +252,30 @@ account_commodity_scu_handler (xmlNodePtr node, gpointer act_pdata)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
account_hidden_handler (xmlNodePtr node, gpointer act_pdata)
|
||||||
|
{
|
||||||
|
struct account_pdata *pdata = act_pdata;
|
||||||
|
gboolean val;
|
||||||
|
|
||||||
|
dom_tree_to_boolean(node, &val);
|
||||||
|
xaccAccountSetHidden(pdata->account, val);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
account_placeholder_handler (xmlNodePtr node, gpointer act_pdata)
|
||||||
|
{
|
||||||
|
struct account_pdata *pdata = act_pdata;
|
||||||
|
gboolean val;
|
||||||
|
|
||||||
|
dom_tree_to_boolean(node, &val);
|
||||||
|
xaccAccountSetPlaceholder(pdata->account, val);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
account_non_standard_scu_handler (xmlNodePtr node, gpointer act_pdata)
|
account_non_standard_scu_handler (xmlNodePtr node, gpointer act_pdata)
|
||||||
{
|
{
|
||||||
@ -400,6 +433,8 @@ static struct dom_tree_handler account_handlers_v2[] = {
|
|||||||
{ act_slots_string, account_slots_handler, 0, 0 },
|
{ act_slots_string, account_slots_handler, 0, 0 },
|
||||||
{ act_parent_string, account_parent_handler, 0, 0 },
|
{ act_parent_string, account_parent_handler, 0, 0 },
|
||||||
{ act_lots_string, account_lots_handler, 0, 0 },
|
{ act_lots_string, account_lots_handler, 0, 0 },
|
||||||
|
{ act_hidden_string, account_hidden_handler, 0, 0 },
|
||||||
|
{ act_placeholder_string, account_placeholder_handler, 0, 0 },
|
||||||
|
|
||||||
/* These should not appear in newer xml files; only in old
|
/* These should not appear in newer xml files; only in old
|
||||||
* (circa gnucash-1.6) xml files. We maintain them for backward
|
* (circa gnucash-1.6) xml files. We maintain them for backward
|
||||||
|
@ -33,6 +33,12 @@
|
|||||||
|
|
||||||
static QofLogModule log_module = GNC_MOD_IO;
|
static QofLogModule log_module = GNC_MOD_IO;
|
||||||
|
|
||||||
|
xmlNodePtr
|
||||||
|
boolean_to_dom_tree(const char* tag, gboolean val)
|
||||||
|
{
|
||||||
|
return text_to_dom_tree(tag, val ? "TRUE" : "FALSE");
|
||||||
|
}
|
||||||
|
|
||||||
xmlNodePtr
|
xmlNodePtr
|
||||||
text_to_dom_tree(const char *tag, const char *str)
|
text_to_dom_tree(const char *tag, const char *str)
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
|
|
||||||
xmlNodePtr text_to_dom_tree(const char *tag, const char *str);
|
xmlNodePtr text_to_dom_tree(const char *tag, const char *str);
|
||||||
xmlNodePtr int_to_dom_tree(const char *tag, gint64 val);
|
xmlNodePtr int_to_dom_tree(const char *tag, gint64 val);
|
||||||
|
xmlNodePtr boolean_to_dom_tree(const char* tag, gboolean val);
|
||||||
xmlNodePtr guid_to_dom_tree(const char *tag, const GUID* gid);
|
xmlNodePtr guid_to_dom_tree(const char *tag, const GUID* gid);
|
||||||
xmlNodePtr commodity_ref_to_dom_tree(const char *tag, const gnc_commodity *c);
|
xmlNodePtr commodity_ref_to_dom_tree(const char *tag, const gnc_commodity *c);
|
||||||
xmlNodePtr timespec_to_dom_tree(const char *tag, const Timespec *spec);
|
xmlNodePtr timespec_to_dom_tree(const char *tag, const Timespec *spec);
|
||||||
|
@ -138,6 +138,24 @@ dom_tree_to_guint(xmlNodePtr node, guint *i)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
dom_tree_to_boolean(xmlNodePtr node, gboolean* b)
|
||||||
|
{
|
||||||
|
gchar* text;
|
||||||
|
|
||||||
|
text = dom_tree_to_text(node);
|
||||||
|
if (strcasecmp(text, "true") == 0) {
|
||||||
|
*b = TRUE;
|
||||||
|
return TRUE;
|
||||||
|
} else if(strcasecmp(text, "false") == 0) {
|
||||||
|
*b = FALSE;
|
||||||
|
return TRUE;
|
||||||
|
} else {
|
||||||
|
*b = FALSE;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
kvp_value*
|
kvp_value*
|
||||||
dom_tree_to_double_kvp_value(xmlNodePtr node)
|
dom_tree_to_double_kvp_value(xmlNodePtr node)
|
||||||
{
|
{
|
||||||
|
@ -64,6 +64,7 @@ kvp_value* dom_tree_to_frame_kvp_value(xmlNodePtr node);
|
|||||||
gboolean dom_tree_to_integer(xmlNodePtr node, gint64 *daint);
|
gboolean dom_tree_to_integer(xmlNodePtr node, gint64 *daint);
|
||||||
gboolean dom_tree_to_guint16(xmlNodePtr node, guint16 *i);
|
gboolean dom_tree_to_guint16(xmlNodePtr node, guint16 *i);
|
||||||
gboolean dom_tree_to_guint(xmlNodePtr node, guint *i);
|
gboolean dom_tree_to_guint(xmlNodePtr node, guint *i);
|
||||||
|
gboolean dom_tree_to_boolean(xmlNodePtr node, gboolean* b);
|
||||||
|
|
||||||
/* higher level structures */
|
/* higher level structures */
|
||||||
Account* dom_tree_to_account(xmlNodePtr node, QofBook *book);
|
Account* dom_tree_to_account(xmlNodePtr node, QofBook *book);
|
||||||
|
Loading…
Reference in New Issue
Block a user