mirror of
https://github.com/reactos/reactos.git
synced 2024-12-31 19:42:51 +00:00
- Change ListBox to ListView
- Added list of code pages svn path=/trunk/; revision=32464
This commit is contained in:
parent
fae9aa5c48
commit
f87aaee1e6
10 changed files with 176 additions and 10 deletions
|
@ -1,10 +1,173 @@
|
|||
#include <windows.h>
|
||||
#include <commctrl.h>
|
||||
#include <setupapi.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <tchar.h>
|
||||
#include <cpl.h>
|
||||
|
||||
#include "intl.h"
|
||||
#include "resource.h"
|
||||
|
||||
typedef struct CPStruct
|
||||
{
|
||||
WORD Status;
|
||||
UINT CPage;
|
||||
HANDLE hCPage;
|
||||
TCHAR Name[MAX_PATH];
|
||||
struct CPStruct *NextItem;
|
||||
} CPAGE, *LPCPAGE;
|
||||
|
||||
static LPCPAGE PCPage = NULL;
|
||||
static HINF hIntlInf;
|
||||
|
||||
static BOOL
|
||||
GetSupportedCP(VOID)
|
||||
{
|
||||
UINT uiCPage, Count, Number;
|
||||
INFCONTEXT infCont;
|
||||
LPCPAGE lpCPage;
|
||||
HANDLE hCPage;
|
||||
|
||||
Count = (UINT) SetupGetLineCount(hIntlInf, _T("CodePages"));
|
||||
if (Count <= 0) return FALSE;
|
||||
|
||||
for (Number = 0; Number < Count; Number++)
|
||||
{
|
||||
if (SetupGetLineByIndex(hIntlInf, _T("CodePages"), Number, &infCont) &&
|
||||
SetupGetIntField(&infCont, 0, (PINT)&uiCPage))
|
||||
{
|
||||
if (!(hCPage = GlobalAlloc(GHND, sizeof(CPAGE)))) return FALSE;
|
||||
|
||||
lpCPage = GlobalLock(hCPage);
|
||||
lpCPage->CPage = uiCPage;
|
||||
lpCPage->hCPage = hCPage;
|
||||
lpCPage->Status = 0;
|
||||
(lpCPage->Name)[0] = 0;
|
||||
|
||||
CPINFOEX cpInfEx;
|
||||
if (GetCPInfoEx(uiCPage, 0, &cpInfEx))
|
||||
{
|
||||
_tcscpy(lpCPage->Name, cpInfEx.CodePageName);
|
||||
}
|
||||
else if (!SetupGetStringField(&infCont, 1, lpCPage->Name, MAX_PATH, NULL))
|
||||
{
|
||||
GlobalUnlock(hCPage);
|
||||
GlobalFree(hCPage);
|
||||
continue;
|
||||
}
|
||||
|
||||
TCHAR Section[MAX_PATH];
|
||||
_stprintf(Section, TEXT("%s%d"), _T("CODEPAGE_REMOVE_"), uiCPage);
|
||||
if ((uiCPage == GetACP()) || (uiCPage == GetOEMCP()) ||
|
||||
(!SetupFindFirstLine(hIntlInf, Section, _T("AddReg"), &infCont)))
|
||||
{
|
||||
lpCPage->Status |= (0x0001 | 0x0002);
|
||||
}
|
||||
|
||||
lpCPage->NextItem = PCPage;
|
||||
PCPage = lpCPage;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL CALLBACK
|
||||
InstalledCPProc(LPTSTR lpStr)
|
||||
{
|
||||
LPCPAGE lpCP;
|
||||
UINT uiCP;
|
||||
|
||||
lpCP = PCPage;
|
||||
uiCP = _ttol(lpStr);
|
||||
for (;;)
|
||||
{
|
||||
if (!lpCP) break;
|
||||
if (lpCP->CPage == uiCP)
|
||||
{
|
||||
lpCP->Status |= 0x0001;
|
||||
break;
|
||||
}
|
||||
lpCP = lpCP->NextItem;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static VOID
|
||||
InitLangList(HWND hwndDlg)
|
||||
{
|
||||
LPCPAGE lpCPage;
|
||||
INT ItemIndex;
|
||||
HWND hList;
|
||||
|
||||
hList = GetDlgItem(hwndDlg, IDC_CONV_TABLES);
|
||||
|
||||
hIntlInf = SetupOpenInfFile(_T("intl.inf"), NULL, INF_STYLE_WIN4, NULL);
|
||||
|
||||
if (hIntlInf == INVALID_HANDLE_VALUE) return;
|
||||
|
||||
if (!SetupOpenAppendInfFile(NULL, hIntlInf, NULL))
|
||||
{
|
||||
SetupCloseInfFile(hIntlInf);
|
||||
hIntlInf = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GetSupportedCP()) return;
|
||||
|
||||
SetupCloseInfFile(hIntlInf);
|
||||
|
||||
if (!EnumSystemCodePages(InstalledCPProc, CP_INSTALLED)) return;
|
||||
|
||||
LV_COLUMN column;
|
||||
LV_ITEM item;
|
||||
RECT ListRect;
|
||||
|
||||
ZeroMemory(&column, sizeof(LV_COLUMN));
|
||||
column.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
|
||||
column.fmt = LVCFMT_LEFT;
|
||||
GetClientRect(hList, &ListRect);
|
||||
column.cx = ListRect.right - GetSystemMetrics(SM_CYHSCROLL);
|
||||
(VOID) ListView_InsertColumn(hList, 0, &column);
|
||||
|
||||
(VOID) ListView_SetExtendedListViewStyle(hList, LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT);
|
||||
|
||||
lpCPage = PCPage;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (!lpCPage) break;
|
||||
ZeroMemory(&item, sizeof(LV_ITEM));
|
||||
item.mask = LVIF_TEXT|LVIF_PARAM|LVIF_STATE;
|
||||
item.state = 0;
|
||||
item.stateMask = LVIS_STATEIMAGEMASK;
|
||||
item.pszText = lpCPage->Name;
|
||||
item.lParam = (LPARAM)lpCPage;
|
||||
|
||||
ItemIndex = ListView_InsertItem(hList, &item);
|
||||
|
||||
if (ItemIndex >= 0)
|
||||
{
|
||||
if (lpCPage->Status & 0x0001)
|
||||
{
|
||||
ListView_SetItemState(hList, ItemIndex,
|
||||
INDEXTOSTATEIMAGEMASK(LVIS_SELECTED),
|
||||
LVIS_STATEIMAGEMASK);
|
||||
}
|
||||
else
|
||||
{
|
||||
ListView_SetItemState(hList, ItemIndex,
|
||||
INDEXTOSTATEIMAGEMASK(LVIS_FOCUSED),
|
||||
LVIS_STATEIMAGEMASK);
|
||||
}
|
||||
}
|
||||
|
||||
lpCPage = lpCPage->NextItem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Property page dialog callback */
|
||||
INT_PTR CALLBACK
|
||||
AdvancedPageProc(HWND hwndDlg,
|
||||
|
@ -15,7 +178,10 @@ AdvancedPageProc(HWND hwndDlg,
|
|||
switch(uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
break;
|
||||
{
|
||||
InitLangList(hwndDlg);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
|
|
|
@ -50,7 +50,7 @@ BEGIN
|
|||
LTEXT "Тази настройка позволява на неуникод приложенията да показват правилно изборниците и прозорците на присъщия им език. Тя не засяга уникод приложенията, но засяга всички потребители на компютъра.", -1, 14, 18, 216, 33
|
||||
LTEXT "Изберете подходящ език за неуникод приложенията:", -1, 14, 55, 216, 10
|
||||
GROUPBOX "Знаков набор", -1, 6, 92, 233, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 105, 218, 70, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Подразбрани потребителски настройки", -1, 6, 183, 233, 33
|
||||
CHECKBOX "Прилагане на всички настройки за текущия потребител и по подразбиране", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 192, 223, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -50,7 +50,7 @@ BEGIN
|
|||
LTEXT "Diese Einstellung ermöglicht es Unicode-Inkompatiblen Programmen, Menüs und Dialoge in der örtlichen Sprache darzustellen. Dies beeinflusst Unicode-Kompatible Programme nicht, wird aber für alle Nutzer des Computers angewendet.", -1, 14, 18, 223, 33
|
||||
LTEXT "Wählen Sie eine Sprache aus, die der Sprachversion des Programmes entspricht, dass Sie nutzen wollen:", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Codepage Konvertierungstabellen", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 77, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Standardeinstellungen für Benutzerkonten", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Einstellungen &auf das aktive und Standardkonto anwenden.", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -50,7 +50,7 @@ BEGIN
|
|||
LTEXT "This system setting enables non-Unicode programs to display menus and dialogs in their native language. It does not affect Unicode programs, but it does apply to all users of this computer.", -1, 14, 18, 223, 33
|
||||
LTEXT "Select a language to match the language version of the non-Unicode programs you want to use:", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Code page conversion tables", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 77, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Default user account settings", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Apply all settings to the current user account and to the default", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -56,7 +56,7 @@ BEGIN
|
|||
LTEXT "Esta configuración de sistema permite que algunos programas no Unicode muestren menús y diálogos en sus idiomas originales. No afecta a los programas Unicode pero afecta a todos los usuarios de este equipo.", -1, 14, 18, 223, 33
|
||||
LTEXT "Seleccione un idioma que coincida con la versión de idioma de los programas no Unicode que desea utilizar:", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Tablas de conversión de páginas de código", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 77, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Configuración de la cuenta de usuario predeterminada", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Aplicar toda la configuración a la cuenta de usuario actual y al perfil de usuario predeterminado", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -53,7 +53,7 @@ BEGIN
|
|||
LTEXT "Ce paramètre système permet aux programmes non-Unicode d'afficher les menus et les dialogues dans leur langue native. Cela n'affecte pas es programmes Unicode, mais s'applique à tous les utilisateurs de cet ordinateur.", -1, 14, 18, 223, 33
|
||||
LTEXT "Sélectionnez une langue qui corresponde à la version de la langue des programmes que vous voulez utiliser :", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Tables de conversion des pages de code", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 77, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Paramètres du compte de l'utilisateur par défaut ", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Appliquer tous ces paramètres au compte utilisateur actuel et à celui par défaut", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -52,7 +52,7 @@ BEGIN
|
|||
LTEXT "In base a questa impostazione di sistema è possibile visualizzare menù e finestre di dialogo di programmi non Unicode nella lingua di origine. I programmi Unicode resteranno invariati, ma l'impostazione verrà applicata per tutti gli utenti che utilizzano il computer.", -1, 14, 18, 223, 33
|
||||
LTEXT "Selezionare una lingua per i programmi non Unicode da utilizzare:", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Tabella di conversione di tabelle codici", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 77, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Impostazioni account utente predefinito", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Appli&ca tutte le impostazioni all'account utente corrente e al profilo utente predefinito", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -57,7 +57,7 @@ BEGIN
|
|||
LTEXT "Te ustawienia umożliwiają programom bez standardu Unicode wyświetlać menu i dialogi w odpowiednich językach. Nie ma to wpływu na programy Unicode ale dotyczy profili domyślnych.", -1, 14, 18, 223, 33
|
||||
LTEXT "Wybierz taki język, który ma być używany przez programy bez Unicode:", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Tablice konwersji stron kodowych", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 77, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Ustawienia domyślne użytkownika", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Zastosuj ustawienia dla obecnego konta jak i dla profilu domyślnego.", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -51,7 +51,7 @@ BEGIN
|
|||
LTEXT "Этот параметр позволяет программам, не поддерживающим Юникод, отображать меню и диалоги на своем языке. Он не влияет на Юникод-совместимые программы, но применяется для всех пользователей этого компьютера.", -1, 14, 18, 223, 33
|
||||
LTEXT "Выберите язык, соответствующий языку используемых программ, которые не поддерживают Юникод:", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Кодовые страницы таблиц преобразования", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 70, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Параметры для стандартной учетной записи", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Применить эти параметры для текущей учетной записи и для стандартного профиля", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
|
@ -59,7 +59,7 @@ BEGIN
|
|||
LTEXT "Цей системний параметр дає змогу програмам, які не підтримують Юнікод, показувати меню та діалоги рідною мовою. Він не впливає на програми з підтримкою Юнікоду, але застосовується до всіх користувачів цього комп'ютера.", -1, 14, 18, 223, 33
|
||||
LTEXT "Виберіть мову, яка відповідає мовній версії бажаних програм без підтримки Юнікоду.", -1, 14, 55, 223, 18
|
||||
GROUPBOX "Таблиці перетворення кодових сторінок", -1, 5, 101, 234, 88
|
||||
LISTBOX IDC_CONV_TABLES, 14, 114, 217, 77, LBS_STANDARD
|
||||
CONTROL "", IDC_CONV_TABLES, "SysListView32", LVS_REPORT | LVS_SORTASCENDING | LVS_NOCOLUMNHEADER | WS_BORDER | WS_TABSTOP, 14, 114, 217, 70
|
||||
GROUPBOX "Параметри стандартного облікового запису", -1, 5, 193, 234, 30
|
||||
CHECKBOX "Застосувати всі параметри до поточного облікового запису та до стандартного профілю користувача", IDC_APPLY_CUR_USER_DEF_PROFILE, 12, 200, 220, 22, BS_MULTILINE
|
||||
END
|
||||
|
|
Loading…
Reference in a new issue