1 /* User interface for charset selection.
3 Copyright (C) 2001 Walery Studennikov <despair@sama.ru>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
32 #include "selcodepage.h"
37 /* Numbers of (file I/O) and (input/display) codepages. -1 if not selected */
38 int source_codepage
= -1;
39 int display_codepage
= -1;
41 static unsigned char get_hotkey( int n
)
43 return (n
<= 9) ? '0' + n
: 'a' + n
- 10;
46 int select_charset( int current_charset
, int seldisplay
)
48 int i
, menu_lines
= n_codepages
+ 1;
53 create_listbox_window ( ENTRY_LEN
+ 2, menu_lines
,
54 _(" Choose input codepage "),
55 "[Codepages Translation]");
58 LISTBOX_APPEND_TEXT( listbox
, '-', _("- < No translation >"), NULL
);
60 /* insert all the items found */
61 for (i
= 0; i
< n_codepages
; i
++) {
62 char *name
= codepages
[i
].name
;
63 snprintf (buffer
, sizeof (buffer
), "%c %s", get_hotkey(i
), name
);
64 LISTBOX_APPEND_TEXT( listbox
, get_hotkey(i
), buffer
, NULL
);
67 snprintf (buffer
, sizeof (buffer
), "%c %s", get_hotkey(n_codepages
), _("Other 8 bit"));
68 LISTBOX_APPEND_TEXT( listbox
, get_hotkey(n_codepages
), buffer
, NULL
);
71 /* Select the default entry */
74 ( (current_charset
< 0) ? n_codepages
: current_charset
)
76 ( current_charset
+ 1 );
78 listbox_select_by_number( listbox
->list
, i
);
80 i
= run_listbox( listbox
);
82 return (seldisplay
) ? ( (i
>= n_codepages
) ? -1 : i
)
86 /* Helper functions for codepages support */
89 int do_select_codepage(void)
93 if (display_codepage
> 0) {
94 source_codepage
= select_charset( source_codepage
, 0 );
95 errmsg
= init_translation_table( source_codepage
, display_codepage
);
97 message( 1, MSG_ERROR
, "%s", errmsg
);
101 message( 1, _(" Warning "),
102 _("To use this feature select your codepage in\n"
103 "Setup / Display Bits dialog!\n"
104 "Do not forget to save options." ));
110 #endif /* HAVE_CHARSET */