diff options
Diffstat (limited to 'widgets/misc/e-unicode.c')
-rw-r--r-- | widgets/misc/e-unicode.c | 50 |
1 files changed, 47 insertions, 3 deletions
diff --git a/widgets/misc/e-unicode.c b/widgets/misc/e-unicode.c index cf8976f109..eba9bd56d1 100644 --- a/widgets/misc/e-unicode.c +++ b/widgets/misc/e-unicode.c @@ -11,6 +11,17 @@ #include <gdk/gdk.h> #include "e-unicode.h" +void +e_unicode_init (void) +{ + static gboolean initialized = FALSE; + + if (!initialized) { + unicode_init (); + initialized = TRUE; + } +} + const gchar * e_utf8_strstrcase (const gchar *haystack, const gchar *needle) { @@ -85,7 +96,7 @@ e_utf8_from_gtk_event_key (GtkWidget *widget, guint keyval, const gchar *string) if (!string) return NULL; if (!uinit) { - unicode_init (); + e_unicode_init (); uiconv = unicode_iconv_open ("UTF-8", "iso-8859-1"); if (uiconv == (unicode_iconv_t) -1) { uerror = TRUE; @@ -123,7 +134,7 @@ e_utf8_from_gtk_string (GtkWidget *widget, const gchar *string) if (!string) return NULL; if (!uinit) { - unicode_init (); + e_unicode_init (); uiconv = unicode_iconv_open ("UTF-8", "iso-8859-1"); if (uiconv == (unicode_iconv_t) -1) { uerror = TRUE; @@ -160,7 +171,7 @@ e_utf8_to_gtk_string (GtkWidget *widget, const gchar *string) if (!string) return NULL; if (!uinit) { - unicode_init (); + e_unicode_init (); uiconv = unicode_iconv_open ("iso-8859-1", "UTF-8"); if (uiconv == (unicode_iconv_t) -1) { uerror = TRUE; @@ -233,6 +244,39 @@ e_utf8_gtk_menu_item_new_with_label (const gchar *label) return w; } +void +e_utf8_gtk_clist_set_text (GtkCList *clist, gint row, gint col, const gchar *text) +{ + gchar *s; + + if (!text) return; + + s = e_utf8_to_gtk_string ((GtkWidget *) clist, text); + gtk_clist_set_text (clist, row, col, s); + + if (s) g_free (s); +} + +gint +e_utf8_gtk_clist_append (GtkCList *clist, gchar *text[]) +{ + gint row, i; + gchar **v; + + if (!text) return 0; + + v = g_new (gchar *, clist->columns); + for (i = 0; i < clist->columns; i++) + v[i] = e_utf8_to_gtk_string ((GtkWidget *) clist, text[i]); + + row = gtk_clist_append (clist, v); + + for (i = 0; i < clist->columns; i++) + if (v[i]) g_free (v[i]); + + return row; +} + /** * g_unichar_to_utf8: * @ch: a ISO10646 character code |