aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--e-util/e-xml-utils.c62
-rw-r--r--e-util/e-xml-utils.h4
-rw-r--r--widgets/misc/e-unicode.c34
-rw-r--r--widgets/misc/e-unicode.h4
4 files changed, 90 insertions, 14 deletions
diff --git a/e-util/e-xml-utils.c b/e-util/e-xml-utils.c
index e25f159f4b..3754d42ba2 100644
--- a/e-util/e-xml-utils.c
+++ b/e-util/e-xml-utils.c
@@ -52,7 +52,9 @@ e_xml_get_child_by_name (const 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 (const xmlNode *parent, const xmlChar *child_name, const gchar *lang)
+e_xml_get_child_by_name_by_lang (const xmlNode *parent,
+ const xmlChar *child_name,
+ const gchar *lang)
{
xmlNode *child;
/* This is the default version of the string. */
@@ -82,7 +84,10 @@ e_xml_get_child_by_name_by_lang (const xmlNode *parent, const xmlChar *child_nam
}
static xmlNode *
-e_xml_get_child_by_name_by_lang_list_with_score (const xmlNode *parent, const gchar *name, GList *lang_list, gint *best_lang_score)
+e_xml_get_child_by_name_by_lang_list_with_score (const xmlNode *parent,
+ const gchar *name,
+ GList *lang_list,
+ gint *best_lang_score)
{
xmlNodePtr best_node = NULL, node;
@@ -97,7 +102,9 @@ e_xml_get_child_by_name_by_lang_list_with_score (const xmlNode *parent, const gc
GList *l;
gint i;
- for (l = lang_list, i = 0; l != NULL && i < *best_lang_score; l = l->next, i++) {
+ for (l = lang_list, i = 0;
+ l != NULL && i < *best_lang_score;
+ l = l->next, i++) {
if (strcmp ((gchar *) l->data, lang) == 0) {
best_node = node;
*best_lang_score = i;
@@ -122,7 +129,9 @@ e_xml_get_child_by_name_by_lang_list_with_score (const xmlNode *parent, const gc
*
*/
xmlNode *
-e_xml_get_child_by_name_by_lang_list (const xmlNode *parent, const gchar *name, GList *lang_list)
+e_xml_get_child_by_name_by_lang_list (const xmlNode *parent,
+ const gchar *name,
+ GList *lang_list)
{
gint best_lang_score = INT_MAX;
@@ -132,7 +141,10 @@ e_xml_get_child_by_name_by_lang_list (const xmlNode *parent, const gchar *name,
if (lang_list == NULL) {
lang_list = gnome_i18n_get_language_list ("LC_MESSAGES");
}
- return e_xml_get_child_by_name_by_lang_list_with_score (parent, name, lang_list, &best_lang_score);
+ return e_xml_get_child_by_name_by_lang_list_with_score
+ (parent,name,
+ lang_list,
+ &best_lang_score);
}
/*
@@ -173,7 +185,9 @@ e_xml_get_integer_prop_by_name (const xmlNode *parent, const xmlChar *prop_name)
}
gint
-e_xml_get_integer_prop_by_name_with_default (const xmlNode *parent, const xmlChar *prop_name, gint def)
+e_xml_get_integer_prop_by_name_with_default (const xmlNode *parent,
+ const xmlChar *prop_name,
+ gint def)
{
xmlChar *prop;
gint ret_val = def;
@@ -190,7 +204,9 @@ e_xml_get_integer_prop_by_name_with_default (const xmlNode *parent, const xmlCha
}
void
-e_xml_set_integer_prop_by_name (xmlNode *parent, const xmlChar *prop_name, gint value)
+e_xml_set_integer_prop_by_name (xmlNode *parent,
+ const xmlChar *prop_name,
+ gint value)
{
gchar *valuestr;
@@ -212,7 +228,9 @@ e_xml_get_uint_prop_by_name (const xmlNode *parent, const xmlChar *prop_name)
}
guint
-e_xml_get_uint_prop_by_name_with_default (const xmlNode *parent, const xmlChar *prop_name, guint def)
+e_xml_get_uint_prop_by_name_with_default (const xmlNode *parent,
+ const xmlChar *prop_name,
+ guint def)
{
xmlChar *prop;
guint ret_val = def;
@@ -229,7 +247,9 @@ e_xml_get_uint_prop_by_name_with_default (const xmlNode *parent, const xmlChar *
}
void
-e_xml_set_uint_prop_by_name (xmlNode *parent, const xmlChar *prop_name, guint value)
+e_xml_set_uint_prop_by_name (xmlNode *parent,
+ const xmlChar *prop_name,
+ guint value)
{
gchar *valuestr;
@@ -242,16 +262,21 @@ e_xml_set_uint_prop_by_name (xmlNode *parent, const xmlChar *prop_name, guint va
}
gboolean
-e_xml_get_bool_prop_by_name (const xmlNode *parent, const xmlChar *prop_name)
+e_xml_get_bool_prop_by_name (const xmlNode *parent,
+ const xmlChar *prop_name)
{
g_return_val_if_fail (parent != NULL, 0);
g_return_val_if_fail (prop_name != NULL, 0);
- return e_xml_get_bool_prop_by_name_with_default (parent, prop_name, FALSE);
+ return e_xml_get_bool_prop_by_name_with_default (parent,
+ prop_name,
+ FALSE);
}
gboolean
-e_xml_get_bool_prop_by_name_with_default(const xmlNode *parent, const xmlChar *prop_name, gboolean def)
+e_xml_get_bool_prop_by_name_with_default(const xmlNode *parent,
+ const xmlChar *prop_name,
+ gboolean def)
{
xmlChar *prop;
gboolean ret_val = def;
@@ -371,14 +396,25 @@ e_xml_get_translated_string_prop_by_name (const xmlNode *parent, const xmlChar *
{
xmlChar *prop;
gchar *ret_val = NULL;
+ gchar *combined_name;
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 != NULL) {
- ret_val = g_strdup (_(prop));
+ ret_val = g_strdup (prop);
+ xmlFree (prop);
+ return ret_val;
+ }
+
+ combined_name = g_strdup_printf("_%s", prop_name);
+ prop = xmlGetProp ((xmlNode *) parent, combined_name);
+ if (prop != NULL) {
+ ret_val = g_strdup (gettext(prop));
xmlFree (prop);
}
+ g_free(combined_name);
+
return ret_val;
}
diff --git a/e-util/e-xml-utils.h b/e-util/e-xml-utils.h
index 3a4649411c..ba102c1c3d 100644
--- a/e-util/e-xml-utils.h
+++ b/e-util/e-xml-utils.h
@@ -42,6 +42,7 @@ xmlNode *e_xml_get_child_by_name_by_lang_list (const xmlNode *parent,
xmlNode *e_xml_get_child_by_name_no_lang (const xmlNode *parent,
const gchar *name);
+
gint e_xml_get_integer_prop_by_name (const xmlNode *parent,
const xmlChar *prop_name);
gint e_xml_get_integer_prop_by_name_with_default (const xmlNode *parent,
@@ -51,6 +52,7 @@ void e_xml_set_integer_prop_by_name (xmlNode *parent,
const xmlChar *prop_name,
gint value);
+
guint e_xml_get_uint_prop_by_name (const xmlNode *parent,
const xmlChar *prop_name);
guint e_xml_get_uint_prop_by_name_with_default (const xmlNode *parent,
@@ -60,6 +62,7 @@ void e_xml_set_uint_prop_by_name (xmlNode *parent,
const xmlChar *prop_name,
guint value);
+
gboolean e_xml_get_bool_prop_by_name (const xmlNode *parent,
const xmlChar *prop_name);
gboolean e_xml_get_bool_prop_by_name_with_default (const xmlNode *parent,
@@ -78,6 +81,7 @@ void e_xml_set_double_prop_by_name ( xmlNode *parent,
const xmlChar *prop_name,
gdouble value);
+
gchar *e_xml_get_string_prop_by_name (const xmlNode *parent,
const xmlChar *prop_name);
gchar *e_xml_get_string_prop_by_name_with_default (const xmlNode *parent,
diff --git a/widgets/misc/e-unicode.c b/widgets/misc/e-unicode.c
index fe16cb2102..04b5c8f802 100644
--- a/widgets/misc/e-unicode.c
+++ b/widgets/misc/e-unicode.c
@@ -9,6 +9,10 @@
*/
#include <config.h>
+
+#include "e-unicode.h"
+
+#include "gal/util/e-i18n.h"
#include <ctype.h>
#include <string.h>
#include <stdio.h>
@@ -18,8 +22,8 @@
#include <gdk/gdkx.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtkmenuitem.h>
-#include "e-unicode.h"
#include "e-font.h"
+#include <gnome-xml/xmlmemory.h>
#define FONT_TESTING
#define MAX_DECOMP 8
@@ -2960,3 +2964,31 @@ e_stripped_char (unicode_char_t ch)
return 0;
}
+
+gchar *
+e_xml_get_translated_utf8_string_prop_by_name (const xmlNode *parent, const xmlChar *prop_name)
+{
+ xmlChar *prop;
+ gchar *ret_val = NULL;
+ gchar *combined_name;
+
+ 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 != NULL) {
+ ret_val = e_utf8_from_locale_string (prop);
+ xmlFree (prop);
+ return ret_val;
+ }
+
+ combined_name = g_strdup_printf("_%s", prop_name);
+ prop = xmlGetProp ((xmlNode *) parent, combined_name);
+ if (prop != NULL) {
+ ret_val = e_utf8_from_locale_string (gettext (prop));
+ xmlFree (prop);
+ }
+ g_free(combined_name);
+
+ return ret_val;
+}
diff --git a/widgets/misc/e-unicode.h b/widgets/misc/e-unicode.h
index db12ef72ec..f9eb0a9ae6 100644
--- a/widgets/misc/e-unicode.h
+++ b/widgets/misc/e-unicode.h
@@ -18,6 +18,7 @@
#include <gtk/gtkmenu.h>
#include <gtk/gtkwidget.h>
#include <libgnome/gnome-defs.h>
+#include <gnome-xml/tree.h>
BEGIN_GNOME_DECLS
@@ -81,6 +82,9 @@ gchar * e_utf8_xml1_encode (const gchar *text);
gint e_unichar_to_utf8 (gint c, gchar *outbuf);
guint32 gdk_keyval_to_unicode (guint keysym);
+gchar *e_xml_get_translated_utf8_string_prop_by_name (const xmlNode *parent,
+ const xmlChar *prop_name);
+
END_GNOME_DECLS
#endif