diff --git a/PowerEditor/installer/nativeLang/chinese.xml b/PowerEditor/installer/nativeLang/chinese.xml index ca9dacc37..2aff7e451 100644 --- a/PowerEditor/installer/nativeLang/chinese.xml +++ b/PowerEditor/installer/nativeLang/chinese.xml @@ -437,7 +437,7 @@ - + @@ -909,6 +909,11 @@ + + + + + diff --git a/PowerEditor/installer/nativeLang/english.xml b/PowerEditor/installer/nativeLang/english.xml index 046a7a208..cce8007be 100644 --- a/PowerEditor/installer/nativeLang/english.xml +++ b/PowerEditor/installer/nativeLang/english.xml @@ -38,7 +38,7 @@ - + @@ -425,7 +425,7 @@ - + @@ -437,7 +437,7 @@ - + @@ -910,11 +910,14 @@ - + + + + + - @@ -1067,7 +1070,7 @@ Do you want to launch Notepad++ in Administrator mode?"/> - + diff --git a/PowerEditor/installer/nativeLang/french.xml b/PowerEditor/installer/nativeLang/french.xml index dd80bf740..32efb8433 100644 --- a/PowerEditor/installer/nativeLang/french.xml +++ b/PowerEditor/installer/nativeLang/french.xml @@ -895,6 +895,11 @@ + + + + + diff --git a/PowerEditor/src/WinControls/Preference/preference.rc b/PowerEditor/src/WinControls/Preference/preference.rc index 6301410ce..6f854881c 100644 --- a/PowerEditor/src/WinControls/Preference/preference.rc +++ b/PowerEditor/src/WinControls/Preference/preference.rc @@ -130,16 +130,15 @@ BEGIN CONTROL "Enable Notepad++ auto-updater",IDC_CHECK_AUTOUPDATE, "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,37,173,217,10 CONTROL "Enable",IDC_CHECK_CLICKABLELINK_ENABLE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,15,140,10 CONTROL "No underline",IDC_CHECK_CLICKABLELINK_NOUNDERLINE, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,28,140,10 - CONTROL "Enable for all tabs",IDC_CHECK_FILEAUTODETECTION_ALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,57,140,10 - CONTROL "Enable only for current tab",IDC_CHECK_FILEAUTODETECTION_CURRENT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,69,140,10 - CONTROL "Update silently",IDC_CHECK_UPDATESILENTLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,81,140,10 - CONTROL "Scroll to the last line after update",IDC_CHECK_UPDATEGOTOEOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,93,140,10 + COMBOBOX IDC_COMBO_FILEUPDATECHOICE,267, 60,140,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Update silently",IDC_CHECK_UPDATESILENTLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,76,140,10 + CONTROL "Scroll to the last line after update",IDC_CHECK_UPDATEGOTOEOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,267,88,140,10 EDITTEXT IDC_EDIT_SESSIONFILEEXT,381,135,34,14,ES_AUTOHSCROLL EDITTEXT IDC_EDIT_WORKSPACEFILEEXT,381,152,34,14,ES_AUTOHSCROLL GROUPBOX "Document Switcher (Ctrl+TAB)",IDC_DOCUMENTSWITCHER_STATIC,37,4,155,39,BS_CENTER GROUPBOX "Clickable Link Settings",IDC_CLICKABLELINK_STATIC,259,4,155,39,BS_CENTER GROUPBOX "Document Peeker",IDC_DOCUMENTPEEK_STATIC,37,47,155,39,BS_CENTER - GROUPBOX "File Status Auto-Detection",IDC_FILEAUTODETECTION_STATIC,259,47,155,62,BS_CENTER + GROUPBOX "File Status Auto-Detection",IDC_FILEAUTODETECTION_STATIC,259,47,155,60,BS_CENTER RTEXT "Session file ext.:",IDC_SESSIONFILEEXT_STATIC,271,138,108,8 RTEXT "Workspace file ext.:",IDC_WORKSPACEFILEEXT_STATIC,271,155,108,8 END diff --git a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp index 1680025d1..bc5c1c345 100644 --- a/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp +++ b/PowerEditor/src/WinControls/Preference/preferenceDlg.cpp @@ -871,6 +871,9 @@ INT_PTR CALLBACK MarginsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lPa return FALSE; } +const size_t fileUpdateChoiceEnable = 0; +const size_t fileUpdateChoiceEnable4All = 1; +const size_t fileUpdateChoiceDisable = 2; INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM) { NppParameters *pNppParam = NppParameters::getInstance(); @@ -879,23 +882,29 @@ INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM) { case WM_INITDIALOG : { + ::SendDlgItemMessage(_hSelf, IDC_COMBO_FILEUPDATECHOICE, CB_ADDSTRING, 0, reinterpret_cast(TEXT("Enable"))); + ::SendDlgItemMessage(_hSelf, IDC_COMBO_FILEUPDATECHOICE, CB_ADDSTRING, 0, reinterpret_cast(TEXT("Enable with all opened files"))); + ::SendDlgItemMessage(_hSelf, IDC_COMBO_FILEUPDATECHOICE, CB_ADDSTRING, 0, reinterpret_cast(TEXT("Disable"))); + + int selIndex = -1; + if (nppGUI._fileAutoDetection & cdEnabledOld) { - ::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL, BM_SETCHECK, BST_CHECKED, 0); - ::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT, BM_SETCHECK, BST_UNCHECKED, 0); - ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT), FALSE); + selIndex = fileUpdateChoiceEnable4All; } else if (nppGUI._fileAutoDetection & cdEnabledNew) - { - ::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT, BM_SETCHECK, BST_CHECKED, 0); - ::SendDlgItemMessage(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL, BM_SETCHECK, BST_UNCHECKED, 0); - ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL), FALSE); + { + selIndex = fileUpdateChoiceEnable; } else //cdDisabled { ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), FALSE); ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), FALSE); + + selIndex = fileUpdateChoiceDisable; } + + ::SendDlgItemMessage(_hSelf, IDC_COMBO_FILEUPDATECHOICE, CB_SETCURSEL, selIndex, 0); bool bCheck = (nppGUI._fileAutoDetection & cdAutoUpdate) ? true : false; ::SendDlgItemMessage(_hSelf, IDC_CHECK_UPDATESILENTLY, BM_SETCHECK, bCheck? BST_CHECKED: BST_UNCHECKED, 0); @@ -973,54 +982,19 @@ INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM) switch (wParam) { - case IDC_CHECK_FILEAUTODETECTION_ALL: - case IDC_CHECK_FILEAUTODETECTION_CURRENT: - { - bool isAllChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_ALL); - bool isCurrentChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_CURRENT); - - ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), isAllChecked | isCurrentChecked); - ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), isAllChecked | isCurrentChecked); - - ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_ALL), !isCurrentChecked); - ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_FILEAUTODETECTION_CURRENT), !isAllChecked); - - bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY); - bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF); - - int cd = cdDisabled; - - if (isAllChecked | isCurrentChecked) - { - if (isAllChecked) - cd |= cdEnabledOld; - else - cd |= cdEnabledNew; - - if (isSilent) - cd |= cdAutoUpdate; - if (isGo2End) - cd |= cdGo2end; - } - - nppGUI._fileAutoDetection = cd; - } - return TRUE; - case IDC_CHECK_UPDATESILENTLY: case IDC_CHECK_UPDATEGOTOEOF: { bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY); bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF); - bool isAllChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_ALL); - bool isCurrentChecked = isCheckedOrNot(IDC_CHECK_FILEAUTODETECTION_CURRENT); + auto index = ::SendDlgItemMessage(_hSelf, IDC_COMBO_FILEUPDATECHOICE, CB_GETCURSEL, 0, 0); int cd = cdDisabled; - if (isAllChecked | isCurrentChecked) + if (index == fileUpdateChoiceEnable || index == fileUpdateChoiceEnable4All) { - if (isAllChecked) + if (index == fileUpdateChoiceEnable4All) cd |= cdEnabledOld; else cd |= cdEnabledNew; @@ -1117,6 +1091,49 @@ INT_PTR CALLBACK SettingsDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM) nppGUI._isDocPeekOnMap = isCheckedOrNot(IDC_CHECK_ENABLEDOCPEEKONMAP); return TRUE; } + + default: + { + if (HIWORD(wParam) == CBN_SELCHANGE) + { + if (LOWORD(wParam) == IDC_COMBO_FILEUPDATECHOICE) + { + auto index = ::SendDlgItemMessage(_hSelf, IDC_COMBO_FILEUPDATECHOICE, CB_GETCURSEL, 0, 0); + + if (index == fileUpdateChoiceEnable || index == fileUpdateChoiceEnable4All) + { + bool isSilent = isCheckedOrNot(IDC_CHECK_UPDATESILENTLY); + bool isGo2End = isCheckedOrNot(IDC_CHECK_UPDATEGOTOEOF); + + int cd = cdDisabled; + + if (index == fileUpdateChoiceEnable4All) + cd |= cdEnabledOld; + else + cd |= cdEnabledNew; + + if (isSilent) + cd |= cdAutoUpdate; + if (isGo2End) + cd |= cdGo2end; + + nppGUI._fileAutoDetection = cd; + + ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), TRUE); + ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), TRUE); + } + else if (index == fileUpdateChoiceDisable) + { + ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATESILENTLY), FALSE); + ::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_UPDATEGOTOEOF), FALSE); + + nppGUI._fileAutoDetection = cdDisabled; + } + + return TRUE; + } + } + } } } } diff --git a/PowerEditor/src/WinControls/Preference/preference_rc.h b/PowerEditor/src/WinControls/Preference/preference_rc.h index cd3893159..8dcbbe556 100644 --- a/PowerEditor/src/WinControls/Preference/preference_rc.h +++ b/PowerEditor/src/WinControls/Preference/preference_rc.h @@ -162,14 +162,12 @@ #define IDC_HISTORY_GB_STATIC (IDD_PREFERENCE_SETTING_BOX + 4) #define IDC_CHECK_DONTCHECKHISTORY (IDD_PREFERENCE_SETTING_BOX + 5) #define IDC_MAXNBFILE_STATIC (IDD_PREFERENCE_SETTING_BOX + 6) - #define IDC_CHECK_FILEAUTODETECTION_ALL (IDD_PREFERENCE_SETTING_BOX + 7) #define IDC_CHECK_MIN2SYSTRAY (IDD_PREFERENCE_SETTING_BOX + 8) #define IDC_CHECK_REMEMBERSESSION (IDD_PREFERENCE_SETTING_BOX + 9) #define IDC_TABSIZEVAL_STATIC (IDD_PREFERENCE_SETTING_BOX + 10) #define IDC_MAXNBFILEVAL_STATIC (IDD_PREFERENCE_SETTING_BOX + 11) #define IDC_FILEAUTODETECTION_STATIC (IDD_PREFERENCE_SETTING_BOX + 12) #define IDC_CHECK_UPDATESILENTLY (IDD_PREFERENCE_SETTING_BOX + 13) - #define IDC_CHECK_FILEAUTODETECTION_CURRENT (IDD_PREFERENCE_SETTING_BOX + 14) #define IDC_RADIO_BKNONE (IDD_PREFERENCE_SETTING_BOX + 15) #define IDC_RADIO_BKSIMPLE (IDD_PREFERENCE_SETTING_BOX + 16) #define IDC_RADIO_BKVERBOSE (IDD_PREFERENCE_SETTING_BOX + 17) @@ -205,6 +203,7 @@ #define IDC_DOCUMENTPEEK_STATIC (IDD_PREFERENCE_SETTING_BOX + 44) #define IDC_CHECK_ENABLEDOCPEEKER (IDD_PREFERENCE_SETTING_BOX + 45) #define IDC_CHECK_ENABLEDOCPEEKONMAP (IDD_PREFERENCE_SETTING_BOX + 46) + #define IDC_COMBO_FILEUPDATECHOICE (IDD_PREFERENCE_SETTING_BOX + 47) #define IDD_PREFERENCE_NEWDOCSETTING_BOX 6400 //(IDD_PREFERENCE_BOX + 400) diff --git a/PowerEditor/src/localization.cpp b/PowerEditor/src/localization.cpp index 6073d795e..b656c8bb9 100644 --- a/PowerEditor/src/localization.cpp +++ b/PowerEditor/src/localization.cpp @@ -1090,6 +1090,50 @@ bool NativeLangSpeaker::changeDlgLang(HWND hDlg, const char *dlgTagName, char *t } } } + + // Set the text of child control + for (TiXmlNodeA *childNode = dlgNode->FirstChildElement("ComboBox"); + childNode; + childNode = childNode->NextSibling("ComboBox")) + { + std::vector comboElms; + TiXmlElementA *element = childNode->ToElement(); + int id; + element->Attribute("id", &id); + HWND hCombo = ::GetDlgItem(hDlg, id); + + if (hCombo) + { + for (TiXmlNodeA *gChildNode = childNode->FirstChildElement("Element"); + gChildNode; + gChildNode = gChildNode->NextSibling("Element")) + { + TiXmlElementA *comBoelement = gChildNode->ToElement(); + const char *name = comBoelement->Attribute("name"); + const wchar_t *nameW = wmc->char2wchar(name, _nativeLangEncoding); + comboElms.push_back(nameW); + } + } + + size_t count = ::SendMessage(hCombo, CB_GETCOUNT, 0, 0); + if (count == comboElms.size()) + { + // get selected index + auto selIndex = ::SendMessage(hCombo, CB_GETCURSEL, 0, 0); + + // remove all old items + ::SendMessage(hCombo, CB_RESETCONTENT, 0, 0); + + // add translated entries + for (const auto& i : comboElms) + { + ::SendMessage(hCombo, CB_ADDSTRING, 0, reinterpret_cast(i.c_str())); + } + + // restore selected index + ::SendMessage(hCombo, CB_SETCURSEL, selIndex, 0); + } + } return true; }