diff options
Diffstat (limited to 'widgets/misc')
-rw-r--r-- | widgets/misc/e-unicode.c | 50 | ||||
-rw-r--r-- | widgets/misc/e-unicode.h | 7 |
2 files changed, 53 insertions, 4 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 diff --git a/widgets/misc/e-unicode.h b/widgets/misc/e-unicode.h index a69d1a3403..00cc3ab292 100644 --- a/widgets/misc/e-unicode.h +++ b/widgets/misc/e-unicode.h @@ -12,6 +12,8 @@ #define gnome_font_lookup_default gnome_font_get_glyph #endif +void e_unicode_init (void); + /* * e_utf8_strstrcase */ @@ -31,15 +33,18 @@ gchar * e_utf8_to_gtk_string (GtkWidget *widget, const gchar *string); /* NB! This return newly allocated string, not const as gtk+ one */ gchar *e_utf8_gtk_entry_get_text (GtkEntry *entry); - void e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text); gchar *e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end); GtkWidget *e_utf8_gtk_menu_item_new_with_label (const gchar *label); +void e_utf8_gtk_clist_set_text (GtkCList *clist, gint row, gint col, const gchar *text); +gint e_utf8_gtk_clist_append (GtkCList *clist, gchar *text[]); + gint g_unichar_to_utf8 (gint c, gchar *outbuf); guint32 gdk_keyval_to_unicode (guint keysym); #endif + |