- Implement editing input methods
- Marking default layout
- Other bugfixes

svn path=/trunk/; revision=72168
This commit is contained in:
Dmitry Chapyshev 2016-08-09 18:26:43 +00:00
parent ecf30d78ed
commit e64e194b5d
25 changed files with 361 additions and 139 deletions

View file

@ -6,29 +6,83 @@
*/
#include "input.h"
#include "locale_list.h"
#include "input_list.h"
INT_PTR CALLBACK
EditDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
EditDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (uMsg)
{
case WM_INITDIALOG:
break;
{
LAYOUT_LIST_NODE *pCurrentLayout;
INPUT_LIST_NODE *pInput;
HWND hwndList;
pInput = (INPUT_LIST_NODE*) lParam;
if (pInput == NULL)
return TRUE;
SetWindowLongPtrW(hwndDlg, GWLP_USERDATA, (LONG_PTR) pInput);
SetWindowTextW(GetDlgItem(hwndDlg, IDC_INPUT_LANG_STR), pInput->pLocale->pszName);
hwndList = GetDlgItem(hwndDlg, IDC_KB_LAYOUT_IME_COMBO);
for (pCurrentLayout = LayoutList_GetFirst();
pCurrentLayout != NULL;
pCurrentLayout = pCurrentLayout->pNext)
{
INT iItemIndex;
iItemIndex = ComboBox_AddString(hwndList, pCurrentLayout->pszName);
ComboBox_SetItemData(hwndList, iItemIndex, pCurrentLayout);
}
ComboBox_SelectString(hwndList, 0, pInput->pLayout->pszName);
}
break;
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDOK:
EndDialog(hDlg, LOWORD(wParam));
break;
{
INPUT_LIST_NODE *pInput;
HWND hwndList;
hwndList = GetDlgItem(hwndDlg, IDC_KB_LAYOUT_IME_COMBO);
pInput = (INPUT_LIST_NODE*) GetWindowLongPtrW(hwndDlg, GWLP_USERDATA);
if (pInput != NULL)
{
LAYOUT_LIST_NODE *pNewLayout;
pNewLayout = (LAYOUT_LIST_NODE*)ComboBox_GetItemData(hwndList,
ComboBox_GetCurSel(hwndList));
if (pNewLayout != NULL)
{
pInput->pLayout = pNewLayout;
pInput->wFlags |= INPUT_LIST_NODE_FLAG_EDITED;
}
}
EndDialog(hwndDlg, LOWORD(wParam));
}
break;
case IDCANCEL:
EndDialog(hDlg, LOWORD(wParam));
break;
{
EndDialog(hwndDlg, LOWORD(wParam));
}
break;
}
}
break;

View file

@ -215,28 +215,37 @@ InputList_AddInputMethodToUserRegistry(DWORD dwIndex, INPUT_LIST_NODE *pNode)
}
}
if (pNode->dwFlags & INPUT_LIST_NODE_FLAG_ADDED)
if ((pNode->wFlags & INPUT_LIST_NODE_FLAG_ADDED) ||
(pNode->wFlags & INPUT_LIST_NODE_FLAG_EDITED))
{
pNode->hkl = LoadKeyboardLayoutW(szPreload, KLF_SUBSTITUTE_OK | KLF_NOTELLSHELL);
}
}
/*
* Writes any changes in input methods to the registry
*/
VOID
InputList_Process(VOID)
{
INPUT_LIST_NODE *pCurrent;
DWORD dwIndex;
/* Process deleted input methods */
/* Process deleted and edited input methods */
for (pCurrent = _InputList; pCurrent != NULL; pCurrent = pCurrent->pNext)
{
if (!(pCurrent->dwFlags & INPUT_LIST_NODE_FLAG_DELETED))
continue;
if (UnloadKeyboardLayout(pCurrent->hkl))
if ((pCurrent->wFlags & INPUT_LIST_NODE_FLAG_DELETED) ||
(pCurrent->wFlags & INPUT_LIST_NODE_FLAG_EDITED))
{
InputList_RemoveNode(pCurrent);
if (UnloadKeyboardLayout(pCurrent->hkl))
{
/* Only unload the edited input method, but does not delete it from the list */
if (!(pCurrent->wFlags & INPUT_LIST_NODE_FLAG_EDITED))
{
InputList_RemoveNode(pCurrent);
}
}
}
}
@ -245,7 +254,7 @@ InputList_Process(VOID)
/* Find default input method */
for (pCurrent = _InputList; pCurrent != NULL; pCurrent = pCurrent->pNext)
{
if (pCurrent->dwFlags & INPUT_LIST_NODE_FLAG_DEFAULT)
if (pCurrent->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT)
{
InputList_AddInputMethodToUserRegistry(1, pCurrent);
break;
@ -273,7 +282,7 @@ InputList_Process(VOID)
for (pCurrent = _InputList; pCurrent != NULL; pCurrent = pCurrent->pNext)
{
if (pCurrent->dwFlags & INPUT_LIST_NODE_FLAG_DEFAULT)
if (pCurrent->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT)
continue;
InputList_AddInputMethodToUserRegistry(dwIndex, pCurrent);
@ -283,7 +292,7 @@ InputList_Process(VOID)
}
VOID
BOOL
InputList_Add(LOCALE_LIST_NODE *pLocale, LAYOUT_LIST_NODE *pLayout)
{
WCHAR szIndicator[MAX_STR_LEN];
@ -291,12 +300,20 @@ InputList_Add(LOCALE_LIST_NODE *pLocale, LAYOUT_LIST_NODE *pLayout)
if (pLocale == NULL || pLayout == NULL)
{
return;
return FALSE;
}
for (pInput = _InputList; pInput != NULL; pInput = pInput->pNext)
{
if (pInput->pLocale == pLocale && pInput->pLayout == pLayout)
{
return FALSE;
}
}
pInput = InputList_AppendNode();
pInput->dwFlags |= INPUT_LIST_NODE_FLAG_ADDED;
pInput->wFlags = INPUT_LIST_NODE_FLAG_ADDED;
pInput->pLocale = pLocale;
pInput->pLayout = pLayout;
@ -314,6 +331,8 @@ InputList_Add(LOCALE_LIST_NODE *pLocale, LAYOUT_LIST_NODE *pLayout)
pInput->pszIndicator = DublicateString(szIndicator);
}
}
return TRUE;
}
@ -329,35 +348,57 @@ InputList_SetDefault(INPUT_LIST_NODE *pNode)
{
if (pCurrent == pNode)
{
pCurrent->dwFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
pCurrent->wFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
}
else
{
pCurrent->dwFlags &= ~INPUT_LIST_NODE_FLAG_DEFAULT;
pCurrent->wFlags &= ~INPUT_LIST_NODE_FLAG_DEFAULT;
}
}
}
/*
* It marks the input method for deletion, but does not delete it directly.
* To apply the changes using InputList_Process()
*/
VOID
InputList_Remove(INPUT_LIST_NODE *pNode)
{
BOOL bRemoveNode = FALSE;
if (pNode == NULL)
return;
pNode->dwFlags |= INPUT_LIST_NODE_FLAG_DELETED;
if (pNode->wFlags & INPUT_LIST_NODE_FLAG_ADDED)
{
/*
* If the input method has been added to the list, but not yet written
* in the registry, then simply remove it from the list
*/
bRemoveNode = TRUE;
}
else
{
pNode->wFlags = INPUT_LIST_NODE_FLAG_DELETED;
}
if (pNode->dwFlags & INPUT_LIST_NODE_FLAG_DEFAULT)
if (pNode->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT)
{
if (pNode->pNext != NULL)
{
pNode->pNext->dwFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
pNode->pNext->wFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
}
else if (pNode->pPrev != NULL)
{
pNode->pPrev->dwFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
pNode->pPrev->wFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
}
}
if (bRemoveNode != FALSE)
{
InputList_RemoveNode(pNode);
}
}
@ -368,7 +409,7 @@ InputList_Create(VOID)
HKL *pLayoutList;
iLayoutCount = GetKeyboardLayoutList(0, NULL);
pLayoutList = (HKL*)malloc(iLayoutCount * sizeof(HKL));
pLayoutList = (HKL*) malloc(iLayoutCount * sizeof(HKL));
if (pLayoutList != NULL)
{
@ -403,7 +444,7 @@ InputList_Create(VOID)
if (pInput->hkl == hklDefault)
{
pInput->dwFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
pInput->wFlags |= INPUT_LIST_NODE_FLAG_DEFAULT;
}
if (GetLocaleInfoW(LOWORD(pInput->pLocale->dwId),

View file

@ -5,20 +5,20 @@
#include "layout_list.h"
#define INPUT_LIST_NODE_FLAG_EDITED 0x00000001
#define INPUT_LIST_NODE_FLAG_ADDED 0x00000002
#define INPUT_LIST_NODE_FLAG_DELETED 0x00000004
#define INPUT_LIST_NODE_FLAG_DEFAULT 0x00000008
#define INPUT_LIST_NODE_FLAG_EDITED 0x0001
#define INPUT_LIST_NODE_FLAG_ADDED 0x0002
#define INPUT_LIST_NODE_FLAG_DELETED 0x0004
#define INPUT_LIST_NODE_FLAG_DEFAULT 0x0008
typedef struct _INPUT_LIST_NODE
{
DWORD dwFlags;
WORD wFlags;
LOCALE_LIST_NODE *pLocale;
LAYOUT_LIST_NODE *pLayout;
HKL hkl;
HKL hkl; /* Only for loaded input methods */
WCHAR *pszIndicator;
@ -33,7 +33,7 @@ InputList_Create(VOID);
VOID
InputList_Process(VOID);
VOID
BOOL
InputList_Add(LOCALE_LIST_NODE *pLocale, LAYOUT_LIST_NODE *pLayout);
VOID

View file

@ -9,7 +9,43 @@
INT_PTR CALLBACK
KeySettingsDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
ChangeKeySeqDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
switch (uMsg)
{
case WM_INITDIALOG:
{
}
break;
case WM_COMMAND:
{
switch (LOWORD(wParam))
{
case IDOK:
{
EndDialog(hwndDlg, LOWORD(wParam));
}
break;
case IDCANCEL:
{
EndDialog(hwndDlg, LOWORD(wParam));
}
break;
}
}
break;
}
return FALSE;
}
INT_PTR CALLBACK
KeySettingsDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(lParam);
@ -22,13 +58,29 @@ KeySettingsDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (LOWORD(wParam))
{
case IDC_CHANGE_KEY_SEQ_BTN:
{
if (DialogBoxW(hApplet,
MAKEINTRESOURCEW(IDD_CHANGE_KEY_SEQ),
hwndDlg,
ChangeKeySeqDialogProc) == IDOK)
{
}
}
break;
case IDOK:
EndDialog(hDlg, LOWORD(wParam));
break;
{
EndDialog(hwndDlg, LOWORD(wParam));
}
break;
case IDCANCEL:
EndDialog(hDlg, LOWORD(wParam));
break;
{
EndDialog(hwndDlg, LOWORD(wParam));
}
break;
}
}
break;

View file

@ -6,10 +6,10 @@ CAPTION "Настройки"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Посочете избраните от вас услуги за всеки посочен в списъка език.\nПромяната на списъка става с „Премахване“ и „Добавяне“.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "&Прилагане на подразбираните", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Добавяне...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "Пре&махване...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "Пре&махване", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Свойства...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Предпочитания", -1, 7, 185, 240, 36
PUSHBUTTON "Настройка на &клавишите...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -11,10 +11,10 @@ CAPTION "Nastavení"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Zvolte služby pro každý vstupní jazyk v seznamu.\nSeznam lze měnit pomocí tlačítek Přidat a Odebrat.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "Nas&tavit výchozí", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Přidat...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Odebrat...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Odebrat", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Vlastnosti...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Předvolby", -1, 7, 185, 240, 36
PUSHBUTTON "&Nastavení kláves...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -6,10 +6,10 @@ CAPTION "Einstellungen"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Wählen Sie die Dienste aus, die Sie für die Eingabesprachen in der Liste verwenden wollen.\nVerwenden Sie ""Hinzufügen"" und ""Entfernen"", um die Liste zu bearbeiten.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "&Als Standard", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Hinzufügen...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "Ent&fernen...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "Ent&fernen", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Eigenschaften...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Einstellungen", -1, 7, 185, 240, 36
PUSHBUTTON "&Tasteneinstellungen...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -6,10 +6,10 @@ CAPTION "Ρυθμίσεις"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Επιλέξτε τις υπηρεσίες που θέλετε για κάθε γλώσσα εισαγωγής που εμφανίζεται στη λίστα.\nΧρησιμοποιήστε τα κουμπιά Προσθήκη και Κατάργηση για την τροποποίηση αυτής της λίστας.", -1, 9, 6, 238, 33
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 42, 237, 95
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 42, 237, 95
PUSHBUTTON "&Set Default", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "Π&ροσθήκη...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Κατάργηση...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Κατάργηση", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Ιδιότητες...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Προτιμήσεις", -1, 7, 185, 240, 36
PUSHBUTTON "&Ρυθμίσεις πλήκτρων...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -6,10 +6,10 @@ CAPTION "Settings"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Select the services that you want for each input language shown in the list.\nUse the Add and Remove buttons to modify this list.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "&Set Default", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "A&dd...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Remove...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Remove", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Properties...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Preferences", -1, 7, 185, 240, 36
PUSHBUTTON "&Key Settings...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -8,10 +8,10 @@ CAPTION "Configuración"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Seleccione los servicios que desea para cada idioma mostrado en la lista. Use los botones de Agregar y Quitar para modificar esta lista.", -1, 9, 6, 238, 17
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 28, 237, 109
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109
PUSHBUTTON "Pr&edeterminado", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "Ag&regar...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Quitar...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Quitar", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Propiedades...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Pre&ferencias ", -1, 7, 185, 240, 36
PUSHBUTTON "C&onfiguración de teclas...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -6,10 +6,10 @@ CAPTION "Paramètres"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Sélectionnez les services que vous désirez pour chaque langue de saisie affichée dans la liste.\nUtilisez les boutons Ajouter et Supprimer pour modifier la liste.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "Par &défaut", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "A&jouter...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "Supp&rimer...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "Supp&rimer", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Propriétés...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Pré&férences", -1, 7, 185, 240, 36
PUSHBUTTON "Para&mètres des touches...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -8,10 +8,10 @@ CAPTION "הגדרות"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Select the services that you want for each input language shown in the list.\nUse the Add and Remove buttons to modify this list.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "קבע כברירת מחדל...", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "הוסף...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "הסר...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "הסר", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "מאפיניים...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "העדפות", -1, 7, 185, 240, 36
PUSHBUTTON "הגדרות מקשים...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -6,10 +6,10 @@ CAPTION "Impostazioni"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Scegliere i servizi desiderati per ognuna delle lingue nella lista.\nUsare Aggiungi e Rimuovi per modificare la lista.", -1, 9, 6, 238, 17
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 28, 237, 109
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109
PUSHBUTTON "&Predefinito", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Aggiungi...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Rimuovi...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Rimuovi", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Proprietà...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Preferenze", -1, 7, 185, 240, 36
PUSHBUTTON "&Impostazioni tasti...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -6,10 +6,10 @@ CAPTION "Innstillinger"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Velg tjenesten som du vil ha for hver inndataspråk som er vist i listen.\nBruk legg til og fjern knappen for å endre denne listen.", -1, 9, 6, 238, 25
CONTROL "TEKST", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "&Sett Standard", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "Le&gg til...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Fjern...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Fjern", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Egenskaper...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Innstillinger", -1, 7, 185, 240, 36
PUSHBUTTON "&Tasteinnstillinger...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -14,10 +14,10 @@ CAPTION "Ustawienia"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Wybierz usługi dla kadego używanego języka z listy.\nListę można modyfikować przyciskami Dodaj i Usuń.", -1, 9, 6, 238, 17
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 28, 237, 109
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109
PUSHBUTTON "&Ustaw domyślne", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Dodaj...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "U&suń...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "U&suń", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Właściwości...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Preferencje", -1, 7, 185, 240, 36
PUSHBUTTON "Us&tawienia klawiszy...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -6,7 +6,7 @@ CAPTION "Configurações"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Selecione os serviços desejados para cada idioma de entrada mostrado na lista. Use os botões 'Adicionar' e 'Remover' para modificar essa lista.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "De&finir padrão", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Adicionar...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Remover", IDC_REMOVE_BUTTON, 101, 142, 70, 14

View file

@ -8,7 +8,7 @@ CAPTION "Configurare"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Gestionați serviciile aferente limbilor de intrare utilizate în sistem. Utilizați butoanele pentru a aduce modificări listei.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "&Restabilește opțiunile implicite", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "A&dăugare…", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Elimină", IDC_REMOVE_BUTTON, 101, 142, 70, 14

View file

@ -6,10 +6,10 @@ CAPTION "Параметры"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Выберите нужные раскладки для каждого языка ввода из списка. Для изменения списка служат кнопки ""Добавить"" и ""Удалить"".", -1, 9, 6, 238, 17
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 28, 237, 109
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109
PUSHBUTTON "Ус&тановить по умолчанию", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Добавить...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Удалить...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Удалить", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Свойства...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Параметры", -1, 7, 185, 240, 36
PUSHBUTTON "&Параметры клавиатуры...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -11,10 +11,10 @@ CAPTION "Nastavenia"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Vyberte služby, ktoré chcete priradiť ku každému vstupnému jazyku uvedenému v zozname.\nPoužite tlačidlá Pridať a Odstrániť k úprave zoznamu.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "Pred&voliť", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Pridať...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "O&dstrániť...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "O&dstrániť", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "Vl&astnosti...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Preferencie", -1, 7, 185, 240, 36
PUSHBUTTON "Nastavenie &klávesov...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -10,10 +10,10 @@ CAPTION "Cilësimet"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Zgjidhni shërbimet që ju dëshironi për çdo gjuhë të dhënash treguar në listë.\nPërdor Shto dhe Hiq butonat për të modifikuar këtë listë.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "&Vendos Parazgjedhur", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "Sh&to...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Hiq...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Hiq", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Karakteristikat...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Preferenca", -1, 7, 185, 240, 36
PUSHBUTTON "&Çeles cilësimesh...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -8,10 +8,10 @@ CAPTION "Ayarlar"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Dizelgede gösterilen tüm giriş dilleri için istediğiniz hizmetleri seçiniz.\nBu dizelgeyi değiştirmek için Ekle veyâ Sil düğmelerini kullanınız.", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "&Ön Tanımlı Yap", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Ekle...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "&Sil...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Sil", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "&Husûsiyetler...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Yeğlemeler", -1, 7, 185, 240, 36
PUSHBUTTON "&Düğme Ayarları...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -14,10 +14,10 @@ CAPTION "Параметри"
FONT 8, "MS Shell Dlg"
BEGIN
LTEXT "Виберіть потрібні розкладки для кожної мови введення зі списку. Для зміни списку використовуйте кнопки ""Додати"" і ""Видалити"".", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "Встановити за замов&чуванням", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "&Додати...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "В&идалити...", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "В&идалити", IDC_REMOVE_BUTTON, 101, 142, 70, 14
PUSHBUTTON "В&ластивості...", IDC_PROP_BUTTON, 175, 142, 70, 14
GROUPBOX "Налаштування", -1, 7, 185, 240, 36
PUSHBUTTON "&Параметри клавіатури...", IDC_KEY_SET_BTN, 14, 198, 110, 14

View file

@ -8,7 +8,7 @@ CAPTION "设置"
FONT 9, "MS Shell Dlg"
BEGIN
LTEXT "为列表中显示的每个输入语言选择服务。\n使用“添加”和“删除”按钮来修改这个列表。", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "设为默认值(&S)", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "添加(&D)...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "删除(&R)", IDC_REMOVE_BUTTON, 101, 142, 70, 14

View file

@ -8,7 +8,7 @@ CAPTION "設定"
FONT 9, "MS Shell Dlg"
BEGIN
LTEXT "為列表中顯示的每個輸入語言選擇服務。\n使用“添加”和“刪除”按鈕來修改這個列表。", -1, 9, 6, 238, 25
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SORTASCENDING | LVS_REPORT | 0x0000808D, 8, 36, 237, 101
CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101
PUSHBUTTON "設為預設值(&S)", IDC_SET_DEFAULT, 101, 159, 144, 14
PUSHBUTTON "添加(&D)...", IDC_ADD_BUTTON, 27, 142, 70, 14
PUSHBUTTON "刪除(&R)", IDC_REMOVE_BUTTON, 101, 142, 70, 14

View file

@ -12,8 +12,10 @@
static HICON
CreateLayoutIcon(LPWSTR szLayout)
CreateLayoutIcon(LPWSTR szLayout, BOOL bIsDefault)
{
INT width = GetSystemMetrics(SM_CXSMICON) * 2;
INT height = GetSystemMetrics(SM_CYSMICON);
HDC hdc;
HDC hdcsrc;
HBITMAP hBitmap;
@ -21,60 +23,83 @@ CreateLayoutIcon(LPWSTR szLayout)
hdcsrc = GetDC(NULL);
hdc = CreateCompatibleDC(hdcsrc);
hBitmap = CreateCompatibleBitmap(hdcsrc,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON));
hBitmap = CreateCompatibleBitmap(hdcsrc, width, height);
ReleaseDC(NULL, hdcsrc);
if (hdc && hBitmap)
{
HBITMAP hBmpNew;
hBmpNew = CreateBitmap(GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
1, 1, NULL);
hBmpNew = CreateBitmap(width, height, 1, 1, NULL);
if (hBmpNew)
{
ICONINFO IconInfo;
HBITMAP hBmpOld;
HFONT hFont;
RECT rect;
LOGFONT lf;
hBmpOld = SelectObject(hdc, hBitmap);
rect.right = GetSystemMetrics(SM_CXSMICON);
rect.left = 0;
rect.bottom = GetSystemMetrics(SM_CYSMICON);
rect.top = 0;
if (SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), &lf, 0))
{
ICONINFO IconInfo;
HFONT hFont;
SetBkColor(hdc, GetSysColor(COLOR_HIGHLIGHT));
SetTextColor(hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
hFont = CreateFontIndirectW(&lf);
ExtTextOut(hdc, rect.left, rect.top, ETO_OPAQUE, &rect, L"", 0, NULL);
if (hFont != NULL)
{
HBITMAP hBmpOld;
hFont = CreateFontW(-11, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, FF_DONTCARE, L"Tahoma");
hBmpOld = SelectObject(hdc, hBitmap);
SelectObject(hdc, hFont);
DrawTextW(hdc, szLayout, 2, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
SelectObject(hdc, hBmpNew);
if (hBmpOld != NULL)
{
RECT rect;
PatBlt(hdc, 0, 0,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
BLACKNESS);
SetRect(&rect, 0, 0, width / 2, height);
SelectObject(hdc, hBmpOld);
if (bIsDefault != FALSE)
{
SetBkColor(hdc, GetSysColor(COLOR_WINDOW));
SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT));
IconInfo.hbmColor = hBitmap;
IconInfo.hbmMask = hBmpNew;
IconInfo.fIcon = TRUE;
ExtTextOutW(hdc, rect.left, rect.top, ETO_OPAQUE, &rect, L"", 0, NULL);
hIcon = CreateIconIndirect(&IconInfo);
SelectObject(hdc, hFont);
DrawTextW(hdc, L"\x25CF", 1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
}
else
{
FillRect(hdc, &rect, GetSysColorBrush(COLOR_WINDOW));
}
SetRect(&rect, width / 2, 0, width, height);
SetBkColor(hdc, GetSysColor(COLOR_HIGHLIGHT));
SetTextColor(hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
ExtTextOutW(hdc, rect.left, rect.top, ETO_OPAQUE, &rect, L"", 0, NULL);
SelectObject(hdc, hFont);
DrawTextW(hdc, szLayout, 2, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
SelectObject(hdc, hBmpNew);
PatBlt(hdc, 0, 0, width, height, BLACKNESS);
SelectObject(hdc, hBmpOld);
IconInfo.hbmColor = hBitmap;
IconInfo.hbmMask = hBmpNew;
IconInfo.fIcon = TRUE;
hIcon = CreateIconIndirect(&IconInfo);
DeleteObject(hBmpOld);
}
DeleteObject(hFont);
}
}
DeleteObject(hBmpNew);
DeleteObject(hBmpOld);
DeleteObject(hFont);
}
}
@ -85,6 +110,15 @@ CreateLayoutIcon(LPWSTR szLayout)
}
static VOID
SetControlsState(HWND hwndDlg, BOOL bIsEnabled)
{
EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE_BUTTON), bIsEnabled);
EnableWindow(GetDlgItem(hwndDlg, IDC_PROP_BUTTON), bIsEnabled);
EnableWindow(GetDlgItem(hwndDlg, IDC_SET_DEFAULT), bIsEnabled);
}
static VOID
AddToInputListView(HWND hwndList, INPUT_LIST_NODE *pInputNode)
{
@ -99,7 +133,8 @@ AddToInputListView(HWND hwndList, INPUT_LIST_NODE *pInputNode)
{
HICON hLayoutIcon;
hLayoutIcon = CreateLayoutIcon(pInputNode->pszIndicator);
hLayoutIcon = CreateLayoutIcon(pInputNode->pszIndicator,
(pInputNode->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT));
if (hLayoutIcon != NULL)
{
@ -110,9 +145,9 @@ AddToInputListView(HWND hwndList, INPUT_LIST_NODE *pInputNode)
memset(&item, 0, sizeof(LV_ITEM));
item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE | LVIF_IMAGE;
item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE;
item.pszText = pInputNode->pLocale->pszName;
item.iItem = -1;
item.iItem = ListView_GetItemCount(hwndList) + 1;
item.lParam = (LPARAM)pInputNode;
item.iImage = ImageIndex;
@ -140,7 +175,7 @@ UpdateInputListView(HWND hwndList)
pCurrentInputNode != NULL;
pCurrentInputNode = pCurrentInputNode->pNext)
{
if (!(pCurrentInputNode->dwFlags & INPUT_LIST_NODE_FLAG_DELETED))
if (!(pCurrentInputNode->wFlags & INPUT_LIST_NODE_FLAG_DELETED))
{
AddToInputListView(hwndList, pCurrentInputNode);
}
@ -185,7 +220,7 @@ OnInitSettingsPage(HWND hwndDlg)
column.pszText = szBuffer;
ListView_InsertColumn(hwndInputList, 1, &column);
hLayoutImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON),
hLayoutImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON) * 2,
GetSystemMetrics(SM_CYSMICON),
ILC_COLOR8 | ILC_MASK, 0, 0);
if (hLayoutImageList != NULL)
@ -195,6 +230,8 @@ OnInitSettingsPage(HWND hwndDlg)
UpdateInputListView(hwndInputList);
}
SetControlsState(hwndDlg, FALSE);
}
@ -236,7 +273,9 @@ OnCommandSettingsPage(HWND hwndDlg, WPARAM wParam)
case IDC_REMOVE_BUTTON:
{
HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST);
HWND hwndList;
hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST);
if (hwndList != NULL)
{
@ -247,8 +286,8 @@ OnCommandSettingsPage(HWND hwndDlg, WPARAM wParam)
if (ListView_GetItem(hwndList, &item) != FALSE)
{
InputList_Remove((INPUT_LIST_NODE*)item.lParam);
UpdateInputListView(GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST));
InputList_Remove((INPUT_LIST_NODE*) item.lParam);
UpdateInputListView(hwndList);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
}
@ -257,20 +296,9 @@ OnCommandSettingsPage(HWND hwndDlg, WPARAM wParam)
case IDC_PROP_BUTTON:
{
if (DialogBoxW(hApplet,
MAKEINTRESOURCEW(IDD_INPUT_LANG_PROP),
hwndDlg,
EditDialogProc) == IDOK)
{
UpdateInputListView(GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST));
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
}
break;
case IDC_SET_DEFAULT:
{
HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST);
HWND hwndList;
hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST);
if (hwndList != NULL)
{
@ -281,14 +309,37 @@ OnCommandSettingsPage(HWND hwndDlg, WPARAM wParam)
if (ListView_GetItem(hwndList, &item) != FALSE)
{
INPUT_LIST_NODE *pSelected;
pSelected = (INPUT_LIST_NODE*) item.lParam;
if (pSelected != NULL)
if (DialogBoxParamW(hApplet,
MAKEINTRESOURCEW(IDD_INPUT_LANG_PROP),
hwndDlg,
EditDialogProc,
item.lParam) == IDOK)
{
InputList_SetDefault(pSelected);
UpdateInputListView(hwndList);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
}
}
}
break;
case IDC_SET_DEFAULT:
{
HWND hwndList;
hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST);
if (hwndList != NULL)
{
LVITEM item = { 0 };
item.mask = LVIF_PARAM;
item.iItem = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED);
if (ListView_GetItem(hwndList, &item) != FALSE)
{
InputList_SetDefault((INPUT_LIST_NODE*) item.lParam);
UpdateInputListView(hwndList);
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
}
}
@ -313,9 +364,33 @@ OnCommandSettingsPage(HWND hwndDlg, WPARAM wParam)
static VOID
OnNotifySettingsPage(HWND hwndDlg, LPARAM lParam)
{
if (((LPPSHNOTIFY)lParam)->hdr.code == PSN_APPLY)
LPNMHDR header;
header = (LPNMHDR)lParam;
switch (header->code)
{
InputList_Process();
case NM_CLICK:
{
if (header->idFrom == IDC_KEYLAYOUT_LIST)
{
if (ListView_GetNextItem(header->hwndFrom, -1, LVNI_SELECTED) != -1)
{
SetControlsState(hwndDlg, TRUE);
}
else
{
SetControlsState(hwndDlg, FALSE);
}
}
}
break;
case PSN_APPLY:
{
InputList_Process();
}
break;
}
}