- Add some functionality

- Small fixes and updates

svn path=/trunk/; revision=31284
This commit is contained in:
Dmitry Chapyshev 2007-12-16 20:02:17 +00:00
parent 137d8c4897
commit 79c2227121
13 changed files with 257 additions and 71 deletions

View file

@ -95,36 +95,27 @@ static
VOID
CreateLanguagesList(HWND hWnd)
{
TCHAR LangSel[256];
//TCHAR LangSel[256];
hLanguageList = hWnd;
EnumSystemLocales(LanguagesEnumProc, LCID_INSTALLED);
LoadString(hApplet,
IDS_SELECTED_LANGUAGE,
LangSel,
256);
SendMessage(hLanguageList,
/*SendMessage(hLanguageList,
CB_SELECTSTRING,
(WPARAM) -1,
(LPARAM)LangSel);
(LPARAM)LangSel);*/
}
static
VOID
SelectCurrentLayout(HWND hWnd)
{
TCHAR Layout[256];
//TCHAR Layout[256];
LoadString(hApplet,
IDS_SELECTED_LAYOUT,
Layout,
256);
SendMessage(hWnd,
/*SendMessage(hWnd,
CB_SELECTSTRING,
(WPARAM) -1,
(LPARAM)Layout);
(LPARAM)Layout);*/
}
INT_PTR CALLBACK

View file

@ -233,14 +233,19 @@ STRINGTABLE
BEGIN
IDS_CPLSYSTEMNAME "Словесни услуги и езици на въвеждане"
IDS_CPLSYSTEMDESCRIPTION "Нагласяване на настройките за езиците на въвеждане."
IDS_KEYBOARD "Keyboard"
IDS_ADV_TEXT_SRV "Advanced Text Services"
IDS_NONE "(None)"
IDS_UNKNOWN "(Unknown)"
IDS_RESTART "Do you want to restart your computer now?"
IDS_SPEECH "Speech"
IDS_HRD_REC "Handwriting Recognition"
IDS_OFF_ADV_TXT_SRV "Do you want to turn off advanced text services?"
IDS_WHATS_THIS "What's This?"
END
STRINGTABLE
BEGIN
//Selected language on "&Äîáàâÿíå åçèê íà âúâåæäàíå"
IDS_SELECTED_LANGUAGE "English (United States)"
//Selected keyboard layout on "&Äîáàâÿíå åçèê íà âúâåæäàíå"
IDS_SELECTED_LAYOUT, "ÑÀÙ- Äâîðàê"
IDS_US_LAYOUT, "САЩ"
IDS_BELGIAN_LAYOUT, "Белгийска (точка)"
IDS_BELGIAN_FRENCH_LAYOUT, "Белгийска за френски"

View file

@ -233,14 +233,19 @@ STRINGTABLE
BEGIN
IDS_CPLSYSTEMNAME "Textdienste und Eingabesprachen"
IDS_CPLSYSTEMDESCRIPTION "Ändert die Einstellungen der Texteingabe einer Sprache."
IDS_KEYBOARD "Keyboard"
IDS_ADV_TEXT_SRV "Advanced Text Services"
IDS_NONE "(None)"
IDS_UNKNOWN "(Unknown)"
IDS_RESTART "Do you want to restart your computer now?"
IDS_SPEECH "Speech"
IDS_HRD_REC "Handwriting Recognition"
IDS_OFF_ADV_TXT_SRV "Do you want to turn off advanced text services?"
IDS_WHATS_THIS "What's This?"
END
STRINGTABLE
BEGIN
//Selected language on "Add Input language"
IDS_SELECTED_LANGUAGE "English (United States)"
//Selected keyboard layout on "Add Input language"
IDS_SELECTED_LAYOUT, "United States-Dvorak"
IDS_US_LAYOUT, "US"
IDS_BELGIAN_LAYOUT, "Belgisch (Punkt)"
IDS_BELGIAN_FRENCH_LAYOUT, "Belgisch (Wallonisch)"

View file

@ -233,14 +233,19 @@ STRINGTABLE
BEGIN
IDS_CPLSYSTEMNAME "Text Services and Input Languages"
IDS_CPLSYSTEMDESCRIPTION "Customizes settings for text input of languages."
IDS_KEYBOARD "Keyboard"
IDS_ADV_TEXT_SRV "Advanced Text Services"
IDS_NONE "(None)"
IDS_UNKNOWN "(Unknown)"
IDS_RESTART "Do you want to restart your computer now?"
IDS_SPEECH "Speech"
IDS_HRD_REC "Handwriting Recognition"
IDS_OFF_ADV_TXT_SRV "Do you want to turn off advanced text services?"
IDS_WHATS_THIS "What's This?"
END
STRINGTABLE
BEGIN
//Selected language on "Add Input language"
IDS_SELECTED_LANGUAGE "English (United States)"
//Selected keyboard layout on "Add Input language"
IDS_SELECTED_LAYOUT, "United States-Dvorak"
IDS_US_LAYOUT, "US"
IDS_BELGIAN_LAYOUT, "Belgian (Period)"
IDS_BELGIAN_FRENCH_LAYOUT, "Belgian French"

View file

@ -233,16 +233,21 @@ STRINGTABLE
BEGIN
IDS_CPLSYSTEMNAME "Services texte et langue de saisie"
IDS_CPLSYSTEMDESCRIPTION "Personnalise les paramètres pour la langue de saisie de texte."
IDS_KEYBOARD "Keyboard"
IDS_ADV_TEXT_SRV "Advanced Text Services"
IDS_NONE "(None)"
IDS_UNKNOWN "(Unknown)"
IDS_RESTART "Do you want to restart your computer now?"
IDS_SPEECH "Speech"
IDS_HRD_REC "Handwriting Recognition"
IDS_OFF_ADV_TXT_SRV "Do you want to turn off advanced text services?"
IDS_WHATS_THIS "What's This?"
END
/* FIXME : To improve/complete */
/* FIXME : À améliorer/compléter */
STRINGTABLE
BEGIN
//Selected language on "Add Input language"
IDS_SELECTED_LANGUAGE "Anglais (États-Unis)"
//Selected keyboard layout on "Add Input language"
IDS_SELECTED_LAYOUT, "États-Unis-Dvorak"
IDS_US_LAYOUT, "US"
IDS_BELGIAN_LAYOUT, "Belge (Period)"
IDS_BELGIAN_FRENCH_LAYOUT, "Belge Français"

View file

@ -220,7 +220,7 @@ END
IDD_INPUT_LANG_PROP DIALOG 20, 20, 227, 75
STYLE DS_SETFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION
CAPTION "Ñâîéñòâà ââîäà"
CAPTION "Ïàðàìåòðû ââîäà"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "ßçûê ââîäà:", -1, 7, 7, 61, 8
@ -234,15 +234,20 @@ END
STRINGTABLE
BEGIN
IDS_CPLSYSTEMNAME "Òåêñòîâûå ñåðâèñû è ââîä ÿçûêîâ"
IDS_CPLSYSTEMDESCRIPTION "Äîïîëíèòåëüíûå óñòàíîâêè òåêñòîâîãî ââîäà ÿçûêîâ."
IDS_CPLSYSTEMDESCRIPTION "Äîïîëíèòåëüíûå ïàðàìåòðû òåêñòîâîãî ââîäà ÿçûêîâ."
IDS_KEYBOARD "Êëàâèàòóðà"
IDS_ADV_TEXT_SRV "Advanced Text Services"
IDS_NONE "(None)"
IDS_UNKNOWN "(Unknown)"
IDS_RESTART "Do you want to restart your computer now?"
IDS_SPEECH "Speech"
IDS_HRD_REC "Handwriting Recognition"
IDS_OFF_ADV_TXT_SRV "Do you want to turn off advanced text services?"
IDS_WHATS_THIS "What's This?"
END
STRINGTABLE
BEGIN
//Selected language on "Add Input language"
IDS_SELECTED_LANGUAGE "English (United States)"
//Selected keyboard layout on "Add Input language"
IDS_SELECTED_LAYOUT, "United States-Dvorak"
IDS_US_LAYOUT, "US"
IDS_BELGIAN_LAYOUT, "Belgian (Period)"
IDS_BELGIAN_FRENCH_LAYOUT, "Belgian French"

View file

@ -242,14 +242,19 @@ STRINGTABLE
BEGIN
IDS_CPLSYSTEMNAME "Ìîâè òà ñëóæáè òåêñòîâîãî ââîäó"
IDS_CPLSYSTEMDESCRIPTION "Íàëàøòîâóº ïàðàìåòðè äëÿ òåêñòîâîãî ââîäó."
IDS_KEYBOARD "Keyboard"
IDS_ADV_TEXT_SRV "Advanced Text Services"
IDS_NONE "(None)"
IDS_UNKNOWN "(Unknown)"
IDS_RESTART "Do you want to restart your computer now?"
IDS_SPEECH "Speech"
IDS_HRD_REC "Handwriting Recognition"
IDS_OFF_ADV_TXT_SRV "Do you want to turn off advanced text services?"
IDS_WHATS_THIS "What's This?"
END
STRINGTABLE
BEGIN
//Selected language on "Add Input language" ("Äîäàâàííÿ ìîâè ââîäó")
IDS_SELECTED_LANGUAGE "English (United States)"
//Selected keyboard layout on "Add Input language" ("Äîäàâàííÿ ìîâè ââîäó")
IDS_SELECTED_LAYOUT, "United States-Dvorak"
IDS_US_LAYOUT, "ÑØÀ"
IDS_BELGIAN_LAYOUT, "Áåëüã³éñüêà (³ç êðàïêîþ)"
IDS_BELGIAN_FRENCH_LAYOUT, "Ôðàíöóçüêà (Áåëüã³ÿ)"

View file

@ -79,7 +79,16 @@
/* IDS */
#define IDS_CPLSYSTEMNAME 1
#define IDS_CPLSYSTEMDESCRIPTION 2
#define IDS_KEYBOARD 3
#define IDS_ADV_TEXT_SRV 4
#define IDS_NONE 5
#define IDS_UNKNOWN 6
#define IDS_RESTART 7
#define IDS_SPEECH 8
#define IDS_HRD_REC 9
#define IDS_OFF_ADV_TXT_SRV 10
#define IDS_WHATS_THIS 11
/* Layouts */
#define IDS_US_LAYOUT 5000
#define IDS_BELGIAN_LAYOUT 5001
#define IDS_BELGIAN_FRENCH_LAYOUT 5002
@ -213,9 +222,6 @@
#define IDS_BULGARIAN_PHONETIC_CLASSIC_LAYOUT 5134
#define IDS_BULGARIAN_PHONETIC_BDS_LAYOUT 5135
#define IDS_SELECTED_LAYOUT 6000
#define IDS_SELECTED_LANGUAGE 6001
#endif /* __CPL_RESOURCE_H */
/* EOF */

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -39,27 +39,120 @@
#include "resource.h"
#include "input.h"
#define BUFSIZE 80
#define BUFSIZE 256
static
BOOL
CreateDefaultLangList(HWND hWnd)
static BOOL
GetLayoutName(LPCTSTR lcid, LPCTSTR name)
{
HKEY hKey;
TCHAR szPreload[BUFSIZE];
TCHAR szCount[BUFSIZE];
TCHAR Lang[BUFSIZE];
DWORD dwBufLen;
DWORD dwBufCLen;
DWORD cValues;
LONG lRet;
TCHAR szBuf[BUFSIZE];
_stprintf(szBuf, L"SYSTEM\\ControlSet001\\Control\\Keyboard Layouts\\%s",lcid);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, (LPCTSTR)szBuf, 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
dwBufLen = BUFSIZE;
if (RegQueryValueEx(hKey,L"Layout Text",NULL,NULL,(LPBYTE)name,&dwBufLen) == ERROR_SUCCESS)
{
RegCloseKey(hKey);
return TRUE;
}
}
return FALSE;
}
static BOOL
TreeView_GetItemText(HWND hTree, HTREEITEM hItem, LPTSTR name, DWORD buf)
{
TVITEM tv = {0};
tv.mask = TVIF_TEXT | TVIF_HANDLE;
tv.hItem = hItem;
tv.pszText = name;
tv.cchTextMax = (int)buf;
return TreeView_GetItem(hTree, &tv);
}
static HTREEITEM
GetRootHandle(HWND hWnd, TCHAR * Name)
{
HTREEITEM hNext = 0, hRoot;
TCHAR Tmp[256];
HWND hTree;
DWORD i, count;
HKEY hKey;
hTree = GetDlgItem(hWnd, IDC_KEYLAYOUT_TREE);
hRoot = TreeView_GetRoot(hTree);
RegOpenKeyEx(HKEY_CURRENT_USER, L"Keyboard Layout\\Preload", 0, KEY_QUERY_VALUE, &hKey);
RegQueryInfoKey(hKey,NULL,NULL,NULL,NULL,NULL,NULL,&count,NULL,NULL,NULL,NULL);
RegCloseKey(hKey);
for (i = 0; i < count; i++)
{
if (i == 0)
{
(VOID) TreeView_GetItemText(hTree, hRoot, (LPTSTR)Tmp, 256);
}
else
{
if (i == 1)
{
hNext = TreeView_GetNextItem(hTree, hRoot, TVGN_NEXT);
}
else
{
hNext = TreeView_GetNextItem(hTree, hNext, TVGN_NEXT);
}
(VOID) TreeView_GetItemText(hTree, hNext, (LPTSTR)Tmp, 256);
}
if (_tcscmp(Name,Tmp) == 0)
{
if (i == 0) return hRoot;
return hNext;
}
}
return 0;
}
static BOOL
InitDefaultLangList(HWND hWnd)
{
HKEY hKey, hSubKey;
TCHAR szPreload[BUFSIZE], szCount[BUFSIZE], szSub[BUFSIZE];
TCHAR szName[BUFSIZE], Lang[BUFSIZE];
DWORD dwBufLen, dwBufCLen, cValues;
INT Count;
LCID Lcid;
TV_INSERTSTRUCT inc;
HWND TWwnd;
int Index[3];
HIMAGELIST hImgList;
HICON hIcon;
if (RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Keyboard Layout\\Preload"), 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS)
{
ZeroMemory(&inc, sizeof(TV_INSERTSTRUCT));
inc.hInsertAfter = TVI_LAST;
inc.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE;
inc.hParent = TVI_ROOT;
hImgList = ImageList_Create(16,16,ILC_COLOR8 | ILC_MASK,5,5);
hIcon = LoadImage(hApplet,MAKEINTRESOURCE(IDI_KEYBOARD_ICO),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
Index[0] = ImageList_AddIcon(hImgList,hIcon);
hIcon = LoadImage(hApplet,MAKEINTRESOURCE(IDI_MARKER_ICO),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
Index[1] = ImageList_AddIcon(hImgList,hIcon);
hIcon = LoadImage(hApplet,MAKEINTRESOURCE(IDI_INFO_ICO),IMAGE_ICON,16,16,LR_DEFAULTCOLOR);
Index[2] = ImageList_AddIcon(hImgList,hIcon);
DestroyIcon(hIcon);
TWwnd = GetDlgItem(hWnd, IDC_KEYLAYOUT_TREE);
if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Keyboard Layout\\Preload", 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS)
return FALSE;
}
RegQueryInfoKey(hKey,NULL,NULL,NULL,NULL,NULL,NULL,&cValues,NULL,NULL,NULL,NULL);
@ -67,32 +160,98 @@ CreateDefaultLangList(HWND hWnd)
{
for (Count = 0; Count < cValues; Count++)
{
szCount[0] = TEXT('\0');
szCount[0] = L'\0';
dwBufCLen = BUFSIZE;
lRet = RegEnumValue(hKey,Count,(LPTSTR)szCount,&dwBufCLen,NULL,NULL,NULL,NULL);
RegEnumValue(hKey,Count,(LPTSTR)szCount,&dwBufCLen,NULL,NULL,NULL,NULL);
_stprintf(szCount,TEXT("%d"),Count + 1);
_stprintf(szCount,L"%d",Count + 1);
dwBufLen = BUFSIZE;
RegQueryValueEx(hKey,(LPTSTR)szCount,NULL,NULL,(LPBYTE)szPreload,&dwBufLen);
Lcid = _tcstoul(szPreload, NULL, 16);
/* FIXME: If it is established more than one English layouts of the keyboard it is incorrectly determined Lang */
GetLocaleInfo(Lcid, LOCALE_SLANGUAGE, (LPTSTR)Lang, sizeof(Lang));
SendMessage(hWnd,
CB_ADDSTRING,
0,
(LPARAM)Lang);
if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Keyboard Layout\\Substitutes", 0, KEY_QUERY_VALUE, &hSubKey) != ERROR_SUCCESS)
return FALSE;
dwBufLen = BUFSIZE;
TCHAR szLOName[BUFSIZE], szBuf[BUFSIZE];
LONG Ret;
HTREEITEM hRoot = 0, hKeyBrd = 0, hParent;
Ret = RegQueryValueEx(hSubKey,(LPCTSTR)szPreload,NULL,NULL,(LPBYTE)szSub,&dwBufLen);
if (Ret == ERROR_SUCCESS) _tcscpy(szPreload, szSub);
GetLayoutName(szPreload,szLOName);
hParent = GetRootHandle(hWnd, Lang);
if (hParent == 0)
{
inc.hParent = NULL;
inc.item.pszText = Lang;
inc.item.iImage = Index[2];
inc.item.iSelectedImage = Index[2];
if (Count == 0)
{
inc.item.state = TVIS_BOLD;
inc.item.stateMask = TVIS_BOLD;
}
else
{
inc.item.state = !TVIS_BOLD;
inc.item.stateMask = !TVIS_BOLD;
}
hRoot = TreeView_InsertItem(TWwnd, &inc);
if (Count == 0) (VOID) TreeView_SelectItem(TWwnd, hRoot);
LoadString(hApplet, IDS_KEYBOARD, (LPTSTR)szBuf, BUFSIZE);
inc.hParent = hRoot;
inc.item.pszText = szBuf;
inc.item.iImage = Index[0];
inc.item.iSelectedImage = Index[0];
inc.item.state = !TVIS_BOLD;
inc.item.stateMask = !TVIS_BOLD;
hKeyBrd = TreeView_InsertItem(TWwnd, &inc);
inc.hParent = hKeyBrd;
}
else
{
inc.hParent = TreeView_GetChild(TWwnd, hParent);
}
inc.item.pszText = szLOName;
inc.item.iImage = Index[1];
inc.item.iSelectedImage = Index[1];
if (Count == 0)
{
SendMessage(hWnd,
CB_SELECTSTRING,
(WPARAM)-1,
(LPARAM)Lang);
inc.item.state = TVIS_BOLD;
inc.item.stateMask = TVIS_BOLD;
}
}
else
{
inc.item.state = !TVIS_BOLD;
inc.item.stateMask = !TVIS_BOLD;
}
(VOID) TreeView_InsertItem(TWwnd, &inc);
(VOID) TreeView_SetImageList(TWwnd, hImgList, TVSIL_NORMAL);
(VOID) TreeView_Expand(TWwnd, hRoot, TVM_EXPAND);
(VOID) TreeView_Expand(TWwnd, hKeyBrd, TVM_EXPAND);
_stprintf(szName,L"%s - %s",Lang,szLOName);
RegCloseKey(hSubKey);
HWND CBwnd;
CBwnd = GetDlgItem(hWnd, IDC_DEFAULT_INPUT_LANG);
SendMessage(CBwnd,CB_ADDSTRING,0,(LPARAM)szName);
SendMessage(CBwnd,CB_SETITEMDATA,0,(LPARAM)Lcid);
if (Count == 0)
SendMessage(CBwnd,CB_SELECTSTRING,(WPARAM)-1,(LPARAM)szName);
}
}
RegCloseKey(hKey);
@ -109,7 +268,7 @@ SettingPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
switch (uMsg)
{
case WM_INITDIALOG:
CreateDefaultLangList(GetDlgItem(hwndDlg, IDC_DEFAULT_INPUT_LANG));
InitDefaultLangList(hwndDlg);
break;
case WM_COMMAND: