diff options
-rw-r--r-- | e-util/ChangeLog | 5 | ||||
-rw-r--r-- | e-util/e-unicode.c | 44 | ||||
-rw-r--r-- | e-util/e-unicode.h | 2 | ||||
-rw-r--r-- | widgets/misc/e-unicode.c | 44 | ||||
-rw-r--r-- | widgets/misc/e-unicode.h | 2 |
5 files changed, 77 insertions, 20 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog index c3156ecee9..1f09bd1ec7 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,8 @@ +2000-09-11 Christopher James Lahey <clahey@helixcode.com> + + * e-unicode.c, e-unicode.h: Added e_utf8_gtk_editable_get_text and + e_utf8_gtk_editable_set_text. + 2000-09-11 Lauris Kaplinski <lauris@helixcode.com> * e-font.c: Try to find real bold variant of X font, fall diff --git a/e-util/e-unicode.c b/e-util/e-unicode.c index 8357977f8e..748f38a83a 100644 --- a/e-util/e-unicode.c +++ b/e-util/e-unicode.c @@ -21,7 +21,13 @@ e_unicode_init (void) static gboolean initialized = FALSE; if (!initialized) { - unicode_init (); + unicode_iconv_t hackhack; + + if ((hackhack = unicode_iconv_open("ASCII", "ASCII")) == (unicode_iconv_t) -1) + unicode_init (); + else + unicode_iconv_close(hackhack); + initialized = TRUE; } } @@ -202,6 +208,7 @@ e_utf8_to_gtk_string (GtkWidget *widget, const gchar *string) { return e_utf8_to_gtk_string_sized (widget, string, strlen (string)); } + gchar * e_utf8_gtk_entry_get_text (GtkEntry *entry) { @@ -214,6 +221,12 @@ e_utf8_gtk_entry_get_text (GtkEntry *entry) } gchar * +e_utf8_gtk_editable_get_text (GtkEditable *editable) +{ + return e_utf8_gtk_editable_get_chars(editable, 0, -1); +} + +gchar * e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end) { gchar *s, *u; @@ -238,18 +251,29 @@ e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint } void -e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text) +e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text) { - gchar *s; - - if (!text) return; - - s = e_utf8_to_gtk_string ((GtkWidget *) entry, text); - gtk_entry_set_text (entry, s); - - if (s) g_free (s); + int position; + gtk_editable_delete_text(editable, 0, -1); + if (text) + e_utf8_gtk_editable_insert_text(editable, text, strlen(text), &position); } +void +e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text) +{ + if (!text) + gtk_entry_set_text(entry, ""); + else { + gchar *s; + + s = e_utf8_to_gtk_string ((GtkWidget *) entry, text); + gtk_entry_set_text (entry, s); + + if (s) g_free (s); + } +} + GtkWidget * e_utf8_gtk_menu_item_new_with_label (GtkMenu *menu, const gchar *label) { diff --git a/e-util/e-unicode.h b/e-util/e-unicode.h index 654d8d94ee..57f5845c1f 100644 --- a/e-util/e-unicode.h +++ b/e-util/e-unicode.h @@ -37,6 +37,8 @@ gchar * e_utf8_to_gtk_string_sized (GtkWidget *widget, const gchar *string, gint 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_text (GtkEditable *editable); +void e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text); gchar *e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end); void e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint length, gint *position); diff --git a/widgets/misc/e-unicode.c b/widgets/misc/e-unicode.c index 8357977f8e..748f38a83a 100644 --- a/widgets/misc/e-unicode.c +++ b/widgets/misc/e-unicode.c @@ -21,7 +21,13 @@ e_unicode_init (void) static gboolean initialized = FALSE; if (!initialized) { - unicode_init (); + unicode_iconv_t hackhack; + + if ((hackhack = unicode_iconv_open("ASCII", "ASCII")) == (unicode_iconv_t) -1) + unicode_init (); + else + unicode_iconv_close(hackhack); + initialized = TRUE; } } @@ -202,6 +208,7 @@ e_utf8_to_gtk_string (GtkWidget *widget, const gchar *string) { return e_utf8_to_gtk_string_sized (widget, string, strlen (string)); } + gchar * e_utf8_gtk_entry_get_text (GtkEntry *entry) { @@ -214,6 +221,12 @@ e_utf8_gtk_entry_get_text (GtkEntry *entry) } gchar * +e_utf8_gtk_editable_get_text (GtkEditable *editable) +{ + return e_utf8_gtk_editable_get_chars(editable, 0, -1); +} + +gchar * e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end) { gchar *s, *u; @@ -238,18 +251,29 @@ e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint } void -e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text) +e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text) { - gchar *s; - - if (!text) return; - - s = e_utf8_to_gtk_string ((GtkWidget *) entry, text); - gtk_entry_set_text (entry, s); - - if (s) g_free (s); + int position; + gtk_editable_delete_text(editable, 0, -1); + if (text) + e_utf8_gtk_editable_insert_text(editable, text, strlen(text), &position); } +void +e_utf8_gtk_entry_set_text (GtkEntry *entry, const gchar *text) +{ + if (!text) + gtk_entry_set_text(entry, ""); + else { + gchar *s; + + s = e_utf8_to_gtk_string ((GtkWidget *) entry, text); + gtk_entry_set_text (entry, s); + + if (s) g_free (s); + } +} + GtkWidget * e_utf8_gtk_menu_item_new_with_label (GtkMenu *menu, const gchar *label) { diff --git a/widgets/misc/e-unicode.h b/widgets/misc/e-unicode.h index 654d8d94ee..57f5845c1f 100644 --- a/widgets/misc/e-unicode.h +++ b/widgets/misc/e-unicode.h @@ -37,6 +37,8 @@ gchar * e_utf8_to_gtk_string_sized (GtkWidget *widget, const gchar *string, gint 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_text (GtkEditable *editable); +void e_utf8_gtk_editable_set_text (GtkEditable *editable, const gchar *text); gchar *e_utf8_gtk_editable_get_chars (GtkEditable *editable, gint start, gint end); void e_utf8_gtk_editable_insert_text (GtkEditable *editable, const gchar *text, gint length, gint *position); |