r18246 - gnucash/trunk/src/backend - Store account "hidden" and "placeholder" flags as booleans in the account record and with new
Phil Longstaff
plongstaff at code.gnucash.org
Wed Aug 12 20:05:37 EDT 2009
Author: plongstaff
Date: 2009-08-12 20:05:37 -0400 (Wed, 12 Aug 2009)
New Revision: 18246
Trac: http://svn.gnucash.org/trac/changeset/18246
Modified:
gnucash/trunk/src/backend/sql/gnc-account-sql.c
gnucash/trunk/src/backend/xml/gnc-account-xml-v2.c
gnucash/trunk/src/backend/xml/sixtp-dom-generators.c
gnucash/trunk/src/backend/xml/sixtp-dom-generators.h
gnucash/trunk/src/backend/xml/sixtp-dom-parsers.c
gnucash/trunk/src/backend/xml/sixtp-dom-parsers.h
Log:
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.
Modified: gnucash/trunk/src/backend/sql/gnc-account-sql.c
===================================================================
--- gnucash/trunk/src/backend/sql/gnc-account-sql.c 2009-08-12 00:06:27 UTC (rev 18245)
+++ gnucash/trunk/src/backend/sql/gnc-account-sql.c 2009-08-13 00:05:37 UTC (rev 18246)
@@ -73,6 +73,8 @@
(QofAccessFunc)get_parent, set_parent },
{ "code", CT_STRING, ACCOUNT_MAX_CODE_LEN, 0, "code" },
{ "description", CT_STRING, ACCOUNT_MAX_DESCRIPTION_LEN, 0, "description" },
+ { "hidden", CT_BOOLEAN, 0, 0, "hidden" },
+ { "placeholder", CT_BOOLEAN, 0, 0, "placeholder" },
{ NULL }
/*@ +full_init_block @*/
};
Modified: gnucash/trunk/src/backend/xml/gnc-account-xml-v2.c
===================================================================
--- gnucash/trunk/src/backend/xml/gnc-account-xml-v2.c 2009-08-12 00:06:27 UTC (rev 18245)
+++ gnucash/trunk/src/backend/xml/gnc-account-xml-v2.c 2009-08-13 00:05:37 UTC (rev 18246)
@@ -68,6 +68,8 @@
#define act_currency_scu_string "act:currency-scu"
#define act_security_string "act:security"
#define act_security_scu_string "act:security-scu"
+#define act_hidden_string "act:hidden"
+#define act_placeholder_string "act:placeholder"
xmlNodePtr
gnc_account_dom_tree_create(Account *act,
@@ -95,6 +97,13 @@
act_type_string,
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);
if (acct_commodity != NULL)
{
@@ -244,6 +253,30 @@
}
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
account_non_standard_scu_handler (xmlNodePtr node, gpointer act_pdata)
{
struct account_pdata *pdata = act_pdata;
@@ -400,6 +433,8 @@
{ act_slots_string, account_slots_handler, 0, 0 },
{ act_parent_string, account_parent_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
* (circa gnucash-1.6) xml files. We maintain them for backward
Modified: gnucash/trunk/src/backend/xml/sixtp-dom-generators.c
===================================================================
--- gnucash/trunk/src/backend/xml/sixtp-dom-generators.c 2009-08-12 00:06:27 UTC (rev 18245)
+++ gnucash/trunk/src/backend/xml/sixtp-dom-generators.c 2009-08-13 00:05:37 UTC (rev 18246)
@@ -34,6 +34,12 @@
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
text_to_dom_tree(const char *tag, const char *str)
{
xmlNodePtr result;
Modified: gnucash/trunk/src/backend/xml/sixtp-dom-generators.h
===================================================================
--- gnucash/trunk/src/backend/xml/sixtp-dom-generators.h 2009-08-12 00:06:27 UTC (rev 18245)
+++ gnucash/trunk/src/backend/xml/sixtp-dom-generators.h 2009-08-13 00:05:37 UTC (rev 18246)
@@ -35,6 +35,7 @@
xmlNodePtr text_to_dom_tree(const char *tag, const char *str);
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 commodity_ref_to_dom_tree(const char *tag, const gnc_commodity *c);
xmlNodePtr timespec_to_dom_tree(const char *tag, const Timespec *spec);
Modified: gnucash/trunk/src/backend/xml/sixtp-dom-parsers.c
===================================================================
--- gnucash/trunk/src/backend/xml/sixtp-dom-parsers.c 2009-08-12 00:06:27 UTC (rev 18245)
+++ gnucash/trunk/src/backend/xml/sixtp-dom-parsers.c 2009-08-13 00:05:37 UTC (rev 18246)
@@ -138,6 +138,24 @@
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*
dom_tree_to_double_kvp_value(xmlNodePtr node)
{
Modified: gnucash/trunk/src/backend/xml/sixtp-dom-parsers.h
===================================================================
--- gnucash/trunk/src/backend/xml/sixtp-dom-parsers.h 2009-08-12 00:06:27 UTC (rev 18245)
+++ gnucash/trunk/src/backend/xml/sixtp-dom-parsers.h 2009-08-13 00:05:37 UTC (rev 18246)
@@ -64,6 +64,7 @@
gboolean dom_tree_to_integer(xmlNodePtr node, gint64 *daint);
gboolean dom_tree_to_guint16(xmlNodePtr node, guint16 *i);
gboolean dom_tree_to_guint(xmlNodePtr node, guint *i);
+gboolean dom_tree_to_boolean(xmlNodePtr node, gboolean* b);
/* higher level structures */
Account* dom_tree_to_account(xmlNodePtr node, QofBook *book);
More information about the gnucash-changes
mailing list