Fix showing umlauts etc. on non-utf8 locales.
--- a/gntbox.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntbox.c Fri Nov 20 21:45:44 2009 +0000
@@ -20,6 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+#include "gntinternal.h" @@ -90,7 +91,7 @@
wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TITLE_D));
mvwaddch(widget->window, 0, pos-1, ACS_RTEE | gnt_color_pair(GNT_COLOR_NORMAL));
- mvwaddstr(widget->window, 0, pos, title);
+ mvwaddstr(widget->window, 0, pos, C_(title)); mvwaddch(widget->window, 0, right, ACS_LTEE | gnt_color_pair(GNT_COLOR_NORMAL));
--- a/gntbutton.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntbutton.c Fri Nov 20 21:45:44 2009 +0000
@@ -23,6 +23,7 @@
+#include "gntinternal.h" @@ -48,7 +49,7 @@
wbkgdset(widget->window, '\0' | gnt_color_pair(type));
- mvwaddstr(widget->window, (small_button) ? 0 : 1, 2, button->priv->text);
+ mvwaddstr(widget->window, (small_button) ? 0 : 1, 2, C_(button->priv->text)); type = GNT_COLOR_HIGHLIGHT;
mvwchgat(widget->window, 0, 0, widget->priv.width, focus ? A_BOLD : A_REVERSE, type, NULL);
--- a/gntcheckbox.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntcheckbox.c Fri Nov 20 21:45:44 2009 +0000
@@ -51,7 +51,7 @@
mvwaddch(widget->window, 0, 2, ']');
wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL));
- mvwaddstr(widget->window, 0, 4, (GNT_BUTTON(cb)->priv->text));
+ mvwaddstr(widget->window, 0, 4, C_(GNT_BUTTON(cb)->priv->text)); wmove(widget->window, 0, 1);
--- a/gntcombobox.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntcombobox.c Fri Nov 20 21:45:44 2009 +0000
@@ -20,6 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+#include "gntinternal.h" @@ -90,7 +91,7 @@
s = (char*)gnt_util_onscreen_width_to_pointer(text, widget->priv.width - 4, &len);
- mvwaddstr(widget->window, 1, 1, text);
+ mvwaddstr(widget->window, 1, 1, C_(text)); whline(widget->window, ' ' | gnt_color_pair(type), widget->priv.width - 4 - len);
mvwaddch(widget->window, 1, widget->priv.width - 3, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL));
mvwaddch(widget->window, 1, widget->priv.width - 2, ACS_DARROW | gnt_color_pair(GNT_COLOR_NORMAL));
--- a/gntentry.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntentry.c Fri Nov 20 21:45:44 2009 +0000
@@ -23,6 +23,7 @@
+#include "gntinternal.h" @@ -284,7 +285,7 @@
g_utf8_pointer_to_offset(entry->scroll, entry->end));
- mvwprintw(widget->window, 0, 0, "%s", entry->scroll);
+ mvwprintw(widget->window, 0, 0, "%s", C_(entry->scroll)); stop = gnt_util_onscreen_width(entry->scroll, entry->end);
if (stop < widget->priv.width)
--- a/gntinternal.h Fri Nov 20 16:46:58 2009 +0000
+++ b/gntinternal.h Fri Nov 20 21:45:44 2009 +0000
@@ -19,6 +19,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
#define G_LOG_DOMAIN "Gnt"
@@ -31,3 +32,6 @@
# define gnt_warning g_warning
+extern int gnt_need_conversation_to_locale; +extern const char *C_(const char *x); --- a/gntlabel.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntlabel.c Fri Nov 20 21:45:44 2009 +0000
@@ -20,6 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+#include "gntinternal.h" @@ -53,7 +54,7 @@
chtype flag = gnt_text_format_flag_to_chtype(label->flags);
wbkgdset(widget->window, '\0' | flag);
- mvwaddstr(widget->window, 0, 0, label->text);
+ mvwaddstr(widget->window, 0, 0, C_(label->text)); --- a/gntmain.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntmain.c Fri Nov 20 21:45:44 2009 +0000
@@ -82,6 +82,8 @@
static GntClipboard *clipboard;
+int gnt_need_conversation_to_locale; #define HOLDING_ESCAPE (escape_stuff.timer != 0)
@@ -465,10 +467,12 @@
- if (locale && (strstr(locale, "UTF") || strstr(locale, "utf")))
+ if (locale && (strstr(locale, "UTF") || strstr(locale, "utf"))) {
+ gnt_need_conversation_to_locale = TRUE; @@ -731,3 +735,24 @@
+const char *C_(const char *x) + if (gnt_need_conversation_to_locale) { + c = g_locale_from_utf8(x, -1, NULL, NULL, &error); + if (c == NULL || error) { + gnt_warning("Error: %s\n", error ? error->message : "(unknown)"); --- a/gntmenu.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntmenu.c Fri Nov 20 21:45:44 2009 +0000
@@ -20,6 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+#include "gntinternal.h" #include "gntmenuitemcheck.h"
@@ -92,7 +93,7 @@
item->priv.x = getcurx(widget->window) + widget->priv.x;
item->priv.y = getcury(widget->window) + widget->priv.y + 1;
wbkgdset(widget->window, type);
- wprintw(widget->window, " %s ", item->text);
+ wprintw(widget->window, " %s ", C_(item->text)); --- a/gnttextview.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gnttextview.c Fri Nov 20 21:45:44 2009 +0000
@@ -118,7 +118,7 @@
if (select_start && select_start < view->string->str + seg->start && select_end > view->string->str + seg->end) {
wattrset(widget->window, fl);
- wprintw(widget->window, "%s", (view->string->str + seg->start));
+ wprintw(widget->window, "%s", C_(view->string->str + seg->start)); } else if (select_start && select_end &&
((select_start >= view->string->str + seg->start && select_start <= view->string->str + seg->end) ||
(select_end <= view->string->str + seg->end && select_start <= view->string->str + seg->start))) {
@@ -132,13 +132,13 @@
str = g_strndup(cur, last - cur);
wattrset(widget->window, fl);
- waddstr(widget->window, str);
+ waddstr(widget->window, C_(str)); cur = g_utf8_next_char(cur);
wattrset(widget->window, fl);
- wprintw(widget->window, "%s", (view->string->str + seg->start));
+ wprintw(widget->window, "%s", C_(view->string->str + seg->start)); --- a/gnttree.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gnttree.c Fri Nov 20 21:45:44 2009 +0000
@@ -20,6 +20,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+#include "gntinternal.h" @@ -549,7 +550,7 @@
wbkgdset(widget->window, '\0' | attr);
- mvwaddstr(widget->window, i, pos, str);
+ mvwaddstr(widget->window, i, pos, C_(str)); whline(widget->window, ' ', scrcol - wr);
--- a/gntws.c Fri Nov 20 16:46:58 2009 +0000
+++ b/gntws.c Fri Nov 20 21:45:44 2009 +0000
@@ -1,5 +1,6 @@
+#include "gntinternal.h" @@ -73,7 +74,7 @@
mvwhline(taskbar, 0, width * i, ' ' | gnt_color_pair(color), getmaxx(stdscr) - width * i);
title = GNT_BOX(w)->title;
- mvwprintw(taskbar, 0, width * i, "%s", title ? title : "<gnt>");
+ mvwprintw(taskbar, 0, width * i, "%s", title ? C_(title) : "<gnt>"); mvwaddch(taskbar, 0, width *i - 1, ACS_VLINE | A_STANDOUT | gnt_color_pair(GNT_COLOR_NORMAL));