Add confirmation prompt to Replace-in-all-opened-docs command

Fix #5253, fix #8432, close #8438
This commit is contained in:
Scott Sumner 2020-06-19 09:05:08 -04:00 committed by Don HO
parent 68d66a560c
commit 19bdbd093c
No known key found for this signature in database
GPG Key ID: 6C429F1D8D84F46E
3 changed files with 40 additions and 13 deletions

View File

@ -1268,6 +1268,8 @@ Find in all files except exe, obj && log:
<replace-in-files-confirm-title value="Are you sure?"/>
<replace-in-files-confirm-directory value="Are you sure you want to replace all occurrences in :"/>
<replace-in-files-confirm-filetype value="For file type :"/>
<replace-in-open-docs-confirm-title value="Are you sure?"/>
<replace-in-open-docs-confirm-message value="Are you sure you want to replace all occurrences in all open documents?"/>
<find-result-caption value="Find result"/>
<find-result-title value="Search"/>
<find-result-title-info value="($INT_REPLACE1$ hits in $INT_REPLACE2$ files of $INT_REPLACE3$ searched)"/>

View File

@ -1265,6 +1265,8 @@ INT_PTR CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
std::lock_guard<std::mutex> lock(findOps_mutex);
if (_currentStatus == REPLACE_DLG)
{
if (replaceInOpenDocsConfirmCheck())
{
setStatusbarMessage(TEXT(""), FSNoMessage);
HWND hFindCombo = ::GetDlgItem(_hSelf, IDFINDWHAT);
@ -1279,6 +1281,7 @@ INT_PTR CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
nppParamInst._isFindReplacing = false;
}
}
}
return TRUE;
case IDREPLACEALL :
@ -2811,9 +2814,12 @@ void FindReplaceDlg::execSavedCommand(int cmd, uptr_t intValue, const generic_st
nppParamInst._isFindReplacing = false;
break;
case IDC_REPLACE_OPENEDFILES:
if (replaceInOpenDocsConfirmCheck())
{
nppParamInst._isFindReplacing = true;
replaceAllInOpenedDocs();
nppParamInst._isFindReplacing = false;
}
break;
case IDD_FINDINFILES_FIND_BUTTON:
nppParamInst._isFindReplacing = true;
@ -3227,6 +3233,24 @@ bool FindReplaceDlg::replaceInFilesConfirmCheck(generic_string directory, generi
return confirmed;
}
bool FindReplaceDlg::replaceInOpenDocsConfirmCheck(void)
{
bool confirmed = false;
NativeLangSpeaker* pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker();
generic_string title = pNativeSpeaker->getLocalizedStrFromID("replace-in-open-docs-confirm-title", TEXT("Are you sure?"));
generic_string msg = pNativeSpeaker->getLocalizedStrFromID("replace-in-open-docs-confirm-message", TEXT("Are you sure you want to replace all occurrences in all open documents?"));
int res = ::MessageBox(NULL, msg.c_str(), title.c_str(), MB_OKCANCEL | MB_DEFBUTTON2 | MB_TASKMODAL);
if (res == IDOK)
{
confirmed = true;
}
return confirmed;
}
generic_string Finder::getHitsString(int count) const
{
NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker();

View File

@ -417,6 +417,7 @@ private :
void saveInMacro(size_t cmd, int cmdType);
void drawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
bool replaceInFilesConfirmCheck(generic_string directory, generic_string fileTypes);
bool replaceInOpenDocsConfirmCheck(void);
};
//FindIncrementDlg: incremental search dialog, docked in rebar