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