- Add some functionality
- Small fixes and updates svn path=/trunk/; revision=31284
|
@ -95,36 +95,27 @@ static
|
||||||
VOID
|
VOID
|
||||||
CreateLanguagesList(HWND hWnd)
|
CreateLanguagesList(HWND hWnd)
|
||||||
{
|
{
|
||||||
TCHAR LangSel[256];
|
//TCHAR LangSel[256];
|
||||||
|
|
||||||
hLanguageList = hWnd;
|
hLanguageList = hWnd;
|
||||||
EnumSystemLocales(LanguagesEnumProc, LCID_INSTALLED);
|
EnumSystemLocales(LanguagesEnumProc, LCID_INSTALLED);
|
||||||
|
|
||||||
LoadString(hApplet,
|
/*SendMessage(hLanguageList,
|
||||||
IDS_SELECTED_LANGUAGE,
|
|
||||||
LangSel,
|
|
||||||
256);
|
|
||||||
|
|
||||||
SendMessage(hLanguageList,
|
|
||||||
CB_SELECTSTRING,
|
CB_SELECTSTRING,
|
||||||
(WPARAM) -1,
|
(WPARAM) -1,
|
||||||
(LPARAM)LangSel);
|
(LPARAM)LangSel);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
VOID
|
VOID
|
||||||
SelectCurrentLayout(HWND hWnd)
|
SelectCurrentLayout(HWND hWnd)
|
||||||
{
|
{
|
||||||
TCHAR Layout[256];
|
//TCHAR Layout[256];
|
||||||
|
|
||||||
LoadString(hApplet,
|
/*SendMessage(hWnd,
|
||||||
IDS_SELECTED_LAYOUT,
|
|
||||||
Layout,
|
|
||||||
256);
|
|
||||||
SendMessage(hWnd,
|
|
||||||
CB_SELECTSTRING,
|
CB_SELECTSTRING,
|
||||||
(WPARAM) -1,
|
(WPARAM) -1,
|
||||||
(LPARAM)Layout);
|
(LPARAM)Layout);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
INT_PTR CALLBACK
|
INT_PTR CALLBACK
|
||||||
|
|
|
@ -233,14 +233,19 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLSYSTEMNAME "Словесни услуги и езици на въвеждане"
|
IDS_CPLSYSTEMNAME "Словесни услуги и езици на въвеждане"
|
||||||
IDS_CPLSYSTEMDESCRIPTION "Нагласяване на настройките за езиците на въвеждане."
|
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
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
//Selected language on "&Äîáàâÿíå åçèê íà âúâåæäàíå"
|
|
||||||
IDS_SELECTED_LANGUAGE "English (United States)"
|
|
||||||
//Selected keyboard layout on "&Äîáàâÿíå åçèê íà âúâåæäàíå"
|
|
||||||
IDS_SELECTED_LAYOUT, "ÑÀÙ- Äâîðàê"
|
|
||||||
IDS_US_LAYOUT, "САЩ"
|
IDS_US_LAYOUT, "САЩ"
|
||||||
IDS_BELGIAN_LAYOUT, "Белгийска (точка)"
|
IDS_BELGIAN_LAYOUT, "Белгийска (точка)"
|
||||||
IDS_BELGIAN_FRENCH_LAYOUT, "Белгийска за френски"
|
IDS_BELGIAN_FRENCH_LAYOUT, "Белгийска за френски"
|
||||||
|
|
|
@ -233,14 +233,19 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLSYSTEMNAME "Textdienste und Eingabesprachen"
|
IDS_CPLSYSTEMNAME "Textdienste und Eingabesprachen"
|
||||||
IDS_CPLSYSTEMDESCRIPTION "Ändert die Einstellungen der Texteingabe einer Sprache."
|
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
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
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_US_LAYOUT, "US"
|
||||||
IDS_BELGIAN_LAYOUT, "Belgisch (Punkt)"
|
IDS_BELGIAN_LAYOUT, "Belgisch (Punkt)"
|
||||||
IDS_BELGIAN_FRENCH_LAYOUT, "Belgisch (Wallonisch)"
|
IDS_BELGIAN_FRENCH_LAYOUT, "Belgisch (Wallonisch)"
|
||||||
|
|
|
@ -233,14 +233,19 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLSYSTEMNAME "Text Services and Input Languages"
|
IDS_CPLSYSTEMNAME "Text Services and Input Languages"
|
||||||
IDS_CPLSYSTEMDESCRIPTION "Customizes settings for text input of 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
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
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_US_LAYOUT, "US"
|
||||||
IDS_BELGIAN_LAYOUT, "Belgian (Period)"
|
IDS_BELGIAN_LAYOUT, "Belgian (Period)"
|
||||||
IDS_BELGIAN_FRENCH_LAYOUT, "Belgian French"
|
IDS_BELGIAN_FRENCH_LAYOUT, "Belgian French"
|
||||||
|
|
|
@ -233,16 +233,21 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLSYSTEMNAME "Services texte et langue de saisie"
|
IDS_CPLSYSTEMNAME "Services texte et langue de saisie"
|
||||||
IDS_CPLSYSTEMDESCRIPTION "Personnalise les paramètres pour la langue de saisie de texte."
|
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
|
END
|
||||||
|
|
||||||
/* FIXME : To improve/complete */
|
/* FIXME : To improve/complete */
|
||||||
/* FIXME : À améliorer/compléter */
|
/* FIXME : À améliorer/compléter */
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
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_US_LAYOUT, "US"
|
||||||
IDS_BELGIAN_LAYOUT, "Belge (Period)"
|
IDS_BELGIAN_LAYOUT, "Belge (Period)"
|
||||||
IDS_BELGIAN_FRENCH_LAYOUT, "Belge Français"
|
IDS_BELGIAN_FRENCH_LAYOUT, "Belge Français"
|
||||||
|
|
|
@ -220,7 +220,7 @@ END
|
||||||
|
|
||||||
IDD_INPUT_LANG_PROP DIALOG 20, 20, 227, 75
|
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
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_NOIDLEMSG | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUPWINDOW | WS_VISIBLE | WS_CAPTION
|
||||||
CAPTION "Ñâîéñòâà ââîäà"
|
CAPTION "Ïàðàìåòðû ââîäà"
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "ßçûê ââîäà:", -1, 7, 7, 61, 8
|
LTEXT "ßçûê ââîäà:", -1, 7, 7, 61, 8
|
||||||
|
@ -234,15 +234,20 @@ END
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLSYSTEMNAME "Òåêñòîâûå ñåðâèñû è ââîä ÿçûêîâ"
|
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
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
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_US_LAYOUT, "US"
|
||||||
IDS_BELGIAN_LAYOUT, "Belgian (Period)"
|
IDS_BELGIAN_LAYOUT, "Belgian (Period)"
|
||||||
IDS_BELGIAN_FRENCH_LAYOUT, "Belgian French"
|
IDS_BELGIAN_FRENCH_LAYOUT, "Belgian French"
|
||||||
|
|
|
@ -242,14 +242,19 @@ STRINGTABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
IDS_CPLSYSTEMNAME "Ìîâè òà ñëóæáè òåêñòîâîãî ââîäó"
|
IDS_CPLSYSTEMNAME "Ìîâè òà ñëóæáè òåêñòîâîãî ââîäó"
|
||||||
IDS_CPLSYSTEMDESCRIPTION "Íàëàøòîâóº ïàðàìåòðè äëÿ òåêñòîâîãî ââîäó."
|
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
|
END
|
||||||
|
|
||||||
STRINGTABLE
|
STRINGTABLE
|
||||||
BEGIN
|
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_US_LAYOUT, "ÑØÀ"
|
||||||
IDS_BELGIAN_LAYOUT, "Áåëüã³éñüêà (³ç êðàïêîþ)"
|
IDS_BELGIAN_LAYOUT, "Áåëüã³éñüêà (³ç êðàïêîþ)"
|
||||||
IDS_BELGIAN_FRENCH_LAYOUT, "Ôðàíöóçüêà (Áåëüã³ÿ)"
|
IDS_BELGIAN_FRENCH_LAYOUT, "Ôðàíöóçüêà (Áåëüã³ÿ)"
|
||||||
|
|
|
@ -79,7 +79,16 @@
|
||||||
/* IDS */
|
/* IDS */
|
||||||
#define IDS_CPLSYSTEMNAME 1
|
#define IDS_CPLSYSTEMNAME 1
|
||||||
#define IDS_CPLSYSTEMDESCRIPTION 2
|
#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_US_LAYOUT 5000
|
||||||
#define IDS_BELGIAN_LAYOUT 5001
|
#define IDS_BELGIAN_LAYOUT 5001
|
||||||
#define IDS_BELGIAN_FRENCH_LAYOUT 5002
|
#define IDS_BELGIAN_FRENCH_LAYOUT 5002
|
||||||
|
@ -213,9 +222,6 @@
|
||||||
#define IDS_BULGARIAN_PHONETIC_CLASSIC_LAYOUT 5134
|
#define IDS_BULGARIAN_PHONETIC_CLASSIC_LAYOUT 5134
|
||||||
#define IDS_BULGARIAN_PHONETIC_BDS_LAYOUT 5135
|
#define IDS_BULGARIAN_PHONETIC_BDS_LAYOUT 5135
|
||||||
|
|
||||||
#define IDS_SELECTED_LAYOUT 6000
|
|
||||||
#define IDS_SELECTED_LANGUAGE 6001
|
|
||||||
|
|
||||||
#endif /* __CPL_RESOURCE_H */
|
#endif /* __CPL_RESOURCE_H */
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 318 B After Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
@ -39,27 +39,120 @@
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
|
|
||||||
#define BUFSIZE 80
|
#define BUFSIZE 256
|
||||||
|
|
||||||
static
|
static BOOL
|
||||||
BOOL
|
GetLayoutName(LPCTSTR lcid, LPCTSTR name)
|
||||||
CreateDefaultLangList(HWND hWnd)
|
|
||||||
{
|
{
|
||||||
HKEY hKey;
|
HKEY hKey;
|
||||||
TCHAR szPreload[BUFSIZE];
|
|
||||||
TCHAR szCount[BUFSIZE];
|
|
||||||
TCHAR Lang[BUFSIZE];
|
|
||||||
DWORD dwBufLen;
|
DWORD dwBufLen;
|
||||||
DWORD dwBufCLen;
|
TCHAR szBuf[BUFSIZE];
|
||||||
DWORD cValues;
|
|
||||||
LONG lRet;
|
_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;
|
INT Count;
|
||||||
LCID Lcid;
|
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;
|
return FALSE;
|
||||||
}
|
|
||||||
|
|
||||||
RegQueryInfoKey(hKey,NULL,NULL,NULL,NULL,NULL,NULL,&cValues,NULL,NULL,NULL,NULL);
|
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++)
|
for (Count = 0; Count < cValues; Count++)
|
||||||
{
|
{
|
||||||
szCount[0] = TEXT('\0');
|
szCount[0] = L'\0';
|
||||||
|
|
||||||
dwBufCLen = BUFSIZE;
|
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;
|
dwBufLen = BUFSIZE;
|
||||||
RegQueryValueEx(hKey,(LPTSTR)szCount,NULL,NULL,(LPBYTE)szPreload,&dwBufLen);
|
RegQueryValueEx(hKey,(LPTSTR)szCount,NULL,NULL,(LPBYTE)szPreload,&dwBufLen);
|
||||||
|
|
||||||
Lcid = _tcstoul(szPreload, NULL, 16);
|
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));
|
GetLocaleInfo(Lcid, LOCALE_SLANGUAGE, (LPTSTR)Lang, sizeof(Lang));
|
||||||
|
|
||||||
SendMessage(hWnd,
|
if (RegOpenKeyEx(HKEY_CURRENT_USER, L"Keyboard Layout\\Substitutes", 0, KEY_QUERY_VALUE, &hSubKey) != ERROR_SUCCESS)
|
||||||
CB_ADDSTRING,
|
return FALSE;
|
||||||
0,
|
|
||||||
(LPARAM)Lang);
|
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)
|
if (Count == 0)
|
||||||
{
|
{
|
||||||
SendMessage(hWnd,
|
inc.item.state = TVIS_BOLD;
|
||||||
CB_SELECTSTRING,
|
inc.item.stateMask = TVIS_BOLD;
|
||||||
(WPARAM)-1,
|
|
||||||
(LPARAM)Lang);
|
|
||||||
}
|
}
|
||||||
}
|
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);
|
RegCloseKey(hKey);
|
||||||
|
@ -109,7 +268,7 @@ SettingPageProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
|
||||||
switch (uMsg)
|
switch (uMsg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
CreateDefaultLangList(GetDlgItem(hwndDlg, IDC_DEFAULT_INPUT_LANG));
|
InitDefaultLangList(hwndDlg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_COMMAND:
|
case WM_COMMAND:
|
||||||
|
|