Reactos

[CPL][INPUT] Make the ListView a TreeView (#4726)

- Make the list a TreeView.
- Modify IDD_PROPPAGESETTINGS resource dialog for UI compatibility.

authored by

Katayama Hirofumi MZ and committed by
GitHub
5f4bb73e f0e13157

+806 -378
+2
dll/cpl/input/input.rc
··· 13 13 #include <reactos/version.rc> 14 14 15 15 IDI_CPLSYSTEM ICON "resources/keyboard-shortcuts.ico" 16 + IDI_KEYBOARD ICON "resources/keyboard.ico" 17 + IDI_DOT ICON "resources/dot.ico" 16 18 17 19 #include <reactos/manifest_hosted.rc> 18 20
+113 -3
dll/cpl/input/input_list.c
··· 7 7 */ 8 8 9 9 #include "input_list.h" 10 + #define NOTHING 10 11 11 12 typedef struct 12 13 { ··· 154 155 /* Find last node */ 155 156 for (pCurrent = _InputList; pCurrent->pNext; pCurrent = pCurrent->pNext) 156 157 { 157 - ; 158 + NOTHING; 158 159 } 159 160 160 161 /* Add to the end */ ··· 568 569 * It marks the input method for deletion, but does not delete it directly. 569 570 * To apply the changes using InputList_Process() 570 571 */ 571 - VOID 572 + BOOL 572 573 InputList_Remove(INPUT_LIST_NODE *pNode) 573 574 { 575 + BOOL ret = FALSE; 574 576 BOOL bRemoveNode = FALSE; 575 577 576 578 if (pNode == NULL) 577 - return; 579 + return FALSE; 578 580 579 581 if (pNode->wFlags & INPUT_LIST_NODE_FLAG_ADDED) 580 582 { ··· 596 598 pCurrent->wFlags |= INPUT_LIST_NODE_FLAG_DEFAULT; 597 599 598 600 pNode->wFlags &= ~INPUT_LIST_NODE_FLAG_DEFAULT; 601 + ret = TRUE; /* default input is changed */ 599 602 } 600 603 601 604 if (bRemoveNode) 602 605 { 603 606 InputList_RemoveNode(pNode); 604 607 } 608 + 609 + return ret; 605 610 } 606 611 612 + BOOL 613 + InputList_RemoveByLang(LANGID wLangId) 614 + { 615 + BOOL ret = FALSE; 616 + INPUT_LIST_NODE *pCurrent; 617 + 618 + Retry: 619 + for (pCurrent = _InputList; pCurrent; pCurrent = pCurrent->pNext) 620 + { 621 + if (pCurrent->wFlags & INPUT_LIST_NODE_FLAG_DELETED) 622 + continue; 623 + 624 + if (LOWORD(pCurrent->pLocale->dwId) == wLangId) 625 + { 626 + if (InputList_Remove(pCurrent)) 627 + ret = TRUE; /* default input is changed */ 628 + goto Retry; 629 + } 630 + } 631 + 632 + return ret; 633 + } 607 634 608 635 VOID 609 636 InputList_Create(VOID) ··· 662 689 free(pLayoutList); 663 690 } 664 691 692 + static INT InputList_Compare(INPUT_LIST_NODE *pNode1, INPUT_LIST_NODE *pNode2) 693 + { 694 + INT nCompare = _wcsicmp(pNode1->pszIndicator, pNode2->pszIndicator); 695 + if (nCompare != 0) 696 + return nCompare; 697 + 698 + return _wcsicmp(pNode1->pLayout->pszName, pNode2->pLayout->pszName); 699 + } 700 + 701 + VOID InputList_Sort(VOID) 702 + { 703 + INPUT_LIST_NODE *pList = _InputList; 704 + INPUT_LIST_NODE *pNext, *pPrev; 705 + INPUT_LIST_NODE *pMinimum, *pNode; 706 + 707 + _InputList = NULL; 708 + 709 + while (pList) 710 + { 711 + /* Find the minimum node */ 712 + pMinimum = NULL; 713 + for (pNode = pList; pNode; pNode = pNext) 714 + { 715 + pNext = pNode->pNext; 716 + 717 + if (pMinimum == NULL) 718 + { 719 + pMinimum = pNode; 720 + } 721 + else if (InputList_Compare(pNode, pMinimum) < 0) 722 + { 723 + pMinimum = pNode; 724 + } 725 + } 726 + 727 + // Remove pMinimum from pList 728 + pNext = pMinimum->pNext; 729 + pPrev = pMinimum->pPrev; 730 + if (pNext) 731 + pNext->pPrev = pPrev; 732 + if (pPrev) 733 + pPrev->pNext = pNext; 734 + else 735 + pList = pNext; 736 + 737 + // Append pMinimum to _InputList 738 + if (!_InputList) 739 + { 740 + pMinimum->pPrev = pMinimum->pNext = NULL; 741 + _InputList = pMinimum; 742 + } 743 + else 744 + { 745 + /* Find last node */ 746 + for (pNode = _InputList; pNode->pNext; pNode = pNode->pNext) 747 + { 748 + NOTHING; 749 + } 750 + 751 + /* Add to the end */ 752 + pNode->pNext = pMinimum; 753 + pMinimum->pPrev = pNode; 754 + pMinimum->pNext = NULL; 755 + } 756 + } 757 + } 758 + 759 + INT 760 + InputList_GetAliveCount(VOID) 761 + { 762 + INPUT_LIST_NODE *pNode; 763 + INT nCount = 0; 764 + 765 + for (pNode = _InputList; pNode; pNode = pNode->pNext) 766 + { 767 + if (pNode->wFlags & INPUT_LIST_NODE_FLAG_DELETED) 768 + continue; 769 + 770 + ++nCount; 771 + } 772 + 773 + return nCount; 774 + } 665 775 666 776 INPUT_LIST_NODE* 667 777 InputList_GetFirst(VOID)
+10 -1
dll/cpl/input/input_list.h
··· 57 57 VOID 58 58 InputList_SetDefault(INPUT_LIST_NODE *pNode); 59 59 60 + INT 61 + InputList_GetAliveCount(VOID); 62 + 63 + BOOL 64 + InputList_Remove(INPUT_LIST_NODE *pNode); 65 + 66 + BOOL 67 + InputList_RemoveByLang(LANGID wLangId); 68 + 60 69 VOID 61 - InputList_Remove(INPUT_LIST_NODE *pNode); 70 + InputList_Sort(VOID); 62 71 63 72 VOID 64 73 InputList_Destroy(VOID);
+12 -8
dll/cpl/input/lang/bg-BG.rc
··· 5 5 CAPTION "Настройки" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - LTEXT "Посочете избраните от вас услуги за всеки посочен в списъка език.\nПромяната на списъка става с „Премахване“ и „Добавяне“.", -1, 9, 6, 238, 25 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "&Прилагане на подразбираните", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "&Добавяне...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "Пре&махване", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Свойства...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Предпочитания", -1, 7, 185, 240, 36 15 - PUSHBUTTON "Настройка на &клавишите...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Посочете избраните от вас услуги за всеки посочен в списъка език. Промяната на списъка става с „Премахване“ и „Добавяне“.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "&Добавяне...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "Пре&махване", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Свойства...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Предпочитания", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "Настройка на &клавишите...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/cs-CZ.rc
··· 10 10 CAPTION "Nastavení" 11 11 FONT 8, "MS Shell Dlg" 12 12 BEGIN 13 - 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 14 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 15 - PUSHBUTTON "Nas&tavit výchozí", IDC_SET_DEFAULT, 101, 159, 144, 14 16 - PUSHBUTTON "&Přidat...", IDC_ADD_BUTTON, 27, 142, 70, 14 17 - PUSHBUTTON "&Odebrat", IDC_REMOVE_BUTTON, 101, 142, 70, 14 18 - PUSHBUTTON "&Vlastnosti...", IDC_PROP_BUTTON, 175, 142, 70, 14 19 - GROUPBOX "Předvolby", -1, 7, 185, 240, 36 20 - PUSHBUTTON "&Nastavení kláves...", IDC_KEY_SET_BTN, 14, 198, 110, 14 13 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 14 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 15 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 16 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 17 + LTEXT "Zvolte služby pro každý vstupní jazyk v seznamu. Seznam lze měnit pomocí tlačítek Přidat a Odebrat.", -1, 15, 78, 230, 25 18 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 19 + PUSHBUTTON "&Přidat...", IDC_ADD_BUTTON, 175, 105, 70, 14 20 + PUSHBUTTON "&Odebrat", IDC_REMOVE_BUTTON, 175, 125, 70, 14 21 + PUSHBUTTON "&Vlastnosti...", IDC_PROP_BUTTON, 175, 145, 70, 14 22 + GROUPBOX "Předvolby", -1, 5, 195, 245, 30 23 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 24 + PUSHBUTTON "&Nastavení kláves...", IDC_KEY_SET_BTN, 133, 205, 110, 14 21 25 END 22 26 23 27 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/de-DE.rc
··· 5 5 CAPTION "Einstellungen" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - 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 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "&Als Standard", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "&Hinzufügen...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "Ent&fernen", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Eigenschaften...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Einstellungen", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Tasteneinstellungen...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Wählen Sie die Dienste aus, die Sie für die Eingabesprachen in der Liste verwenden wollen. Verwenden Sie ""Hinzufügen"" und ""Entfernen"", um die Liste zu bearbeiten.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "&Hinzufügen...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "Ent&fernen", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Eigenschaften...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Einstellungen", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Tasteneinstellungen...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/el-GR.rc
··· 5 5 CAPTION "Ρυθμίσεις" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - LTEXT "Επιλέξτε τις υπηρεσίες που θέλετε για κάθε γλώσσα εισαγωγής που εμφανίζεται στη λίστα.\nΧρησιμοποιήστε τα κουμπιά Προσθήκη και Κατάργηση για την τροποποίηση αυτής της λίστας.", -1, 9, 6, 238, 33 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 42, 237, 95 10 - PUSHBUTTON "&Set Default", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "Π&ροσθήκη...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Κατάργηση", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Ιδιότητες...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Προτιμήσεις", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Ρυθμίσεις πλήκτρων...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Επιλέξτε τις υπηρεσίες που θέλετε για κάθε γλώσσα εισαγωγής που εμφανίζεται στη λίστα. Χρησιμοποιήστε τα κουμπιά Προσθήκη και Κατάργηση για την τροποποίηση αυτής της λίστας.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "Π&ροσθήκη...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Κατάργηση", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Ιδιότητες...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Προτιμήσεις", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Ρυθμίσεις πλήκτρων...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/en-US.rc
··· 5 5 CAPTION "Settings" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - 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 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "&Set Default", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "A&dd...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Remove", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Properties...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Preferences", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Key Settings...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Select the services that you want for each input language shown in the list. Use the Add and Remove buttons to modify this list.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "A&dd...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Remove", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Properties...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Preferences", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Key Settings...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/es-ES.rc
··· 14 14 CAPTION "Configuración" 15 15 FONT 8, "MS Shell Dlg" 16 16 BEGIN 17 - 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 18 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109 19 - PUSHBUTTON "Pr&edeterminado", IDC_SET_DEFAULT, 101, 159, 144, 14 20 - PUSHBUTTON "Ag&regar...", IDC_ADD_BUTTON, 27, 142, 70, 14 21 - PUSHBUTTON "&Quitar", IDC_REMOVE_BUTTON, 101, 142, 70, 14 22 - PUSHBUTTON "&Propiedades...", IDC_PROP_BUTTON, 175, 142, 70, 14 23 - GROUPBOX "Pre&ferencias ", -1, 7, 185, 240, 36 24 - PUSHBUTTON "C&onfiguración de teclas...", IDC_KEY_SET_BTN, 14, 198, 110, 14 17 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 18 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 19 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 20 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 21 + 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, 15, 78, 230, 25 22 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 23 + PUSHBUTTON "Ag&regar...", IDC_ADD_BUTTON, 175, 105, 70, 14 24 + PUSHBUTTON "&Quitar", IDC_REMOVE_BUTTON, 175, 125, 70, 14 25 + PUSHBUTTON "&Propiedades...", IDC_PROP_BUTTON, 175, 145, 70, 14 26 + GROUPBOX "Pre&ferencias", -1, 5, 195, 245, 30 27 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 28 + PUSHBUTTON "C&onfiguración de teclas...", IDC_KEY_SET_BTN, 133, 205, 110, 14 25 29 END 26 30 27 31 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/fr-FR.rc
··· 5 5 CAPTION "Paramètres" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - 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 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "Par &défaut", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "A&jouter...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "Supp&rimer", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Propriétés...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Pré&férences", -1, 7, 185, 240, 36 15 - PUSHBUTTON "Para&mètres des touches...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Sélectionnez les services que vous désirez pour chaque langue de saisie affichée dans la liste. Utilisez les boutons Ajouter et Supprimer pour modifier la liste.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "A&jouter...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "Supp&rimer", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Propriétés...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Pré&férences", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "Para&mètres des touches...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/he-IL.rc
··· 7 7 CAPTION "הגדרות" 8 8 FONT 8, "MS Shell Dlg" 9 9 BEGIN 10 - 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 11 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 12 - PUSHBUTTON "קבע כברירת מחדל...", IDC_SET_DEFAULT, 101, 159, 144, 14 13 - PUSHBUTTON "הוסף...", IDC_ADD_BUTTON, 27, 142, 70, 14 14 - PUSHBUTTON "הסר", IDC_REMOVE_BUTTON, 101, 142, 70, 14 15 - PUSHBUTTON "מאפיניים...", IDC_PROP_BUTTON, 175, 142, 70, 14 16 - GROUPBOX "העדפות", -1, 7, 185, 240, 36 17 - PUSHBUTTON "הגדרות מקשים...", IDC_KEY_SET_BTN, 14, 198, 110, 14 10 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 11 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 12 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 13 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 14 + LTEXT "Select the services that you want for each input language shown in the list. Use the Add and Remove buttons to modify this list.", -1, 15, 78, 230, 25 15 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 16 + PUSHBUTTON "הוסף...", IDC_ADD_BUTTON, 175, 105, 70, 14 17 + PUSHBUTTON "הסר", IDC_REMOVE_BUTTON, 175, 125, 70, 14 18 + PUSHBUTTON "מאפיניים...", IDC_PROP_BUTTON, 175, 145, 70, 14 19 + GROUPBOX "העדפות", -1, 5, 195, 245, 30 20 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 21 + PUSHBUTTON "הגדרות מקשים...", IDC_KEY_SET_BTN, 133, 205, 110, 14 18 22 END 19 23 20 24 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/id-ID.rc
··· 5 5 CAPTION "Setelan" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - LTEXT "Pilih layanan yang anda inginkan untuk setiap bahasa masukan untuk ditampilkan dalam daftar.\nGunakan tombol Tambah atau Hapus untuk mengubah daftar.", -1, 9, 6, 238, 25 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "&Setelan Asal", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "&Tambah...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Hapus", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Properti...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Preferensi", -1, 7, 185, 240, 36 15 - PUSHBUTTON "Setelan To&mbol...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Pilih layanan yang anda inginkan untuk setiap bahasa masukan untuk ditampilkan dalam daftar. Gunakan tombol Tambah atau Hapus untuk mengubah daftar.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "&Tambah...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Hapus", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Properti...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Preferensi", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "Setelan To&mbol...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/it-IT.rc
··· 5 5 CAPTION "Impostazioni" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - LTEXT "Scegliere i servizi desiderati per ognuna delle lingue nella lista.\nUsare Aggiungi e Rimuovi per modificare la lista.", -1, 9, 6, 238, 17 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109 10 - PUSHBUTTON "&Predefinito", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "&Aggiungi...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Rimuovi", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Proprietà...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Preferenze", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Impostazioni tasti...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Scegliere i servizi desiderati per ognuna delle lingue nella lista. Usare Aggiungi e Rimuovi per modificare la lista.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "&Aggiungi...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Rimuovi", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Proprietà...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Preferenze", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Impostazioni tasti...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/ja-JP.rc
··· 5 5 CAPTION "設定" 6 6 FONT 9, "MS UI Gothic" 7 7 BEGIN 8 - LTEXT "リストで示されている各入力言語にご希望のサービスを選択して下さい。\nリストを変更するには、追加または削除ボタンをお使いください。", -1, 9, 6, 238, 25 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "既定にする(&S)", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "追加(&D)...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "削除(&R)", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "プロパティ(&P)...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "プレファレンス", -1, 7, 185, 240, 36 15 - PUSHBUTTON "キー設定(&K)...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "デフォルトの入力言語(&L)", -1, 5, 5, 246, 55 9 + LTEXT "コンピュータ起動時に使う、インストール済みの入力言語の一つを選択して下さい。", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "インストール済みのサービス(&I)", -1, 5, 65, 246, 125 12 + LTEXT "リストで示されている各入力言語にご希望のサービスを選択して下さい。リストを変更するには、追加または削除ボタンをお使いください。", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "追加(&D)...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "削除(&R)", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "プロパティ(&P)...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "詳細設定", -1, 5, 195, 245, 30 18 + PUSHBUTTON "言語バー(&B)...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "キー設定(&K)...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/no-NO.rc
··· 5 5 CAPTION "Innstillinger" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - 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 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "&Sett Standard", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "Le&gg til...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Fjern", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Egenskaper...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Innstillinger", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Tasteinnstillinger...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Velg tjenesten som du vil ha for hver inndataspråk som er vist i listen. Bruk legg til og fjern knappen for å endre denne listen.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "Le&gg til...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Fjern", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Egenskaper...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Innstillinger", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Tasteinnstillinger...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/pl-PL.rc
··· 13 13 CAPTION "Ustawienia" 14 14 FONT 8, "MS Shell Dlg" 15 15 BEGIN 16 - 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 17 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109 18 - PUSHBUTTON "&Ustaw domyślne", IDC_SET_DEFAULT, 101, 159, 144, 14 19 - PUSHBUTTON "&Dodaj...", IDC_ADD_BUTTON, 27, 142, 70, 14 20 - PUSHBUTTON "U&suń", IDC_REMOVE_BUTTON, 101, 142, 70, 14 21 - PUSHBUTTON "&Właściwości...", IDC_PROP_BUTTON, 175, 142, 70, 14 22 - GROUPBOX "Preferencje", -1, 7, 185, 240, 36 23 - PUSHBUTTON "Us&tawienia klawiszy...", IDC_KEY_SET_BTN, 14, 198, 110, 14 16 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 17 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 18 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 19 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 20 + LTEXT "Wybierz usługi dla kadego używanego języka z listy. Listę można modyfikować przyciskami Dodaj i Usuń.", -1, 15, 78, 230, 25 21 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 22 + PUSHBUTTON "&Dodaj...", IDC_ADD_BUTTON, 175, 105, 70, 14 23 + PUSHBUTTON "U&suń", IDC_REMOVE_BUTTON, 175, 125, 70, 14 24 + PUSHBUTTON "&Właściwości...", IDC_PROP_BUTTON, 175, 145, 70, 14 25 + GROUPBOX "Preferencje", -1, 5, 195, 245, 30 26 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 27 + PUSHBUTTON "Us&tawienia klawiszy...", IDC_KEY_SET_BTN, 133, 205, 110, 14 24 28 END 25 29 26 30 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/pt-BR.rc
··· 5 5 CAPTION "Configurações" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - 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 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "De&finir padrão", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "&Adicionar...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Remover", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Propriedades...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Preferências", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Configurações de tecla...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + 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, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "&Adicionar...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Remover", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Propriedades...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Preferências", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Configurações de tecla...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/pt-PT.rc
··· 5 5 CAPTION "Definições" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - LTEXT "Seleccione os serviços desejados para cada idioma de entrada mostrado na lista. Use os botões 'Adicionar' e 'Remover' para modificar a lista.", -1, 9, 6, 238, 25 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 10 - PUSHBUTTON "De&finir padrão", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "&Adicionar...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Remover", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Propriedades...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Preferências", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Definições de tecla...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Seleccione os serviços desejados para cada idioma de entrada mostrado na lista. Use os botões 'Adicionar' e 'Remover' para modificar a lista.", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "&Adicionar...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Remover", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Propriedades...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Preferências", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Definições de tecla...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/ro-RO.rc
··· 7 7 CAPTION "Configurare" 8 8 FONT 8, "MS Shell Dlg" 9 9 BEGIN 10 - 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 11 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 12 - PUSHBUTTON "&Restabilește opțiunile implicite", IDC_SET_DEFAULT, 101, 159, 144, 14 13 - PUSHBUTTON "A&dăugare…", IDC_ADD_BUTTON, 27, 142, 70, 14 14 - PUSHBUTTON "&Elimină", IDC_REMOVE_BUTTON, 101, 142, 70, 14 15 - PUSHBUTTON "&Proprietăți…", IDC_PROP_BUTTON, 175, 142, 70, 14 16 - GROUPBOX "Preferințe", -1, 7, 185, 240, 36 17 - PUSHBUTTON "&Combinații de taste…", IDC_KEY_SET_BTN, 14, 198, 110, 14 10 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 11 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 12 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 13 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 14 + LTEXT "Gestionați serviciile aferente limbilor de intrare utilizate în sistem. Utilizați butoanele pentru a aduce modificări listei.", -1, 15, 78, 230, 25 15 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 16 + PUSHBUTTON "A&dăugare…", IDC_ADD_BUTTON, 175, 105, 70, 14 17 + PUSHBUTTON "&Elimină", IDC_REMOVE_BUTTON, 175, 125, 70, 14 18 + PUSHBUTTON "&Proprietăți…", IDC_PROP_BUTTON, 175, 145, 70, 14 19 + GROUPBOX "Preferințe", -1, 5, 195, 245, 30 20 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 21 + PUSHBUTTON "&Combinații de taste…", IDC_KEY_SET_BTN, 133, 205, 110, 14 18 22 END 19 23 20 24 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/ru-RU.rc
··· 5 5 CAPTION "Параметры" 6 6 FONT 8, "MS Shell Dlg" 7 7 BEGIN 8 - LTEXT "Выберите нужные раскладки для каждого языка ввода из списка. Для изменения списка служат кнопки ""Добавить"" и ""Удалить"".", -1, 9, 6, 238, 17 9 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 28, 237, 109 10 - PUSHBUTTON "Ус&тановить по умолчанию", IDC_SET_DEFAULT, 101, 159, 144, 14 11 - PUSHBUTTON "&Добавить...", IDC_ADD_BUTTON, 27, 142, 70, 14 12 - PUSHBUTTON "&Удалить", IDC_REMOVE_BUTTON, 101, 142, 70, 14 13 - PUSHBUTTON "&Свойства...", IDC_PROP_BUTTON, 175, 142, 70, 14 14 - GROUPBOX "Параметры", -1, 7, 185, 240, 36 15 - PUSHBUTTON "&Параметры клавиатуры...", IDC_KEY_SET_BTN, 14, 198, 110, 14 8 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 9 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 10 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 11 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 12 + LTEXT "Выберите нужные раскладки для каждого языка ввода из списка. Для изменения списка служат кнопки ""Добавить"" и ""Удалить"".", -1, 15, 78, 230, 25 13 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 14 + PUSHBUTTON "&Добавить...", IDC_ADD_BUTTON, 175, 105, 70, 14 15 + PUSHBUTTON "&Удалить", IDC_REMOVE_BUTTON, 175, 125, 70, 14 16 + PUSHBUTTON "&Свойства...", IDC_PROP_BUTTON, 175, 145, 70, 14 17 + GROUPBOX "Параметры", -1, 5, 195, 245, 30 18 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 19 + PUSHBUTTON "&Параметры клавиатуры...", IDC_KEY_SET_BTN, 133, 205, 110, 14 16 20 END 17 21 18 22 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/sk-SK.rc
··· 10 10 CAPTION "Nastavenia" 11 11 FONT 8, "MS Shell Dlg" 12 12 BEGIN 13 - 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 14 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 15 - PUSHBUTTON "Pred&voliť", IDC_SET_DEFAULT, 101, 159, 144, 14 16 - PUSHBUTTON "&Pridať...", IDC_ADD_BUTTON, 27, 142, 70, 14 17 - PUSHBUTTON "O&dstrániť", IDC_REMOVE_BUTTON, 101, 142, 70, 14 18 - PUSHBUTTON "Vl&astnosti...", IDC_PROP_BUTTON, 175, 142, 70, 14 19 - GROUPBOX "Preferencie", -1, 7, 185, 240, 36 20 - PUSHBUTTON "Nastavenie &klávesov...", IDC_KEY_SET_BTN, 14, 198, 110, 14 13 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 14 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 15 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 16 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 17 + LTEXT "Vyberte služby, ktoré chcete priradiť ku každému vstupnému jazyku uvedenému v zozname. Použite tlačidlá Pridať a Odstrániť k úprave zoznamu.", -1, 15, 78, 230, 25 18 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 19 + PUSHBUTTON "&Pridať...", IDC_ADD_BUTTON, 175, 105, 70, 14 20 + PUSHBUTTON "O&dstrániť", IDC_REMOVE_BUTTON, 175, 125, 70, 14 21 + PUSHBUTTON "Vl&astnosti...", IDC_PROP_BUTTON, 175, 145, 70, 14 22 + GROUPBOX "Preferencie", -1, 5, 195, 245, 30 23 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 24 + PUSHBUTTON "Nastavenie &klávesov...", IDC_KEY_SET_BTN, 133, 205, 110, 14 21 25 END 22 26 23 27 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/sq-AL.rc
··· 9 9 CAPTION "Cilësimet" 10 10 FONT 8, "MS Shell Dlg" 11 11 BEGIN 12 - 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 13 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 14 - PUSHBUTTON "&Vendos Parazgjedhur", IDC_SET_DEFAULT, 101, 159, 144, 14 15 - PUSHBUTTON "Sh&to...", IDC_ADD_BUTTON, 27, 142, 70, 14 16 - PUSHBUTTON "&Hiq", IDC_REMOVE_BUTTON, 101, 142, 70, 14 17 - PUSHBUTTON "&Karakteristikat...", IDC_PROP_BUTTON, 175, 142, 70, 14 18 - GROUPBOX "Preferenca", -1, 7, 185, 240, 36 19 - PUSHBUTTON "&Çeles cilësimesh...", IDC_KEY_SET_BTN, 14, 198, 110, 14 12 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 13 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 14 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 15 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 16 + LTEXT "Zgjidhni shërbimet që ju dëshironi për çdo gjuhë të dhënash treguar në listë. Përdor Shto dhe Hiq butonat për të modifikuar këtë listë.", -1, 15, 78, 230, 25 17 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 18 + PUSHBUTTON "Sh&to...", IDC_ADD_BUTTON, 175, 105, 70, 14 19 + PUSHBUTTON "&Hiq", IDC_REMOVE_BUTTON, 175, 125, 70, 14 20 + PUSHBUTTON "&Karakteristikat...", IDC_PROP_BUTTON, 175, 145, 70, 14 21 + GROUPBOX "Preferenca", -1, 5, 195, 245, 30 22 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 23 + PUSHBUTTON "&Çeles cilësimesh...", IDC_KEY_SET_BTN, 133, 205, 110, 14 20 24 END 21 25 22 26 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/tr-TR.rc
··· 7 7 CAPTION "Ayarlar" 8 8 FONT 8, "MS Shell Dlg" 9 9 BEGIN 10 - LTEXT "Listede gösterilen her bir giriş dili için istediğiniz hizmetleri seçiniz.\nBu listeyi değiştirmek için Ekle veya Sil tuşlarını kullanınız.", -1, 9, 6, 238, 25 11 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 12 - PUSHBUTTON "Ö&n Tanımlı Yap", IDC_SET_DEFAULT, 101, 159, 144, 14 13 - PUSHBUTTON "&Ekle...", IDC_ADD_BUTTON, 27, 142, 70, 14 14 - PUSHBUTTON "&Sil", IDC_REMOVE_BUTTON, 101, 142, 70, 14 15 - PUSHBUTTON "Ö&zellikler...", IDC_PROP_BUTTON, 175, 142, 70, 14 16 - GROUPBOX "Tercihler", -1, 7, 185, 240, 36 17 - PUSHBUTTON "&Tuş Ayarları...", IDC_KEY_SET_BTN, 14, 198, 110, 14 10 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 11 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 12 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 13 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 14 + LTEXT "Listede gösterilen her bir giriş dili için istediğiniz hizmetleri seçiniz. Bu listeyi değiştirmek için Ekle veya Sil tuşlarını kullanınız.", -1, 15, 78, 230, 25 15 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 16 + PUSHBUTTON "&Ekle...", IDC_ADD_BUTTON, 175, 105, 70, 14 17 + PUSHBUTTON "&Sil", IDC_REMOVE_BUTTON, 175, 125, 70, 14 18 + PUSHBUTTON "Ö&zellikler...", IDC_PROP_BUTTON, 175, 145, 70, 14 19 + GROUPBOX "Tercihler", -1, 5, 195, 245, 30 20 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 21 + PUSHBUTTON "&Tuş Ayarları...", IDC_KEY_SET_BTN, 133, 205, 110, 14 18 22 END 19 23 20 24 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/uk-UA.rc
··· 13 13 CAPTION "Параметри" 14 14 FONT 8, "MS Shell Dlg" 15 15 BEGIN 16 - LTEXT "Виберіть потрібні розкладки для кожної мови введення зі списку. Для зміни списку використовуйте кнопки ""Додати"" і ""Видалити"".", -1, 9, 6, 238, 25 17 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 18 - PUSHBUTTON "Встановити за замов&чуванням", IDC_SET_DEFAULT, 101, 159, 144, 14 19 - PUSHBUTTON "&Додати...", IDC_ADD_BUTTON, 27, 142, 70, 14 20 - PUSHBUTTON "В&идалити", IDC_REMOVE_BUTTON, 101, 142, 70, 14 21 - PUSHBUTTON "В&ластивості...", IDC_PROP_BUTTON, 175, 142, 70, 14 22 - GROUPBOX "Налаштування", -1, 7, 185, 240, 36 23 - PUSHBUTTON "&Параметри клавіатури...", IDC_KEY_SET_BTN, 14, 198, 110, 14 16 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 17 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 18 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 19 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 20 + LTEXT "Виберіть потрібні розкладки для кожної мови введення зі списку. Для зміни списку використовуйте кнопки ""Додати"" і ""Видалити"".", -1, 15, 78, 230, 25 21 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 22 + PUSHBUTTON "&Додати...", IDC_ADD_BUTTON, 175, 105, 70, 14 23 + PUSHBUTTON "В&идалити", IDC_REMOVE_BUTTON, 175, 125, 70, 14 24 + PUSHBUTTON "В&ластивості...", IDC_PROP_BUTTON, 175, 145, 70, 14 25 + GROUPBOX "Налаштування", -1, 5, 195, 245, 30 26 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 27 + PUSHBUTTON "&Параметри клавіатури...", IDC_KEY_SET_BTN, 133, 205, 110, 14 24 28 END 25 29 26 30 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/zh-CN.rc
··· 7 7 CAPTION "设置" 8 8 FONT 9, "宋体" 9 9 BEGIN 10 - LTEXT "为列表中显示的每个输入语言选择服务。\n使用“添加”和“删除”按钮来修改这个列表。", -1, 9, 6, 238, 25 11 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 12 - PUSHBUTTON "设为默认值(&S)", IDC_SET_DEFAULT, 101, 159, 144, 14 13 - PUSHBUTTON "添加(&D)...", IDC_ADD_BUTTON, 27, 142, 70, 14 14 - PUSHBUTTON "删除(&R)", IDC_REMOVE_BUTTON, 101, 142, 70, 14 15 - PUSHBUTTON "属性(&P)...", IDC_PROP_BUTTON, 175, 142, 70, 14 16 - GROUPBOX "首选项", -1, 7, 185, 240, 36 17 - PUSHBUTTON "键设置(&K)...", IDC_KEY_SET_BTN, 14, 198, 110, 14 10 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 11 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 12 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 13 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 14 + LTEXT "为列表中显示的每个输入语言选择服务。使用“添加”和“删除”按钮来修改这个列表。", -1, 15, 78, 230, 25 15 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 16 + PUSHBUTTON "添加(&D)...", IDC_ADD_BUTTON, 175, 105, 70, 14 17 + PUSHBUTTON "删除(&R)", IDC_REMOVE_BUTTON, 175, 125, 70, 14 18 + PUSHBUTTON "属性(&P)...", IDC_PROP_BUTTON, 175, 145, 70, 14 19 + GROUPBOX "首选项", -1, 5, 195, 245, 30 20 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 21 + PUSHBUTTON "键设置(&K)...", IDC_KEY_SET_BTN, 133, 205, 110, 14 18 22 END 19 23 20 24 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/zh-HK.rc
··· 13 13 CAPTION "設定" 14 14 FONT 9, "新細明體" 15 15 BEGIN 16 - LTEXT "為列表中顯示的每個輸入語言選擇服務。\n請按[新增]和[刪除]按鈕來修改這個列表。", -1, 9, 6, 238, 25 17 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 18 - PUSHBUTTON "設為預設值(&S)", IDC_SET_DEFAULT, 101, 159, 144, 14 19 - PUSHBUTTON "新增(&D)...", IDC_ADD_BUTTON, 27, 142, 70, 14 20 - PUSHBUTTON "刪除(&R)", IDC_REMOVE_BUTTON, 101, 142, 70, 14 21 - PUSHBUTTON "內容(&P)...", IDC_PROP_BUTTON, 175, 142, 70, 14 22 - GROUPBOX "偏好設定", -1, 7, 185, 240, 36 23 - PUSHBUTTON "按鍵設定(&K)...", IDC_KEY_SET_BTN, 14, 198, 110, 14 16 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 17 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 18 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 19 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 20 + LTEXT "為列表中顯示的每個輸入語言選擇服務。請按[新增]和[刪除]按鈕來修改這個列表。", -1, 15, 78, 230, 25 21 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 22 + PUSHBUTTON "新增(&D)...", IDC_ADD_BUTTON, 175, 105, 70, 14 23 + PUSHBUTTON "刪除(&R)", IDC_REMOVE_BUTTON, 175, 125, 70, 14 24 + PUSHBUTTON "內容(&P)...", IDC_PROP_BUTTON, 175, 145, 70, 14 25 + GROUPBOX "偏好設定", -1, 5, 195, 245, 30 26 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 27 + PUSHBUTTON "按鍵設定(&K)...", IDC_KEY_SET_BTN, 133, 205, 110, 14 24 28 END 25 29 26 30 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+12 -8
dll/cpl/input/lang/zh-TW.rc
··· 13 13 CAPTION "設定" 14 14 FONT 9, "新細明體" 15 15 BEGIN 16 - LTEXT "為列表中顯示的每個輸入語言選擇服務。\n請按[新增]和[刪除]按鈕來修改這個列表。", -1, 9, 6, 238, 25 17 - CONTROL "TEXT", IDC_KEYLAYOUT_LIST, "SYSLISTVIEW32", WS_BORDER | WS_VSCROLL | WS_TABSTOP | LVS_SINGLESEL | LVS_NOSORTHEADER | LVS_SHOWSELALWAYS | LVS_REPORT, 8, 36, 237, 101 18 - PUSHBUTTON "設為預設值(&S)", IDC_SET_DEFAULT, 101, 159, 144, 14 19 - PUSHBUTTON "新增(&D)...", IDC_ADD_BUTTON, 27, 142, 70, 14 20 - PUSHBUTTON "刪除(&R)", IDC_REMOVE_BUTTON, 101, 142, 70, 14 21 - PUSHBUTTON "內容(&P)...", IDC_PROP_BUTTON, 175, 142, 70, 14 22 - GROUPBOX "偏好設定", -1, 7, 185, 240, 36 23 - PUSHBUTTON "按鍵設定(&K)...", IDC_KEY_SET_BTN, 14, 198, 110, 14 16 + GROUPBOX "Default input &language", -1, 5, 5, 246, 55 17 + LTEXT "Select one of the installed input languages to use when your computer starts.", -1, 15, 15, 230, 23 18 + COMBOBOX IDC_DEFAULT_LANGUAGE, 15, 40, 230, 300, CBS_HASSTRINGS | CBS_AUTOHSCROLL | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP 19 + GROUPBOX "&Installed services", -1, 5, 65, 246, 125 20 + LTEXT "為列表中顯示的每個輸入語言選擇服務。請按[新增]和[刪除]按鈕來修改這個列表。", -1, 15, 78, 230, 25 21 + CONTROL "", IDC_KEYLAYOUT_LIST, "SysTreeView32", TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 15, 105, 155, 80 22 + PUSHBUTTON "新增(&D)...", IDC_ADD_BUTTON, 175, 105, 70, 14 23 + PUSHBUTTON "刪除(&R)", IDC_REMOVE_BUTTON, 175, 125, 70, 14 24 + PUSHBUTTON "內容(&P)...", IDC_PROP_BUTTON, 175, 145, 70, 14 25 + GROUPBOX "偏好設定", -1, 5, 195, 245, 30 26 + PUSHBUTTON "Language &Bar...", IDC_LANGUAGE_BAR, 15, 205, 110, 14 27 + PUSHBUTTON "按鍵設定(&K)...", IDC_KEY_SET_BTN, 133, 205, 110, 14 24 28 END 25 29 26 30 IDD_PROPPAGEADVANCEDSETTINGS DIALOGEX 0, 0, 254, 228
+4 -1
dll/cpl/input/resource.h
··· 6 6 #define IDI_MIC_ICO 203 7 7 #define IDI_INFO_ICO 207 8 8 #define IDI_CPLSYSTEM 1502 9 + #define IDI_KEYBOARD 1503 10 + #define IDI_DOT 1504 9 11 10 12 /* IDD */ 11 13 #define IDD_PROPPAGESETTINGS 500 ··· 17 19 18 20 /* IDC */ 19 21 #define IDC_KEYLAYOUT_LIST 1000 20 - #define IDC_SET_DEFAULT 1001 22 + #define IDC_DEFAULT_LANGUAGE 1001 21 23 #define IDC_ADD_BUTTON 1002 22 24 #define IDC_REMOVE_BUTTON 1003 23 25 #define IDC_PROP_BUTTON 1004 ··· 37 39 #define IDC_CTRL_LAYOUT 1018 38 40 #define IDC_LEFT_ALT_LANG 1019 39 41 #define IDC_LEFT_ALT_LAYOUT 1020 42 + #define IDC_LANGUAGE_BAR 1021 40 43 41 44 /* IDS */ 42 45 #define IDS_CPLSYSTEMNAME 1
dll/cpl/input/resources/dot.ico

This is a binary file and will not be displayed.

dll/cpl/input/resources/keyboard.ico

This is a binary file and will not be displayed.

+389 -181
dll/cpl/input/settings_page.c
··· 11 11 #include "locale_list.h" 12 12 #include "input_list.h" 13 13 14 + static INT s_nAliveLeafCount = 0; 15 + static INT s_nRootCount = 0; 16 + static INT s_iKeyboardImage = -1; 17 + static INT s_iDotImage = -1; 18 + static BOOL s_bDefaultInputChanged = FALSE; 19 + 14 20 static HICON 15 - CreateLayoutIcon(LPWSTR szLayout, BOOL bIsDefault) 21 + CreateLayoutIcon(LANGID LangID) 16 22 { 17 - INT width = GetSystemMetrics(SM_CXSMICON) * 2; 18 - INT height = GetSystemMetrics(SM_CYSMICON); 23 + WCHAR szBuf[4]; 19 24 HDC hdc; 20 - HDC hdcsrc; 21 - HBITMAP hBitmap; 22 - HICON hIcon = NULL; 25 + HBITMAP hbmColor, hbmMono, hBmpOld; 26 + RECT rect; 27 + HFONT hFontOld, hFont; 28 + ICONINFO IconInfo; 29 + HICON hIcon; 30 + LOGFONTW lf; 31 + BITMAPINFO bmi; 32 + INT cxIcon = GetSystemMetrics(SM_CXSMICON); 33 + INT cyIcon = GetSystemMetrics(SM_CYSMICON); 23 34 24 - hdcsrc = GetDC(NULL); 25 - hdc = CreateCompatibleDC(hdcsrc); 26 - hBitmap = CreateCompatibleBitmap(hdcsrc, width, height); 35 + /* Getting "EN", "FR", etc. from English, French, ... */ 36 + if (!GetLocaleInfoW(LangID, LOCALE_SABBREVLANGNAME | LOCALE_NOUSEROVERRIDE, 37 + szBuf, ARRAYSIZE(szBuf))) 38 + { 39 + StringCchCopyW(szBuf, ARRAYSIZE(szBuf), L"??"); 40 + } 41 + szBuf[2] = UNICODE_NULL; /* Truncate the identifier to two characters: "ENG" --> "EN" etc. */ 27 42 28 - ReleaseDC(NULL, hdcsrc); 43 + /* Prepare for DIB (device-independent bitmap) */ 44 + ZeroMemory(&bmi, sizeof(bmi)); 45 + bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader); 46 + bmi.bmiHeader.biWidth = cxIcon; 47 + bmi.bmiHeader.biHeight = cyIcon; 48 + bmi.bmiHeader.biPlanes = 1; 49 + bmi.bmiHeader.biBitCount = 24; 29 50 30 - if (hdc && hBitmap) 51 + /* Create hdc, hbmColor and hbmMono */ 52 + hdc = CreateCompatibleDC(NULL); 53 + hbmColor = CreateDIBSection(hdc, &bmi, DIB_RGB_COLORS, NULL, NULL, 0); 54 + hbmMono = CreateBitmap(cxIcon, cyIcon, 1, 1, NULL); 55 + 56 + /* Create a font */ 57 + if (SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0)) 58 + hFont = CreateFontIndirectW(&lf); 59 + else 60 + hFont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); 61 + 62 + /* Checking NULL */ 63 + if (!hdc || !hbmColor || !hbmMono || !hFont) 31 64 { 32 - HBITMAP hBmpNew; 65 + if (hdc) 66 + DeleteDC(hdc); 67 + if (hbmColor) 68 + DeleteObject(hbmColor); 69 + if (hbmMono) 70 + DeleteObject(hbmMono); 71 + if (hFont) 72 + DeleteObject(hFont); 73 + return NULL; 74 + } 33 75 34 - hBmpNew = CreateBitmap(width, height, 1, 1, NULL); 35 - if (hBmpNew) 36 - { 37 - LOGFONTW lf; 76 + SetRect(&rect, 0, 0, cxIcon, cyIcon); 38 77 39 - if (SystemParametersInfoW(SPI_GETICONTITLELOGFONT, sizeof(lf), &lf, 0)) 40 - { 41 - ICONINFO IconInfo; 42 - HFONT hFont; 78 + /* Draw hbmColor */ 79 + hBmpOld = SelectObject(hdc, hbmColor); 80 + SetDCBrushColor(hdc, GetSysColor(COLOR_HIGHLIGHT)); 81 + FillRect(hdc, &rect, (HBRUSH)GetStockObject(DC_BRUSH)); 82 + hFontOld = SelectObject(hdc, hFont); 83 + SetTextColor(hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)); 84 + SetBkMode(hdc, TRANSPARENT); 85 + DrawTextW(hdc, szBuf, 2, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); 86 + SelectObject(hdc, hFontOld); 87 + SelectObject(hdc, hBmpOld); 43 88 44 - hFont = CreateFontIndirectW(&lf); 89 + /* Fill hbmMono by black */ 90 + hBmpOld = SelectObject(hdc, hbmMono); 91 + PatBlt(hdc, 0, 0, cxIcon, cyIcon, BLACKNESS); 92 + SelectObject(hdc, hBmpOld); 45 93 46 - if (hFont != NULL) 47 - { 48 - HBITMAP hBmpOld; 94 + /* Create an icon from hbmColor and hbmMono */ 95 + IconInfo.hbmColor = hbmColor; 96 + IconInfo.hbmMask = hbmMono; 97 + IconInfo.fIcon = TRUE; 98 + hIcon = CreateIconIndirect(&IconInfo); 49 99 50 - hBmpOld = SelectObject(hdc, hBitmap); 100 + /* Clean up */ 101 + DeleteObject(hbmColor); 102 + DeleteObject(hbmMono); 103 + DeleteObject(hFont); 104 + DeleteDC(hdc); 51 105 52 - if (hBmpOld != NULL) 53 - { 54 - RECT rect; 106 + return hIcon; 107 + } 55 108 56 - SetRect(&rect, 0, 0, width / 2, height); 109 + static VOID InitDefaultLangComboBox(HWND hwndCombo) 110 + { 111 + WCHAR szText[256]; 112 + INPUT_LIST_NODE *pNode; 113 + INT iIndex, nCount, iDefault = (INT)SendMessageW(hwndCombo, CB_GETCURSEL, 0, 0); 57 114 58 - if (bIsDefault != FALSE) 59 - { 60 - SetBkColor(hdc, GetSysColor(COLOR_WINDOW)); 61 - SetTextColor(hdc, GetSysColor(COLOR_WINDOWTEXT)); 115 + SendMessageW(hwndCombo, CB_RESETCONTENT, 0, 0); 62 116 63 - ExtTextOutW(hdc, rect.left, rect.top, ETO_OPAQUE, &rect, L"", 0, NULL); 117 + for (pNode = InputList_GetFirst(); pNode != NULL; pNode = pNode->pNext) 118 + { 119 + if (pNode->wFlags & INPUT_LIST_NODE_FLAG_DELETED) 120 + continue; 64 121 65 - SelectObject(hdc, hFont); 66 - DrawFrameControl(hdc, &rect, DFC_MENU, DFCS_MENUBULLET); 67 - } 68 - else 69 - { 70 - FillRect(hdc, &rect, GetSysColorBrush(COLOR_WINDOW)); 71 - } 122 + StringCchPrintfW(szText, _countof(szText), L"%s - %s", 123 + pNode->pLocale->pszName, pNode->pLayout->pszName); 124 + iIndex = (INT)SendMessageW(hwndCombo, CB_ADDSTRING, 0, (LPARAM)szText); 125 + SendMessageW(hwndCombo, CB_SETITEMDATA, iIndex, (LPARAM)pNode); 72 126 73 - SetRect(&rect, width / 2, 0, width, height); 127 + if (pNode->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT) 128 + iDefault = iIndex; 129 + } 74 130 75 - SetBkColor(hdc, GetSysColor(COLOR_HIGHLIGHT)); 76 - SetTextColor(hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)); 131 + nCount = (INT)SendMessageW(hwndCombo, CB_GETCOUNT, 0, 0); 132 + if (iDefault >= nCount) 133 + SendMessageW(hwndCombo, CB_SETCURSEL, nCount - 1, 0); 134 + else 135 + SendMessageW(hwndCombo, CB_SETCURSEL, iDefault, 0); 136 + } 77 137 78 - ExtTextOutW(hdc, rect.left, rect.top, ETO_OPAQUE, &rect, L"", 0, NULL); 138 + static VOID 139 + SetControlsState(HWND hwndDlg) 140 + { 141 + HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST); 142 + HWND hwndCombo = GetDlgItem(hwndDlg, IDC_DEFAULT_LANGUAGE); 143 + BOOL bIsLeaf, bCanRemove, bCanProp; 144 + HTREEITEM hSelected = TreeView_GetSelection(hwndList); 145 + TV_ITEM item = { TVIF_PARAM | TVIF_HANDLE }; 146 + item.hItem = hSelected; 79 147 80 - SelectObject(hdc, hFont); 81 - DrawTextW(hdc, szLayout, 2, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); 148 + bIsLeaf = (hSelected && TreeView_GetItem(hwndList, &item) && HIWORD(item.lParam)); 82 149 83 - SelectObject(hdc, hBmpNew); 150 + bCanRemove = (bIsLeaf && (s_nAliveLeafCount > 1)) || (s_nRootCount > 1); 151 + bCanProp = bIsLeaf; 84 152 85 - PatBlt(hdc, 0, 0, width, height, BLACKNESS); 153 + EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE_BUTTON), bCanRemove); 154 + EnableWindow(GetDlgItem(hwndDlg, IDC_PROP_BUTTON), bCanProp); 86 155 87 - SelectObject(hdc, hBmpOld); 156 + InitDefaultLangComboBox(hwndCombo); 157 + } 88 158 89 - IconInfo.hbmColor = hBitmap; 90 - IconInfo.hbmMask = hBmpNew; 91 - IconInfo.fIcon = TRUE; 159 + static BOOL CALLBACK 160 + EnumResNameProc(HMODULE hModule, LPCWSTR lpszType, LPWSTR lpszName, LONG_PTR lParam) 161 + { 162 + HICON* phIconSm = (HICON*)lParam; 163 + if (*phIconSm) 164 + return FALSE; 92 165 93 - hIcon = CreateIconIndirect(&IconInfo); 166 + *phIconSm = (HICON)LoadImageW(hModule, lpszName, IMAGE_ICON, 167 + GetSystemMetrics(SM_CXSMICON), 168 + GetSystemMetrics(SM_CYSMICON), 169 + 0); 170 + return TRUE; 171 + } 94 172 95 - DeleteObject(hBmpOld); 96 - } 173 + static HICON LoadIMEIcon(LPCTSTR pszImeFile) 174 + { 175 + WCHAR szSysDir[MAX_PATH], szPath[MAX_PATH]; 176 + HINSTANCE hImeInst; 177 + HICON hIconSm = NULL; 97 178 98 - DeleteObject(hFont); 99 - } 100 - } 179 + GetSystemDirectoryW(szSysDir, _countof(szSysDir)); 180 + StringCchPrintfW(szPath, _countof(szPath), L"%s\\%s", szSysDir, pszImeFile); 101 181 102 - DeleteObject(hBmpNew); 103 - } 104 - } 182 + hImeInst = LoadLibraryExW(szPath, NULL, DONT_RESOLVE_DLL_REFERENCES); 183 + if (hImeInst == NULL) 184 + return NULL; 105 185 106 - DeleteDC(hdc); 107 - DeleteObject(hBitmap); 186 + EnumResourceNamesW(hImeInst, RT_GROUP_ICON, EnumResNameProc, (LPARAM)&hIconSm); 187 + FreeLibrary(hImeInst); 108 188 109 - return hIcon; 189 + return hIconSm; 110 190 } 111 191 112 - 113 - static VOID 114 - SetControlsState(HWND hwndDlg) 192 + static HTREEITEM FindLanguageInList(HWND hwndList, LPCTSTR pszLangName) 115 193 { 116 - HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST); 117 - INT iSelected = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED); 118 - INT nCount = ListView_GetItemCount(hwndList); 119 - BOOL bCanRemove = (iSelected != -1) && (nCount >= 2); 120 - BOOL bCanDefault = (iSelected != -1) && (nCount >= 2); 121 - BOOL bCanProp = (iSelected != -1); 194 + TV_ITEM item; 195 + TCHAR szText[128]; 196 + HTREEITEM hItem; 122 197 123 - LV_ITEM item = { LVIF_PARAM, iSelected }; 124 - if (ListView_GetItem(hwndList, &item)) 198 + hItem = TreeView_GetRoot(hwndList); 199 + while (hItem) 125 200 { 126 - INPUT_LIST_NODE *pInput = (INPUT_LIST_NODE*)item.lParam; 201 + szText[0] = 0; 202 + item.mask = TVIF_TEXT | TVIF_HANDLE; 203 + item.pszText = szText; 204 + item.cchTextMax = _countof(szText); 205 + item.hItem = hItem; 206 + TreeView_GetItem(hwndList, &item); 207 + if (_wcsicmp(szText, pszLangName) == 0) 208 + return hItem; 127 209 128 - if (pInput && (pInput->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT)) 129 - { 130 - bCanDefault = FALSE; 131 - } 210 + hItem = TreeView_GetNextSibling(hwndList, hItem); 132 211 } 133 212 134 - EnableWindow(GetDlgItem(hwndDlg, IDC_REMOVE_BUTTON), bCanRemove); 135 - EnableWindow(GetDlgItem(hwndDlg, IDC_PROP_BUTTON), bCanProp); 136 - EnableWindow(GetDlgItem(hwndDlg, IDC_SET_DEFAULT), bCanDefault); 213 + return NULL; 137 214 } 138 215 139 216 static VOID 140 217 AddToInputListView(HWND hwndList, INPUT_LIST_NODE *pInputNode) 141 218 { 142 - INT ItemIndex, ImageIndex = -1; 143 - LV_ITEM item; 144 - HIMAGELIST hImageList = ListView_GetImageList(hwndList, LVSIL_SMALL); 219 + TV_ITEM item; 220 + TV_INSERTSTRUCT insert; 221 + HIMAGELIST hImageList = TreeView_GetImageList(hwndList, TVSIL_NORMAL); 222 + WCHAR szKeyboard[64]; 223 + HTREEITEM hItem; 224 + BOOL bBold = !!(pInputNode->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT); 145 225 146 - if (hImageList != NULL) 226 + hItem = FindLanguageInList(hwndList, pInputNode->pLocale->pszName); 227 + if (hItem == NULL) 147 228 { 148 - HICON hLayoutIcon; 229 + // Language icon 230 + INT LangImageIndex = -1; 231 + HICON hLangIcon = CreateLayoutIcon(LOWORD(pInputNode->pLocale->dwId)); 232 + if (hLangIcon) 233 + { 234 + LangImageIndex = ImageList_AddIcon(hImageList, hLangIcon); 235 + DestroyIcon(hLangIcon); 236 + } 149 237 150 - hLayoutIcon = CreateLayoutIcon(pInputNode->pszIndicator, 151 - (pInputNode->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT)); 152 - if (hLayoutIcon != NULL) 238 + // Language 239 + ZeroMemory(&item, sizeof(item)); 240 + item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE | TVIF_STATE; 241 + item.pszText = pInputNode->pLocale->pszName; 242 + item.iImage = LangImageIndex; 243 + item.iSelectedImage = LangImageIndex; 244 + item.lParam = LOWORD(pInputNode->pLocale->dwId); // HIWORD(item.lParam) == 0 245 + if (bBold) 153 246 { 154 - ImageIndex = ImageList_AddIcon(hImageList, hLayoutIcon); 155 - DestroyIcon(hLayoutIcon); 247 + item.state = item.stateMask = TVIS_BOLD; 156 248 } 249 + insert.hParent = TVI_ROOT; 250 + insert.hInsertAfter = TVI_LAST; 251 + insert.item = item; 252 + hItem = TreeView_InsertItem(hwndList, &insert); 253 + 254 + // The type of input method (currently keyboard only) 255 + LoadStringW(hApplet, IDS_KEYBOARD, szKeyboard, _countof(szKeyboard)); 256 + ZeroMemory(&item, sizeof(item)); 257 + item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE; 258 + item.pszText = szKeyboard; 259 + item.iImage = s_iKeyboardImage; 260 + item.iSelectedImage = s_iKeyboardImage; 261 + item.lParam = 0; // HIWORD(item.lParam) == 0 262 + insert.hParent = hItem; 263 + insert.hInsertAfter = TVI_LAST; 264 + insert.item = item; 265 + hItem = TreeView_InsertItem(hwndList, &insert); 157 266 } 267 + else 268 + { 269 + // Language 270 + ZeroMemory(&item, sizeof(item)); 271 + item.mask = TVIF_STATE | TVIF_HANDLE; 272 + item.hItem = hItem; 273 + item.stateMask = TVIS_BOLD; 274 + if (TreeView_GetItem(hwndList, &item) && bBold && !(item.state & TVIS_BOLD)) 275 + { 276 + // Make the item bold 277 + item.mask = TVIF_STATE | TVIF_HANDLE; 278 + item.hItem = hItem; 279 + item.state = item.stateMask = TVIS_BOLD; 280 + TreeView_SetItem(hwndList, &item); 281 + } 158 282 159 - ZeroMemory(&item, sizeof(item)); 160 - item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_IMAGE; 161 - item.pszText = pInputNode->pLocale->pszName; 162 - item.iItem = ListView_GetItemCount(hwndList); 163 - item.lParam = (LPARAM)pInputNode; 164 - item.iImage = ImageIndex; 165 - ItemIndex = ListView_InsertItem(hwndList, &item); 283 + // The type of input method (currently keyboard only) 284 + hItem = TreeView_GetChild(hwndList, hItem); 285 + } 166 286 167 - ListView_SetItemText(hwndList, ItemIndex, 1, pInputNode->pLayout->pszName); 287 + // Input method 288 + if (hItem) 289 + { 290 + INT ImeImageIndex = s_iDotImage; 291 + if (IS_IME_HKL(pInputNode->hkl) && pInputNode->pLayout->pszImeFile) // IME? 292 + { 293 + HICON hImeIcon = LoadIMEIcon(pInputNode->pLayout->pszImeFile); 294 + if (hImeIcon) 295 + { 296 + ImeImageIndex = ImageList_AddIcon(hImageList, hImeIcon); 297 + DestroyIcon(hImeIcon); 298 + } 299 + } 300 + 301 + ZeroMemory(&item, sizeof(item)); 302 + item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE | TVIF_STATE; 303 + item.pszText = pInputNode->pLayout->pszName; 304 + item.iImage = ImeImageIndex; 305 + item.iSelectedImage = ImeImageIndex; 306 + item.lParam = (LPARAM)pInputNode; // HIWORD(item.lParam) != 0 307 + if (bBold) 308 + { 309 + item.state = item.stateMask = TVIS_BOLD; // Make the item bold 310 + } 311 + insert.hParent = hItem; 312 + insert.hInsertAfter = TVI_LAST; 313 + insert.item = item; 314 + hItem = TreeView_InsertItem(hwndList, &insert); 315 + } 168 316 } 169 317 318 + static VOID ExpandTreeItem(HWND hwndTree, HTREEITEM hItem) 319 + { 320 + TreeView_Expand(hwndTree, hItem, TVE_EXPAND); 321 + hItem = TreeView_GetChild(hwndTree, hItem); 322 + while (hItem) 323 + { 324 + ExpandTreeItem(hwndTree, hItem); 325 + hItem = TreeView_GetNextSibling(hwndTree, hItem); 326 + } 327 + } 170 328 171 329 static VOID 172 330 UpdateInputListView(HWND hwndList) 173 331 { 174 332 INPUT_LIST_NODE *pNode; 175 - HIMAGELIST hImageList = ListView_GetImageList(hwndList, LVSIL_SMALL); 176 - INT iSelected = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED); 333 + HIMAGELIST hImageList = TreeView_GetImageList(hwndList, TVSIL_NORMAL); 334 + HTREEITEM hItem; 335 + HICON hKeyboardIcon, hDotIcon; 177 336 178 - if (hImageList) 337 + ImageList_RemoveAll(hImageList); 338 + TreeView_DeleteAllItems(hwndList); 339 + 340 + // Add keyboard icon 341 + s_iKeyboardImage = -1; 342 + hKeyboardIcon = (HICON)LoadImageW(hApplet, MAKEINTRESOURCEW(IDI_KEYBOARD), IMAGE_ICON, 343 + GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 344 + 0); 345 + if (hKeyboardIcon) 179 346 { 180 - ImageList_RemoveAll(hImageList); 347 + s_iKeyboardImage = ImageList_AddIcon(hImageList, hKeyboardIcon); 348 + DestroyIcon(hKeyboardIcon); 181 349 } 182 350 183 - ListView_DeleteAllItems(hwndList); 351 + // Add dot icon 352 + s_iDotImage = -1; 353 + hDotIcon = (HICON)LoadImageW(hApplet, MAKEINTRESOURCEW(IDI_DOT), IMAGE_ICON, 354 + GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 355 + 0); 356 + if (hDotIcon) 357 + { 358 + s_iDotImage = ImageList_AddIcon(hImageList, hDotIcon); 359 + DestroyIcon(hDotIcon); 360 + } 361 + 362 + InputList_Sort(); 363 + 364 + s_nAliveLeafCount = InputList_GetAliveCount(); 184 365 185 - for (pNode = InputList_GetFirst(); pNode != NULL; pNode = pNode->pNext) 366 + // Add items to the list 367 + for (pNode = InputList_GetFirst(); pNode; pNode = pNode->pNext) 186 368 { 187 369 if (pNode->wFlags & INPUT_LIST_NODE_FLAG_DELETED) 188 370 continue; ··· 190 372 AddToInputListView(hwndList, pNode); 191 373 } 192 374 193 - if (iSelected != -1) 375 + // Expand all (with counting s_nRootCount) 376 + s_nRootCount = 0; 377 + hItem = TreeView_GetRoot(hwndList); 378 + while (hItem) 194 379 { 195 - INT nCount = ListView_GetItemCount(hwndList); 196 - LV_ITEM item = { LVIF_STATE }; 197 - item.state = item.stateMask = LVIS_SELECTED; 198 - item.iItem = ((nCount == iSelected) ? nCount - 1 : iSelected); 199 - ListView_SetItem(hwndList, &item); 380 + ++s_nRootCount; 381 + ExpandTreeItem(hwndList, hItem); 382 + hItem = TreeView_GetNextSibling(hwndList, hItem); 200 383 } 201 384 385 + // Redraw 202 386 InvalidateRect(hwndList, NULL, TRUE); 203 387 } 204 - 205 388 206 389 static VOID 207 390 OnInitSettingsPage(HWND hwndDlg) 208 391 { 209 392 HWND hwndInputList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST); 393 + HIMAGELIST hLayoutImageList, hOldImageList; 210 394 211 395 LayoutList_Create(); 212 396 LocaleList_Create(); 213 397 InputList_Create(); 214 398 215 - if (hwndInputList != NULL) 399 + EnableWindow(GetDlgItem(hwndDlg, IDC_LANGUAGE_BAR), FALSE); 400 + 401 + hLayoutImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON), 402 + GetSystemMetrics(SM_CYSMICON), 403 + ILC_COLOR8 | ILC_MASK, 0, 0); 404 + if (hLayoutImageList != NULL) 216 405 { 217 - WCHAR szBuffer[MAX_STR_LEN]; 218 - HIMAGELIST hLayoutImageList; 219 - LV_COLUMN column = { LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM }; 406 + hOldImageList = TreeView_SetImageList(hwndInputList, hLayoutImageList, TVSIL_NORMAL); 407 + ImageList_Destroy(hOldImageList); 408 + } 220 409 221 - ListView_SetExtendedListViewStyle(hwndInputList, LVS_EX_FULLROWSELECT); 222 - 223 - LoadStringW(hApplet, IDS_LANGUAGE, szBuffer, ARRAYSIZE(szBuffer)); 224 - column.fmt = LVCFMT_LEFT; 225 - column.iSubItem = 0; 226 - column.pszText = szBuffer; 227 - column.cx = 175; 228 - ListView_InsertColumn(hwndInputList, 0, &column); 229 - 230 - LoadStringW(hApplet, IDS_LAYOUT, szBuffer, ARRAYSIZE(szBuffer)); 231 - column.fmt = LVCFMT_RIGHT; 232 - column.cx = 155; 233 - column.iSubItem = 1; 234 - column.pszText = szBuffer; 235 - ListView_InsertColumn(hwndInputList, 1, &column); 236 - 237 - hLayoutImageList = ImageList_Create(GetSystemMetrics(SM_CXSMICON) * 2, 238 - GetSystemMetrics(SM_CYSMICON), 239 - ILC_COLOR8 | ILC_MASK, 0, 0); 240 - if (hLayoutImageList != NULL) 241 - { 242 - HIMAGELIST hOldImagelist = ListView_SetImageList(hwndInputList, hLayoutImageList, LVSIL_SMALL); 243 - ImageList_Destroy(hOldImagelist); 244 - } 245 - 246 - UpdateInputListView(hwndInputList); 247 - } 410 + UpdateInputListView(hwndInputList); 248 411 249 412 SetControlsState(hwndDlg); 250 413 } ··· 283 446 HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST); 284 447 if (hwndList) 285 448 { 286 - LVITEM item = { LVIF_PARAM }; 287 - item.iItem = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED); 449 + HTREEITEM hItem = TreeView_GetSelection(hwndList); 450 + TV_ITEM item = { TVIF_HANDLE | TVIF_PARAM }; 451 + item.hItem = hItem; 288 452 289 - if (ListView_GetItem(hwndList, &item)) 453 + if (hItem && TreeView_GetItem(hwndList, &item)) 290 454 { 291 - InputList_Remove((INPUT_LIST_NODE*) item.lParam); 455 + if (item.lParam == 0) // Branch? (currently branch is keyboard only) 456 + { 457 + // Get root of branch 458 + item.hItem = TreeView_GetParent(hwndList, hItem); 459 + TreeView_GetItem(hwndList, &item); 460 + } 461 + 462 + if (HIWORD(item.lParam)) // Leaf? 463 + { 464 + if (InputList_Remove((INPUT_LIST_NODE*)item.lParam)) 465 + s_bDefaultInputChanged = TRUE; 466 + } 467 + else // Root? 468 + { 469 + if (InputList_RemoveByLang(LOWORD(item.lParam))) 470 + s_bDefaultInputChanged = TRUE; 471 + } 472 + 292 473 UpdateInputListView(hwndList); 293 474 SetControlsState(hwndDlg); 294 475 PropSheet_Changed(GetParent(hwndDlg), hwndDlg); ··· 302 483 HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST); 303 484 if (hwndList) 304 485 { 305 - LVITEM item = { LVIF_PARAM }; 306 - item.iItem = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED); 486 + HTREEITEM hItem = TreeView_GetSelection(hwndList); 487 + TV_ITEM item = { TVIF_HANDLE | TVIF_PARAM }; 488 + item.hItem = hItem; 307 489 308 - if (ListView_GetItem(hwndList, &item)) 490 + if (hItem && TreeView_GetItem(hwndList, &item) && HIWORD(item.lParam)) 309 491 { 310 492 if (DialogBoxParamW(hApplet, 311 493 MAKEINTRESOURCEW(IDD_INPUT_LANG_PROP), ··· 322 504 } 323 505 break; 324 506 325 - case IDC_SET_DEFAULT: 326 - { 327 - HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST); 328 - if (hwndList) 329 - { 330 - LVITEM item = { LVIF_PARAM }; 331 - item.iItem = ListView_GetNextItem(hwndList, -1, LVNI_SELECTED); 332 - 333 - if (ListView_GetItem(hwndList, &item)) 334 - { 335 - InputList_SetDefault((INPUT_LIST_NODE*) item.lParam); 336 - UpdateInputListView(hwndList); 337 - SetControlsState(hwndDlg); 338 - PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 339 - } 340 - } 341 - } 342 - break; 343 - 344 507 case IDC_KEY_SET_BTN: 345 508 { 346 509 DialogBoxW(hApplet, ··· 349 512 KeySettingsDialogProc); 350 513 } 351 514 break; 515 + 516 + case IDC_LANGUAGE_BAR: 517 + { 518 + // FIXME 519 + break; 520 + } 521 + 522 + case IDC_DEFAULT_LANGUAGE: 523 + { 524 + if (HIWORD(wParam) == CBN_SELENDOK) 525 + { 526 + HWND hwndList = GetDlgItem(hwndDlg, IDC_KEYLAYOUT_LIST); 527 + HWND hwndCombo = GetDlgItem(hwndDlg, IDC_DEFAULT_LANGUAGE); 528 + INT iSelected = (INT)SendMessageW(hwndCombo, CB_GETCURSEL, 0, 0); 529 + if (iSelected != CB_ERR) 530 + { 531 + LPARAM lParam = SendMessageW(hwndCombo, CB_GETITEMDATA, iSelected, 0); 532 + if (lParam) 533 + { 534 + INPUT_LIST_NODE* pNode = (INPUT_LIST_NODE*)lParam; 535 + if (!(pNode->wFlags & INPUT_LIST_NODE_FLAG_DEFAULT)) 536 + { 537 + s_bDefaultInputChanged = TRUE; 538 + InputList_SetDefault(pNode); 539 + UpdateInputListView(hwndList); 540 + SetControlsState(hwndDlg); 541 + PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 542 + } 543 + } 544 + } 545 + } 546 + } 352 547 } 353 548 } 354 549 355 550 static BOOL IsRebootNeeded(VOID) 356 551 { 357 552 INPUT_LIST_NODE *pNode; 553 + 554 + if (s_bDefaultInputChanged) 555 + return TRUE; 358 556 359 557 for (pNode = InputList_GetFirst(); pNode != NULL; pNode = pNode->pNext) 360 558 { ··· 394 592 return Ret; 395 593 } 396 594 397 - static VOID 595 + static INT_PTR 398 596 OnNotifySettingsPage(HWND hwndDlg, LPARAM lParam) 399 597 { 400 598 LPNMHDR header = (LPNMHDR)lParam; 401 599 402 600 switch (header->code) 403 601 { 404 - case LVN_ITEMCHANGED: 602 + case TVN_SELCHANGED: 603 + { 604 + SetControlsState(hwndDlg); 605 + break; 606 + } 607 + 608 + case TVN_ITEMEXPANDING: 405 609 { 406 - if (header->idFrom == IDC_KEYLAYOUT_LIST) 610 + // FIXME: Prevent collapse (COMCTL32 is buggy) 611 + // https://bugs.winehq.org/show_bug.cgi?id=53727 612 + NM_TREEVIEW* pTreeView = (NM_TREEVIEW*)lParam; 613 + if ((pTreeView->action & TVE_TOGGLE) == TVE_COLLAPSE) 407 614 { 408 - SetControlsState(hwndDlg); 615 + SetWindowLongPtrW(hwndDlg, DWLP_MSGRESULT, TRUE); 616 + return TRUE; 409 617 } 618 + break; 410 619 } 411 - break; 412 620 413 621 case PSN_APPLY: 414 622 { ··· 429 637 ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0); 430 638 } 431 639 } 640 + break; 432 641 } 433 - break; 434 642 } 643 + 644 + return 0; 435 645 } 436 - 437 646 438 647 INT_PTR CALLBACK 439 648 SettingsPageProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) ··· 453 662 break; 454 663 455 664 case WM_NOTIFY: 456 - OnNotifySettingsPage(hwndDlg, lParam); 457 - break; 665 + return OnNotifySettingsPage(hwndDlg, lParam); 458 666 } 459 667 460 668 return FALSE;