Author: hbelusca Date: Mon Apr 24 00:24:34 2017 New Revision: 74397
URL: http://svn.reactos.org/svn/reactos?rev=74397&view=rev Log: [CONSOLE.CPL]: Add a list of available code pages in the console properties dialog. Display a list of available code pages, as done on Windows (NT/2k/2k3/Vista/7/8, when a CJK language is selected, and as always done on Windows 10 for all languages). But contrary to Windows, do not limit this list to only CJK + CP-437 codepages, but list *all* the available CPs, retrieved from the registry. These CPs are also those available when using the "chcp" or "mode con cp" commands. And contrary to Windows (where this is done only for the general console properties), always allow the user to view or change the code page even from the console properties dialog.
[CONSRV]: Support changing the current code page from the console properties dialog.
CORE-12451
Modified: trunk/reactos/dll/cpl/console/lang/bg-BG.rc trunk/reactos/dll/cpl/console/lang/cs-CZ.rc trunk/reactos/dll/cpl/console/lang/de-DE.rc trunk/reactos/dll/cpl/console/lang/en-US.rc trunk/reactos/dll/cpl/console/lang/es-ES.rc trunk/reactos/dll/cpl/console/lang/fr-FR.rc trunk/reactos/dll/cpl/console/lang/he-IL.rc trunk/reactos/dll/cpl/console/lang/id-ID.rc trunk/reactos/dll/cpl/console/lang/it-IT.rc trunk/reactos/dll/cpl/console/lang/ja-JP.rc trunk/reactos/dll/cpl/console/lang/no-NO.rc trunk/reactos/dll/cpl/console/lang/pl-PL.rc trunk/reactos/dll/cpl/console/lang/pt-BR.rc trunk/reactos/dll/cpl/console/lang/ro-RO.rc trunk/reactos/dll/cpl/console/lang/ru-RU.rc trunk/reactos/dll/cpl/console/lang/sk-SK.rc trunk/reactos/dll/cpl/console/lang/sq-AL.rc trunk/reactos/dll/cpl/console/lang/tr-TR.rc trunk/reactos/dll/cpl/console/lang/uk-UA.rc trunk/reactos/dll/cpl/console/lang/zh-CN.rc trunk/reactos/dll/cpl/console/lang/zh-TW.rc trunk/reactos/dll/cpl/console/options.c trunk/reactos/dll/cpl/console/resource.h trunk/reactos/win32ss/user/winsrv/consrv/condrv/console.c trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guisettings.c trunk/reactos/win32ss/user/winsrv/consrv/settings.c
Modified: trunk/reactos/dll/cpl/console/lang/bg-BG.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/bg-BG.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/bg-BG.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/bg-BG.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -25,6 +25,8 @@ GROUPBOX "ÐÑомÑна на наÑÑÑойкиÑе", -1, 143, 85, 130, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Режим &бÑÑза обÑабоÑка", IDC_CHECK_QUICK_EDIT, 150, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Режим &вмÑкване", IDC_CHECK_INSERT_MODE, 150, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/cs-CZ.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/cs-CZ.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/cs-CZ.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/cs-CZ.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -31,6 +31,8 @@ GROUPBOX "Možnosti úprav", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Režim &rychlých úprav", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Režim v&kládánÃ", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/de-DE.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/de-DE.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/de-DE.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/de-DE.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "Bearbeitungsoptionen", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&QuickEdit-Modus", IDC_CHECK_QUICK_EDIT, 150, 100, 70, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Einfügemodus", IDC_CHECK_INSERT_MODE, 150, 120, 70, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
Modified: trunk/reactos/dll/cpl/console/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/en-US.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/en-US.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/en-US.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -25,6 +25,8 @@ GROUPBOX "Edit Options", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Insert Mode", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/es-ES.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/es-ES.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/es-ES.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/es-ES.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "Editar Opciones", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Modo &Edición rápida", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Modo &Insertar", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
Modified: trunk/reactos/dll/cpl/console/lang/fr-FR.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/fr-FR.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/fr-FR.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/fr-FR.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "Options d'édition", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "M&ode d'édition rapide", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Mode &insertion", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Page de codes", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/he-IL.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/he-IL.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/he-IL.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/he-IL.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "×פשר×××ת ער×××", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Insert Mode", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/id-ID.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/id-ID.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/id-ID.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/id-ID.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "Opsi Edit", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Mode Edit&Cepat", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Mode S&isip", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
Modified: trunk/reactos/dll/cpl/console/lang/it-IT.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/it-IT.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/it-IT.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/it-IT.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "Opzioni di modifica", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Modalità &Modifica rapida", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Modalità &Inserimento", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
Modified: trunk/reactos/dll/cpl/console/lang/ja-JP.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/ja-JP.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/ja-JP.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/ja-JP.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -25,6 +25,8 @@ GROUPBOX "ãªãã·ã§ã³ã®ç·¨é", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&Quickç·¨éã¢ã¼ã", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "æ¿å ¥ã¢ã¼ã(&I)", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/no-NO.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/no-NO.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/no-NO.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/no-NO.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -25,6 +25,8 @@ GROUPBOX "Rediger valg", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&Hurtigredigeringsmodus", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Innsettingsmodus", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/pl-PL.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/pl-PL.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/pl-PL.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/pl-PL.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -32,6 +32,8 @@ GROUPBOX "Edytuj opcje", -1, 140, 90, 100, 70, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&Tryb szybkiej edycji", IDC_CHECK_QUICK_EDIT, 150, 100, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Wstaw tryb", IDC_CHECK_INSERT_MODE, 150, 120, 60, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 250, 220
Modified: trunk/reactos/dll/cpl/console/lang/pt-BR.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/pt-BR.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/pt-BR.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/pt-BR.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -25,6 +25,8 @@ GROUPBOX "Opções de edição", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Modo de edição &rápida", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Modo de &inserção", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/ro-RO.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/ro-RO.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/ro-RO.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/ro-RO.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -34,6 +34,8 @@ GROUPBOX "OpÈiuni de editare", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Mod de &editare rapidÄâ", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Mod de inse&rÈieâ", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/ru-RU.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/ru-RU.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/ru-RU.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/ru-RU.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "РедакÑиÑование", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&ÐÑÑÑÑое ÑедакÑиÑование", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Режим вÑÑавки", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/sk-SK.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/sk-SK.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/sk-SK.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/sk-SK.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -29,6 +29,8 @@ GROUPBOX "Možnosti úprav", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&QuickEdit Mode", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Insert Mode", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/sq-AL.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/sq-AL.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/sq-AL.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/sq-AL.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -29,6 +29,8 @@ GROUPBOX "Modifiko Opsione", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "Mënyra e shpejt Modifikimi", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Mënyr Futje", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/tr-TR.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/tr-TR.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/tr-TR.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/tr-TR.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "Düzenleme Seçenekleri", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&Hızlı Düzenleme Kipi", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "Ek&leme Kipi", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/uk-UA.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/uk-UA.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/uk-UA.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/uk-UA.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "ÐаÑамеÑÑи ÑедагÑваннÑ", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "&Швидке ÑедагÑваннÑ", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "&Режим вÑÑавленнÑ", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/zh-CN.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/zh-CN.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/zh-CN.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/zh-CN.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "ç¼è¾é项", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "å¿«éç¼è¾æ¨¡å¼(&Q)", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "æå ¥æ¨¡å¼(&I)", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/lang/zh-TW.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/lang/zh-TW.... ============================================================================== --- trunk/reactos/dll/cpl/console/lang/zh-TW.rc [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/lang/zh-TW.rc [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -27,6 +27,8 @@ GROUPBOX "編輯é¸é ", -1, 133, 85, 112, 77, BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP CHECKBOX "å¿«é編輯模å¼(&Q)", IDC_CHECK_QUICK_EDIT, 140, 97, 102, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP CHECKBOX "æå ¥æ¨¡å¼(&I)", IDC_CHECK_INSERT_MODE, 140, 113, 76, 15, WS_CHILD | WS_VISIBLE | WS_TABSTOP + GROUPBOX "Code Page", -1, 7, 170, 238, 31 + COMBOBOX IDL_CODEPAGE, 13, 181, 224, 58, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP END
IDD_PROPPAGEFONT DIALOGEX 0, 0, 253, 220
Modified: trunk/reactos/dll/cpl/console/options.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/options.c?r... ============================================================================== --- trunk/reactos/dll/cpl/console/options.c [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/options.c [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -4,12 +4,238 @@ * FILE: dll/cpl/console/options.c * PURPOSE: Options dialog * PROGRAMMERS: Johannes Anderwald (johannes.anderwald@reactos.org) + * Hermes Belusca-Maito (hermes.belusca@sfr.fr) */
#include "console.h"
#define NDEBUG #include <debug.h> + +#define MAX_VALUE_NAME 16383 + + +/* + * A function that locates the insertion point (index) for a given value 'Value' + * in a list 'List' to maintain its sorted order by increasing values. + * + * - When 'BisectRightOrLeft' == TRUE, the bisection is performed to the right, + * i.e. the returned insertion point comes after (to the right of) any existing + * entries of 'Value' in 'List'. + * The returned insertion point 'i' partitions the list 'List' into two halves + * such that: + * all(val <= Value for val in List[start:i[) for the left side, and + * all(val > Value for val in List[i:end+1[) for the right side. + * + * - When 'BisectRightOrLeft' == FALSE, the bisection is performed to the left, + * i.e. the returned insertion point comes before (to the left of) any existing + * entries of 'Value' in 'List'. + * The returned insertion point 'i' partitions the list 'List' into two halves + * such that: + * all(val < Value for val in List[start:i[) for the left side, and + * all(val >= Value for val in List[i:end+1[) for the right side. + * + * The exact value of List[i] may, or may not, be equal to Value, depending on + * whether or not 'Value' is actually present on the list. + */ +static UINT +BisectListSortedByValueEx( + IN HWND hWndList, + IN ULONG_PTR Value, + IN UINT itemStart, + IN UINT itemEnd, + OUT PUINT pValueItem OPTIONAL, + IN BOOL BisectRightOrLeft) +{ + UINT iItemStart, iItemEnd, iItem; + ULONG_PTR itemData; + + /* Sanity checks */ + if (itemStart > itemEnd) + return CB_ERR; // Fail + + /* Initialize */ + iItemStart = itemStart; + iItemEnd = itemEnd; + iItem = iItemStart; + + if (pValueItem) + *pValueItem = CB_ERR; + + while (iItemStart <= iItemEnd) + { + /* + * Bisect. Note the following: + * - if iItemEnd == iItemStart + 1, then iItem == iItemStart; + * - if iItemStart == iItemEnd, then iItemStart == iItem == iItemEnd. + * In all but the last case, iItemStart <= iItem < iItemEnd. + */ + iItem = (iItemStart + iItemEnd) / 2; + + itemData = (ULONG_PTR)SendMessageW(hWndList, CB_GETITEMDATA, (WPARAM)iItem, 0); + if (itemData == CB_ERR) + return CB_ERR; // Fail + + if (Value == itemData) + { + /* Found a candidate */ + if (pValueItem) + *pValueItem = iItem; + + /* + * Try to find the last element (if BisectRightOrLeft == TRUE) + * or the first element (if BisectRightOrLeft == FALSE). + */ + if (BisectRightOrLeft) + { + iItemStart = iItem + 1; // iItemStart may be > iItemEnd + } + else + { + if (iItem <= itemStart) break; + iItemEnd = iItem - 1; // iItemEnd may be < iItemStart, i.e. iItemStart may be > iItemEnd + } + } + else if (Value < itemData) + { + if (iItem <= itemStart) break; + /* The value should be before iItem */ + iItemEnd = iItem - 1; // iItemEnd may be < iItemStart, i.e. iItemStart may be > iItemEnd, if iItem == iItemStart. + } + else // if (itemData < Value) + { + /* The value should be after iItem */ + iItemStart = iItem + 1; // iItemStart may be > iItemEnd, if iItem == iItemEnd. + } + + /* Here, iItemStart may be == iItemEnd */ + } + + return iItemStart; +} + +static UINT +BisectListSortedByValue( + IN HWND hWndList, + IN ULONG_PTR Value, + OUT PUINT pValueItem OPTIONAL, + IN BOOL BisectRightOrLeft) +{ + INT iItemEnd = (INT)SendMessageW(hWndList, CB_GETCOUNT, 0, 0); + if (iItemEnd == CB_ERR || iItemEnd <= 0) + return CB_ERR; // Fail + + return BisectListSortedByValueEx(hWndList, Value, + 0, (UINT)(iItemEnd - 1), + pValueItem, + BisectRightOrLeft); +} + + +static VOID +AddCodePage( + IN HWND hWndList, + IN UINT CodePage) +{ + UINT iItem, iDupItem; + CPINFOEXW CPInfo; + + /* + * Add only valid code pages, that is: + * - If the CodePage is one of the reserved (alias) values: + * CP_ACP == 0 ; CP_OEMCP == 1 ; CP_MACCP == 2 ; CP_THREAD_ACP == 3 ; + * or the deprecated CP_SYMBOL == 42 (see http://archives.miloush.net/michkap/archive/2005/11/08/490495.html) + * it is considered invalid. + * - If IsValidCodePage() fails because the code page is listed but + * not installed on the system, it is also considered invalid. + */ + if (CodePage == CP_ACP || CodePage == CP_OEMCP || CodePage == CP_MACCP || + CodePage == CP_THREAD_ACP || CodePage == CP_SYMBOL || !IsValidCodePage(CodePage)) + { + return; + } + + /* Retrieve the code page display name */ + if (!GetCPInfoExW(CodePage, 0, &CPInfo)) + { + /* We failed, just use the code page value as its name */ + // _ultow(CodePage, CPInfo.CodePageName, 10); + _snwprintf(CPInfo.CodePageName, ARRAYSIZE(CPInfo.CodePageName), L"%lu", CodePage); + } + + /* Add the code page into the list, sorted by code page value. Avoid any duplicates. */ + iDupItem = CB_ERR; + iItem = BisectListSortedByValue(hWndList, CodePage, &iDupItem, TRUE); + if (iItem == CB_ERR) + iItem = 0; + if (iDupItem != CB_ERR) + return; + iItem = (INT)SendMessageW(hWndList, CB_INSERTSTRING, iItem, (LPARAM)CPInfo.CodePageName); + if (iItem != CB_ERR && iItem != CB_ERRSPACE) + iItem = SendMessageW(hWndList, CB_SETITEMDATA, iItem, CodePage); +} + +static VOID +BuildCodePageList(IN HWND hDlg) +{ + HWND hWndList; + HKEY hKey; + DWORD dwIndex, dwSize, dwType; + UINT CodePage; + WCHAR szValueName[MAX_VALUE_NAME]; + + // #define REGSTR_PATH_CODEPAGE TEXT("System\CurrentControlSet\Control\Nls\CodePage") + /* Open the Nls\CodePage key */ + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, + L"System\CurrentControlSet\Control\Nls\CodePage", + 0, + KEY_ENUMERATE_SUB_KEYS | KEY_QUERY_VALUE, + &hKey) != ERROR_SUCCESS) + { + return; + } + + hWndList = GetDlgItem(hDlg, IDL_CODEPAGE); + + /* Enumerate all the available code pages on the system */ + dwSize = ARRAYSIZE(szValueName); + dwIndex = 0; + while (RegEnumValueW(hKey, dwIndex, szValueName, &dwSize, + NULL, &dwType, NULL, NULL) == ERROR_SUCCESS) // != ERROR_NO_MORE_ITEMS + { + /* Ignore these parameters, prepare for next iteration */ + dwSize = ARRAYSIZE(szValueName); + ++dwIndex; + + /* Check the value type validity */ + if (dwType != REG_SZ) + continue; + + /* + * Add the code page into the list. + * If _wtol fails and returns 0, the code page is considered invalid + * (and indeed this value corresponds to the CP_ACP alias too). + */ + CodePage = (UINT)_wtol(szValueName); + if (CodePage == 0) continue; + AddCodePage(hWndList, CodePage); + } + + RegCloseKey(hKey); + + /* Add the special UTF-7 (CP_UTF7 65000) and UTF-8 (CP_UTF8 65001) code pages */ + AddCodePage(hWndList, CP_UTF7); + AddCodePage(hWndList, CP_UTF8); + + /* Find and select the current code page in the sorted list */ + if (BisectListSortedByValue(hWndList, ConInfo->CodePage, &CodePage, FALSE) == CB_ERR || + CodePage == CB_ERR) + { + /* Not found, select the first element */ + CodePage = 0; + } + SendMessageW(hWndList, CB_SETCURSEL, (WPARAM)CodePage, 0); +}
static VOID UpdateDialogElements(HWND hwndDlg, PCONSOLE_STATE_INFO pConInfo) @@ -21,42 +247,42 @@ { /* Small cursor */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } else if (pConInfo->CursorSize <= 50) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } else /* if (pConInfo->CursorSize <= 100) */ { hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_LARGE_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_SMALL_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_MEDIUM_CURSOR); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); }
/* Update num buffers */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_NUM_BUFFER); - SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG(999, 1)); + SendMessageW(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG(999, 1)); SetDlgItemInt(hwndDlg, IDC_EDIT_NUM_BUFFER, pConInfo->NumberOfHistoryBuffers, FALSE);
/* Update buffer size */ hDlgCtrl = GetDlgItem(hwndDlg, IDC_UPDOWN_BUFFER_SIZE); - SendMessage(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG(999, 1)); + SendMessageW(hDlgCtrl, UDM_SETRANGE, 0, MAKELONG(999, 1)); SetDlgItemInt(hwndDlg, IDC_EDIT_BUFFER_SIZE, pConInfo->HistoryBufferSize, FALSE);
/* Update discard duplicates */ @@ -67,18 +293,18 @@ if (pConInfo->FullScreen) { hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_FULL); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_WINDOW); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } else { hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_WINDOW); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_CHECKED, 0);
hDlgCtrl = GetDlgItem(hwndDlg, IDC_RADIO_DISPLAY_FULL); - SendMessage(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW(hDlgCtrl, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); }
/* Update quick edit */ @@ -101,6 +327,7 @@ { case WM_INITDIALOG: { + BuildCodePageList(hwndDlg); UpdateDialogElements(hwndDlg, ConInfo); return TRUE; } @@ -172,48 +399,48 @@ } case IDC_CHECK_QUICK_EDIT: { - lResult = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0); + lResult = SendMessageW((HWND)lParam, BM_GETCHECK, 0, 0); if (lResult == BST_CHECKED) { ConInfo->QuickEdit = FALSE; - SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } else if (lResult == BST_UNCHECKED) { ConInfo->QuickEdit = TRUE; - SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); } PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; } case IDC_CHECK_INSERT_MODE: { - lResult = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0); + lResult = SendMessageW((HWND)lParam, BM_GETCHECK, 0, 0); if (lResult == BST_CHECKED) { ConInfo->InsertMode = FALSE; - SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } else if (lResult == BST_UNCHECKED) { ConInfo->InsertMode = TRUE; - SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); } PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; } case IDC_CHECK_DISCARD_DUPLICATES: { - lResult = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0); + lResult = SendMessageW((HWND)lParam, BM_GETCHECK, 0, 0); if (lResult == BST_CHECKED) { ConInfo->HistoryNoDup = FALSE; - SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + SendMessageW((HWND)lParam, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); } else if (lResult == BST_UNCHECKED) { ConInfo->HistoryNoDup = TRUE; - SendMessage((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); + SendMessageW((HWND)lParam, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); } PropSheet_Changed(GetParent(hwndDlg), hwndDlg); break; @@ -243,6 +470,26 @@
ConInfo->NumberOfHistoryBuffers = numBuff; PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + } + break; + } + case IDL_CODEPAGE: + { + if (HIWORD(wParam) == CBN_SELENDOK) + { + INT iItem; + UINT CodePage; + + iItem = (INT)SendMessageW((HWND)lParam, CB_GETCURSEL, 0, 0); + if (iItem != CB_ERR) + { + CodePage = (UINT)SendMessageW((HWND)lParam, CB_GETITEMDATA, iItem, 0); + if (CodePage != CB_ERR) + { + ConInfo->CodePage = CodePage; + PropSheet_Changed(GetParent(hwndDlg), hwndDlg); + } + } } break; }
Modified: trunk/reactos/dll/cpl/console/resource.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/console/resource.h?... ============================================================================== --- trunk/reactos/dll/cpl/console/resource.h [iso-8859-1] (original) +++ trunk/reactos/dll/cpl/console/resource.h [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -21,9 +21,10 @@ #define IDC_UPDOWN_NUM_BUFFER 206 #define IDC_RADIO_SMALL_CURSOR 207 #define IDC_RADIO_MEDIUM_CURSOR 208 -#define IDC_RADIO_LARGE_CURSOR 209 -#define IDC_RADIO_DISPLAY_WINDOW 210 +#define IDC_RADIO_LARGE_CURSOR 209 +#define IDC_RADIO_DISPLAY_WINDOW 210 #define IDC_RADIO_DISPLAY_FULL 211 +#define IDL_CODEPAGE 212
/* Apply dialog */ #define IDC_RADIO_APPLY_ALL 300
Modified: trunk/reactos/win32ss/user/winsrv/consrv/condrv/console.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv/... ============================================================================== --- trunk/reactos/win32ss/user/winsrv/consrv/condrv/console.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/winsrv/consrv/condrv/console.c [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -217,7 +217,8 @@ }
/* Set-up the code page */ - Console->InputCodePage = Console->OutputCodePage = ConsoleInfo->CodePage; + if (IsValidCodePage(ConsoleInfo->CodePage)) + Console->InputCodePage = Console->OutputCodePage = ConsoleInfo->CodePage;
/* Initialize a new text-mode screen buffer with default settings */ ScreenBufferInfo.ScreenBufferSize = ConsoleInfo->ScreenBufferSize;
Modified: trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guisettings.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv/... ============================================================================== --- trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guisettings.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/winsrv/consrv/frontends/gui/guisettings.c [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -156,7 +156,9 @@ pSharedInfo->ScreenAttributes = DEFAULT_SCREEN_ATTRIB; pSharedInfo->PopupAttributes = DEFAULT_POPUP_ATTRIB ; } - /// pSharedInfo->CodePage; + + /* We display the output code page only */ + pSharedInfo->CodePage = Console->OutputCodePage;
/* GUI Information */ wcsncpy(pSharedInfo->FaceName, GuiData->GuiInfo.FaceName, LF_FACESIZE); @@ -317,7 +319,7 @@ ConInfo.HistoryBufferSize = pConInfo->HistoryBufferSize; ConInfo.NumberOfHistoryBuffers = pConInfo->NumberOfHistoryBuffers; ConInfo.HistoryNoDup = !!pConInfo->HistoryNoDup; - ConInfo.CodePage = pConInfo->CodePage; + ConInfo.CodePage = pConInfo->CodePage; // Done in ConSrvApplyUserSettings #endif
/*
Modified: trunk/reactos/win32ss/user/winsrv/consrv/settings.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/winsrv/consrv/... ============================================================================== --- trunk/reactos/win32ss/user/winsrv/consrv/settings.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/winsrv/consrv/settings.c [iso-8859-1] Mon Apr 24 00:24:34 2017 @@ -51,6 +51,15 @@ /* Apply cursor size */ ActiveBuffer->CursorInfo.bVisible = (ConsoleInfo->CursorSize != 0); ActiveBuffer->CursorInfo.dwSize = min(max(ConsoleInfo->CursorSize, 0), 100); + + /* Update the code page */ + if ((Console->OutputCodePage != ConsoleInfo->CodePage) && + IsValidCodePage(ConsoleInfo->CodePage)) + { + Console->InputCodePage = Console->OutputCodePage = ConsoleInfo->CodePage; + // ConDrvSetConsoleCP(Console, ConsoleInfo->CodePage, TRUE); // Output + // ConDrvSetConsoleCP(Console, ConsoleInfo->CodePage, FALSE); // Input + }
// FIXME: Check ConsoleInfo->WindowSize with respect to // TermGetLargestConsoleWindowSize(...).