[PATCH 5/19] Kconfig I18N: lxdialog: answering

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I18N support for answering in lxdialog. This patch is useful for 
non-latin based languages.

Signed-off-by: Egry Gabor <[email protected]>
---

 scripts/lxdialog/menubox.c |   33 ++++++++++++++++++++++++++++++++-
 scripts/lxdialog/yesno.c   |   33 +++++++++++++++++++++++++++++++--
 2 files changed, 63 insertions(+), 3 deletions(-)

diff -puN scripts/lxdialog/yesno.c~kconfig-i18n-05-lxdialog-key scripts/lxdialog/yesno.c
--- linux-2.6.13-rc3-i18n-kconfig/scripts/lxdialog/yesno.c~kconfig-i18n-05-lxdialog-key	2005-07-13 18:32:17.000000000 +0200
+++ linux-2.6.13-rc3-i18n-kconfig-gabaman/scripts/lxdialog/yesno.c	2005-07-13 18:32:17.000000000 +0200
@@ -43,10 +43,12 @@ print_buttons(WINDOW *dialog, int height
 int
 dialog_yesno (const char *title, const char *prompt, int height, int width)
 {
-    int i, x, y, key = 0, button = 0;
+    int i, x, y, key = 0, answer = 0, button = 0;
     WINDOW *dialog;
 #ifdef USE_WIDE_CURSES
-    wchar_t *wtitle;
+    wchar_t *wtitle, *yes, *Yes, *no, *No;
+#else /* USE_WIDE_CURSES */
+    const char *yes, *Yes, *no, *No;
 #endif /* USE_WIDE_CURSES */
 
     /* center dialog box on screen */
@@ -107,6 +109,33 @@ dialog_yesno (const char *title, const c
 
     while (key != ESC) {
 	key = wgetch (dialog);
+#ifdef USE_WIDE_CURSES
+	yes = to_wchar (_("y"));
+	Yes = to_wchar (_("Y"));
+	no = to_wchar (_("n"));
+	No = to_wchar (_("N"));
+#else /* USE_WIDE_CURSES */
+	yes = _("y");
+	Yes = _("Y");
+	no = _("n");
+	No = _("N");
+#endif /* USE_WIDE_CURSES */
+	if (yes && (yes[0] == key))
+	    answer = 'y';
+	if (Yes && (Yes[0] == key))
+	    answer = 'Y';
+	if (no && (no[0] == key))
+	    answer = 'n';
+	if (No && (No[0] == key))
+	    answer = 'N';
+#ifdef USE_WIDE_CURSES
+	free (yes);
+	free (Yes);
+	free (no);
+	free (No);
+#endif /* USE_WIDE_CURSES */
+	if (answer)
+	    key = answer;
 	switch (key) {
 	case 'Y':
 	case 'y':
diff -puN scripts/lxdialog/menubox.c~kconfig-i18n-05-lxdialog-key scripts/lxdialog/menubox.c
--- linux-2.6.13-rc3-i18n-kconfig/scripts/lxdialog/menubox.c~kconfig-i18n-05-lxdialog-key	2005-07-13 18:32:17.000000000 +0200
+++ linux-2.6.13-rc3-i18n-kconfig-gabaman/scripts/lxdialog/menubox.c	2005-07-13 18:32:17.000000000 +0200
@@ -189,10 +189,14 @@ dialog_menu (const char *title, const ch
 {
     int i, j, x, y, box_x, box_y;
     int key = 0, button = 0, scroll = 0, choice = 0, first_item = 0, max_choice;
+    int answer = 0;
     WINDOW *dialog, *menu;
     FILE *f;
 #ifdef USE_WIDE_CURSES
     wchar_t *wtitle, *witems, *witem2, *wcurrent;
+    wchar_t *yes, *Yes, *no, *No;
+#else /* USE_WIDE_CURSES */
+    const char *yes, *Yes, *no, *No;
 #endif /* USE_WIDE_CURSES */
 
     max_choice = MIN (menu_height, item_no);
@@ -541,7 +545,34 @@ dialog_menu (const char *title, const ch
 	    continue;		/* wait for another key press */
         }
 
-	switch (key) {
+#ifdef USE_WIDE_CURSES
+	yes = to_wchar (_("y"));
+	Yes = to_wchar (_("Y"));
+	no = to_wchar (_("n"));
+	No = to_wchar (_("N"));
+#else /* USE_WIDE_CURSES */
+	yes = _("y");
+	Yes = _("Y");
+	no = _("n");
+	No = _("N");
+#endif /* USE_WIDE_CURSES */
+	if (yes && (yes[0] == key))
+	    answer = 'y';
+	if (Yes && (Yes[0] == key))
+	    answer = 'Y';
+	if (no && (no[0] == key))
+	    answer = 'n';
+	if (No && (No[0] == key))
+	    answer = 'N';
+#ifdef USE_WIDE_CURSES
+        free (yes);
+        free (Yes);
+        free (no);
+        free (No);
+#endif /* USE_WIDE_CURSES */
+	if (answer)
+	    key = answer;
+    	switch (key) {
 	case KEY_LEFT:
 	case TAB:
 	case KEY_RIGHT:
_


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux