diff options
-rw-r--r-- | e-util/e-util.c | 1 | ||||
-rw-r--r-- | e-util/e-xml-utils.c | 68 | ||||
-rw-r--r-- | e-util/e-xml-utils.h | 37 |
3 files changed, 84 insertions, 22 deletions
diff --git a/e-util/e-util.c b/e-util/e-util.c index 0363f3e201..83fe45881d 100644 --- a/e-util/e-util.c +++ b/e-util/e-util.c @@ -26,6 +26,7 @@ #include <fcntl.h> #include <unistd.h> #include <ctype.h> +#include <sys/stat.h> #include <string.h> #include "e-util.h" diff --git a/e-util/e-xml-utils.c b/e-util/e-xml-utils.c index 88ce82310e..7802d5daf8 100644 --- a/e-util/e-xml-utils.c +++ b/e-util/e-xml-utils.c @@ -26,7 +26,7 @@ #include <gnome-xml/xmlmemory.h> #include "e-xml-utils.h" -xmlNode *e_xml_get_child_by_name(xmlNode *parent, const xmlChar *child_name) +xmlNode *e_xml_get_child_by_name(const xmlNode *parent, const xmlChar *child_name) { xmlNode *child; @@ -46,7 +46,7 @@ xmlNode *e_xml_get_child_by_name(xmlNode *parent, const xmlChar *child_name) * child with the name child_name and no "lang" attribute. */ xmlNode * -e_xml_get_child_by_name_by_lang(xmlNode *parent, const xmlChar *child_name, const char *lang) +e_xml_get_child_by_name_by_lang(const xmlNode *parent, const xmlChar *child_name, const char *lang) { xmlNode *child; /* This is the default version of the string. */ @@ -72,7 +72,7 @@ e_xml_get_child_by_name_by_lang(xmlNode *parent, const xmlChar *child_name, cons } int -e_xml_get_integer_prop_by_name(xmlNode *parent, const xmlChar *prop_name) +e_xml_get_integer_prop_by_name(const xmlNode *parent, const xmlChar *prop_name) { xmlChar *prop; int ret_val = 0; @@ -80,7 +80,7 @@ e_xml_get_integer_prop_by_name(xmlNode *parent, const xmlChar *prop_name) g_return_val_if_fail (parent != NULL, 0); g_return_val_if_fail (prop_name != NULL, 0); - prop = xmlGetProp (parent, prop_name); + prop = xmlGetProp ((xmlNode *)parent, prop_name); if (prop) { ret_val = atoi (prop); xmlFree (prop); @@ -101,8 +101,38 @@ e_xml_set_integer_prop_by_name(xmlNode *parent, const xmlChar *prop_name, int va g_free (valuestr); } +gboolean +e_xml_get_bool_prop_by_name(const xmlNode *parent, const xmlChar *prop_name) +{ + xmlChar *prop; + gboolean ret_val = FALSE; + + g_return_val_if_fail (parent != NULL, 0); + g_return_val_if_fail (prop_name != NULL, 0); + + prop = xmlGetProp ((xmlNode *)parent, prop_name); + if (prop) { + if(!strcasecmp(prop, "true")) + ret_val = TRUE; + xmlFree(prop); + } + return ret_val; +} + +void +e_xml_set_bool_prop_by_name(xmlNode *parent, const xmlChar *prop_name, gboolean value) +{ + g_return_if_fail (parent != NULL); + g_return_if_fail (prop_name != NULL); + + if (value) + xmlSetProp (parent, prop_name, "true"); + else + xmlSetProp (parent, prop_name, "false"); +} + double -e_xml_get_double_prop_by_name(xmlNode *parent, const xmlChar *prop_name) +e_xml_get_double_prop_by_name(const xmlNode *parent, const xmlChar *prop_name) { xmlChar *prop; double ret_val = 0; @@ -110,7 +140,7 @@ e_xml_get_double_prop_by_name(xmlNode *parent, const xmlChar *prop_name) g_return_val_if_fail (parent != NULL, 0); g_return_val_if_fail (prop_name != NULL, 0); - prop = xmlGetProp (parent, prop_name); + prop = xmlGetProp ((xmlNode *)parent, prop_name); if (prop) { sscanf (prop, "%lf", &ret_val); xmlFree (prop); @@ -135,7 +165,7 @@ e_xml_set_double_prop_by_name(xmlNode *parent, const xmlChar *prop_name, double } char * -e_xml_get_string_prop_by_name(xmlNode *parent, const xmlChar *prop_name) +e_xml_get_string_prop_by_name(const xmlNode *parent, const xmlChar *prop_name) { xmlChar *prop; char *ret_val = NULL; @@ -143,7 +173,7 @@ e_xml_get_string_prop_by_name(xmlNode *parent, const xmlChar *prop_name) g_return_val_if_fail (parent != NULL, 0); g_return_val_if_fail (prop_name != NULL, 0); - prop = xmlGetProp (parent, prop_name); + prop = xmlGetProp ((xmlNode *)parent, prop_name); if (prop) { ret_val = g_strdup (prop); xmlFree (prop); @@ -154,17 +184,27 @@ e_xml_get_string_prop_by_name(xmlNode *parent, const xmlChar *prop_name) void e_xml_set_string_prop_by_name(xmlNode *parent, const xmlChar *prop_name, char *value) { - xmlChar *valuestr; - g_return_if_fail (parent != NULL); g_return_if_fail (prop_name != NULL); - valuestr = g_strdup (value); - xmlSetProp (parent, prop_name, valuestr); - g_free (valuestr); + if (value) + xmlSetProp (parent, prop_name, value); } +char * +e_xml_get_translated_string_prop_by_name(const xmlNode *parent, const xmlChar *prop_name) +{ + xmlChar *prop; + char *ret_val = NULL; + g_return_val_if_fail (parent != NULL, 0); + g_return_val_if_fail (prop_name != NULL, 0); - + prop = xmlGetProp ((xmlNode *)parent, prop_name); + if (prop) { + ret_val = g_strdup (_(prop)); + xmlFree (prop); + } + return ret_val; +} diff --git a/e-util/e-xml-utils.h b/e-util/e-xml-utils.h index a574cec3f1..6d857e4e1d 100644 --- a/e-util/e-xml-utils.h +++ b/e-util/e-xml-utils.h @@ -26,17 +26,38 @@ #include <gnome.h> #include <gnome-xml/tree.h> -xmlNode *e_xml_get_child_by_name(xmlNode *parent, const xmlChar *child_name); +xmlNode *e_xml_get_child_by_name (const xmlNode *parent, + const xmlChar *child_name); /* lang set to NULL means use the current locale. */ -xmlNode *e_xml_get_child_by_name_by_lang(xmlNode *parent, const xmlChar *child_name, const char *lang); +xmlNode *e_xml_get_child_by_name_by_lang (const xmlNode *parent, + const xmlChar *child_name, + const char *lang); -int e_xml_get_integer_prop_by_name(xmlNode *parent, const xmlChar *prop_name); -void e_xml_set_integer_prop_by_name(xmlNode *parent, const xmlChar *prop_name, int value); +int e_xml_get_integer_prop_by_name (const xmlNode *parent, + const xmlChar *prop_name); +void e_xml_set_integer_prop_by_name (xmlNode *parent, + const xmlChar *prop_name, + int value); -double e_xml_get_double_prop_by_name(xmlNode *parent, const xmlChar *prop_name); -void e_xml_set_double_prop_by_name(xmlNode *parent, const xmlChar *prop_name, double value); +gboolean e_xml_get_bool_prop_by_name (const xmlNode *parent, + const xmlChar *prop_name); +void e_xml_set_bool_prop_by_name (xmlNode *parent, + const xmlChar *prop_name, + gboolean value); -char *e_xml_get_string_prop_by_name(xmlNode *parent, const xmlChar *prop_name); -void e_xml_set_string_prop_by_name(xmlNode *parent, const xmlChar *prop_name, char *value); +double e_xml_get_double_prop_by_name (const xmlNode *parent, + const xmlChar *prop_name); +void e_xml_set_double_prop_by_name (xmlNode *parent, + const xmlChar *prop_name, + double value); + +char *e_xml_get_string_prop_by_name (const xmlNode *parent, + const xmlChar *prop_name); +void e_xml_set_string_prop_by_name (xmlNode *parent, + const xmlChar *prop_name, + char *value); + +char *e_xml_get_translated_string_prop_by_name (const xmlNode *parent, + const xmlChar *prop_name); #endif /* __E_XML_UTILS__ */ |