From 1e48bf25f1f074059787169af0a2106f36c2f111 Mon Sep 17 00:00:00 2001 From: Don Ho Date: Wed, 19 Jan 2011 21:05:40 +0000 Subject: [PATCH] [NEW_FEATURE] 1. New "Mark" tab for "Mark all" feature in Find/Replace dialog. 2. Make "Fide what" and "Replace with" fields larger in Find/Replace dialog. 3. Make some message dialogs translatable. git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository/trunk@733 f5eea248-9336-0410-98b8-ebc06183d4e3 --- PowerEditor/installer/nativeLang/english.xml | 2 +- PowerEditor/installer/nativeLang/french.xml | 13 +++ .../misc/npp.help/HTML/Introduction.html | 33 +++--- PowerEditor/src/Notepad_plus.cpp | 1 - PowerEditor/src/NppCommands.cpp | 48 ++++++-- PowerEditor/src/NppIO.cpp | 25 +++- PowerEditor/src/NppNotification.cpp | 7 +- PowerEditor/src/Parameters.cpp | 3 +- PowerEditor/src/Parameters.h | 12 +- .../src/ScitillaComponent/FindReplaceDlg.cpp | 107 ++++++++++-------- .../src/ScitillaComponent/FindReplaceDlg.h | 7 +- .../src/ScitillaComponent/FindReplaceDlg.rc | 87 +++++++------- PowerEditor/src/localization.cpp | 93 +++++++++++++-- PowerEditor/src/localization.h | 11 +- 14 files changed, 296 insertions(+), 153 deletions(-) diff --git a/PowerEditor/installer/nativeLang/english.xml b/PowerEditor/installer/nativeLang/english.xml index a89799cae..cdfea4de4 100644 --- a/PowerEditor/installer/nativeLang/english.xml +++ b/PowerEditor/installer/nativeLang/english.xml @@ -260,7 +260,7 @@ - + diff --git a/PowerEditor/installer/nativeLang/french.xml b/PowerEditor/installer/nativeLang/french.xml index dae8da969..b16121420 100644 --- a/PowerEditor/installer/nativeLang/french.xml +++ b/PowerEditor/installer/nativeLang/french.xml @@ -588,5 +588,18 @@ + + + + + + + + + + + + + diff --git a/PowerEditor/misc/npp.help/HTML/Introduction.html b/PowerEditor/misc/npp.help/HTML/Introduction.html index 592d58458..b31ea1e9e 100644 --- a/PowerEditor/misc/npp.help/HTML/Introduction.html +++ b/PowerEditor/misc/npp.help/HTML/Introduction.html @@ -3,14 +3,19 @@

Introduction

-

-This -document assumes that you have an English install of Notepad++. If -you have installed it in another language, the commands and options -will probably have been translated into your native language. In that -case, find the command with the similar name, the logical grouping -will still be the same. -p>All the images used in this helpfile assume the default settings. + +

This document + is dedicated to the countless lost hours of both people having +to search for simple answers, and people having to answer questions +that shouldn't have to be asked in the first place. Documentation is +always hard to get, good documentation nearly impossible =]. +

This +markup is based in the default appearance of Microsoft Windows. This +can be different on your own system, but the names (text) should always +the same. This is especially important on the screenshots. They are +only for reference, your appearance of Notepad++ can be quite different. + +

All the images used in this helpfile assume the default settings. If you change any of these settings, you'll have to look for the other image instead, this is most noticable with the toolbar (the position of images will always remain the same). @@ -43,16 +48,8 @@ any text associated with them directly. Labels look like this: Finally, when mouse or keyboard interaction is required, the buttons or keys to press are marked like this: Leftmousebutton -

This -markup is based in the default appearance of Microsoft Windows. This -can be different on your own system, but the names (text) should always -the same. This is especially important on the screenshots. They are -only for reference, your appearance of Notepad++ can be quite different. -

This -helpfile is dedicated to the countless lost hours of both people having -to search for simple answers, and people having to answer questions -that shouldn't have to be asked in the first place. Documentation is -always hard to get, good documentation nearly impossible =]. +

 

+

This help file was written by Harry (harrybharry@users.sourceforge.net) and converted to HTML using KompoZer, compiled to a help file with diff --git a/PowerEditor/src/Notepad_plus.cpp b/PowerEditor/src/Notepad_plus.cpp index 2361490d2..540557d51 100644 --- a/PowerEditor/src/Notepad_plus.cpp +++ b/PowerEditor/src/Notepad_plus.cpp @@ -361,7 +361,6 @@ LRESULT Notepad_plus::init(HWND hwnd) // Updater menu item if (!nppGUI._doesExistUpdater) { - //::MessageBox(NULL, TEXT("pas de updater"), TEXT(""), MB_OK); ::DeleteMenu(_mainMenuHandle, IDM_UPDATE_NPP, MF_BYCOMMAND); ::DrawMenuBar(hwnd); } diff --git a/PowerEditor/src/NppCommands.cpp b/PowerEditor/src/NppCommands.cpp index 57780b628..2cdbba4bb 100644 --- a/PowerEditor/src/NppCommands.cpp +++ b/PowerEditor/src/NppCommands.cpp @@ -1182,7 +1182,12 @@ void Notepad_plus::command(int id) { if (buf->isDirty()) { - int answer = ::MessageBox(NULL, TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), TEXT("Save Current Modification"), MB_YESNO); + int answer = _nativeLangSpeaker.messageBox("SaveCurrentModifWaring", + NULL, + TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), + TEXT("Save Current Modification"), + MB_YESNO); + if (answer == IDYES) { fileSave(); @@ -1194,7 +1199,12 @@ void Notepad_plus::command(int id) if (_pEditView->execute(SCI_CANUNDO) == TRUE) { - int answer = ::MessageBox(NULL, TEXT("All the saved modifications can not be undone.\r\rContinue?"), TEXT("Lose Undo Ability Waning"), MB_YESNO); + generic_string msg, title; + int answer = _nativeLangSpeaker.messageBox("LoseUndoAbilityWaring", + NULL, + TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), + TEXT("Lose Undo Ability Waning"), + MB_YESNO); if (answer == IDYES) { // Do nothing @@ -1286,7 +1296,13 @@ void Notepad_plus::command(int id) Buffer * buf = _pEditView->getCurrentBuffer(); if (buf->isDirty()) { - int answer = ::MessageBox(NULL, TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), TEXT("Save Current Modification"), MB_YESNO); + generic_string warning, title; + int answer = _nativeLangSpeaker.messageBox("SaveCurrentModifWaring", + NULL, + TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), + TEXT("Save Current Modification"), + MB_YESNO); + if (answer == IDYES) { fileSave(); @@ -1298,7 +1314,13 @@ void Notepad_plus::command(int id) if (_pEditView->execute(SCI_CANUNDO) == TRUE) { - int answer = ::MessageBox(NULL, TEXT("All the saved modifications can not be undone.\r\rContinue?"), TEXT("Lose Undo Ability Waning"), MB_YESNO); + generic_string msg, title; + int answer = _nativeLangSpeaker.messageBox("LoseUndoAbilityWaring", + NULL, + TEXT("You should save the current modification.\rAll the saved modifications can not be undone.\r\rContinue?"), + TEXT("Lose Undo Ability Waning"), + MB_YESNO); + if (answer == IDYES) { // Do nothing @@ -1688,8 +1710,12 @@ void Notepad_plus::command(int id) { //if (contion) { - TCHAR warning[] = TEXT("Editing contextMenu.xml allows you to modify your Notepad++ popup context menu.\rYou have to restart your Notepad++ to take effect after modifying contextMenu.xml."); - ::MessageBox(_pPublicInterface->getHSelf(), warning, TEXT("Editing contextMenu"), MB_OK|MB_APPLMODAL); + generic_string warning, title; + _nativeLangSpeaker.messageBox("ContextMenuXmlEditWaring", + _pPublicInterface->getHSelf(), + TEXT("Editing contextMenu.xml allows you to modify your Notepad++ popup context menu.\rYou have to restart your Notepad++ to take effect after modifying contextMenu.xml."), + TEXT("Editing contextMenu"), + MB_OK|MB_APPLMODAL); } NppParameters *pNppParams = NppParameters::getInstance(); BufferID bufID = doOpen((pNppParams->getContextMenuPath()).c_str()); @@ -1765,8 +1791,14 @@ void Notepad_plus::command(int id) else { generic_string msg = nppHelpPath; - msg += TEXT("\rdoesn't exist. Please download it on Notepad++ site."); - ::MessageBox(_pPublicInterface->getHSelf(), msg.c_str(), TEXT("File does not exist"), MB_OK); + generic_string warning, title; + if (!_nativeLangSpeaker.getMsgBoxLang("NppHelpAbsentWaring", title, warning)) + { + title = TEXT("File does not exist"); + warning = TEXT("\rdoesn't exist. Please download it on Notepad++ site."); + } + msg += warning; + ::MessageBox(_pPublicInterface->getHSelf(), msg.c_str(), title.c_str(), MB_OK); } } break; diff --git a/PowerEditor/src/NppIO.cpp b/PowerEditor/src/NppIO.cpp index 24e6dca38..37061c1d5 100644 --- a/PowerEditor/src/NppIO.cpp +++ b/PowerEditor/src/NppIO.cpp @@ -207,7 +207,12 @@ bool Notepad_plus::doReload(BufferID id, bool alert) { if (alert) { - if (::MessageBox(_pPublicInterface->getHSelf(), TEXT("Are you sure you want to reload the current file and lose the changes made in Notepad++?"), TEXT("Reload"), MB_YESNO | MB_ICONEXCLAMATION | MB_APPLMODAL) != IDYES) + int answer = _nativeLangSpeaker.messageBox("DocReloadWarning", + _pPublicInterface->getHSelf(), + TEXT("Are you sure you want to reload the current file and lose the changes made in Notepad++?"), + TEXT("Reload"), + MB_YESNO | MB_ICONEXCLAMATION | MB_APPLMODAL); + if (answer != IDYES) return false; } @@ -263,7 +268,11 @@ bool Notepad_plus::doSave(BufferID id, const TCHAR * filename, bool isCopy) } if (!res) - ::MessageBox(_pPublicInterface->getHSelf(), TEXT("Please check whether if this file is opened in another program"), TEXT("Save failed"), MB_OK); + _nativeLangSpeaker.messageBox("FileLockedWarning", + _pPublicInterface->getHSelf(), + TEXT("Please check whether if this file is opened in another program"), + TEXT("Save failed"), + MB_OK); return res; } @@ -778,7 +787,11 @@ bool Notepad_plus::fileSaveAs(BufferID id, bool isSaveCopy) } else //cannot save, other view has buffer already open, activate it { - ::MessageBox(_pPublicInterface->getHSelf(), TEXT("The file is already opened in the Notepad++."), TEXT("ERROR"), MB_OK | MB_ICONSTOP); + _nativeLangSpeaker.messageBox("FileAlreadyOpenedInNpp", + _pPublicInterface->getHSelf(), + TEXT("The file is already opened in the Notepad++."), + TEXT("ERROR"), + MB_OK | MB_ICONSTOP); switchToFile(other); return false; } @@ -826,7 +839,11 @@ bool Notepad_plus::fileDelete(BufferID id) { if (!MainFileManager->deleteFile(bufferID)) { - ::MessageBox(_pPublicInterface->getHSelf(), TEXT("Delete File failed"), TEXT("Delete File"), MB_OK); + _nativeLangSpeaker.messageBox("DeleteFileFailed", + _pPublicInterface->getHSelf(), + TEXT("Delete File failed"), + TEXT("Delete File"), + MB_OK); return false; } doClose(bufferID, MAIN_VIEW); diff --git a/PowerEditor/src/NppNotification.cpp b/PowerEditor/src/NppNotification.cpp index f2b709496..ff5a0eb90 100644 --- a/PowerEditor/src/NppNotification.cpp +++ b/PowerEditor/src/NppNotification.cpp @@ -286,7 +286,12 @@ BOOL Notepad_plus::notify(SCNotification *notification) int iView = isFromPrimary?MAIN_VIEW:SUB_VIEW; if (buf->isDirty()) { - ::MessageBox(_pPublicInterface->getHSelf(), TEXT("Document is modified, save it then try again."), TEXT("Move to new Notepad++ Instance"), MB_OK); + generic_string msg, title; + _nativeLangSpeaker.messageBox("CannotMoveDoc", + _pPublicInterface->getHSelf(), + TEXT("Document is modified, save it then try again."), + TEXT("Move to new Notepad++ Instance"), + MB_OK); } else { diff --git a/PowerEditor/src/Parameters.cpp b/PowerEditor/src/Parameters.cpp index 649ba3e46..9886ee0fe 100644 --- a/PowerEditor/src/Parameters.cpp +++ b/PowerEditor/src/Parameters.cpp @@ -20,6 +20,7 @@ #include "FileDialog.h" #include "ScintillaEditView.h" #include "keys.h" +#include "localization.h" struct WinMenuKeyDefinition { //more or less matches accelerator table definition, easy copy/paste //const TCHAR * name; //name retrieved from menu? @@ -608,7 +609,7 @@ NppParameters::NppParameters() : _pXmlDoc(NULL),_pXmlUserDoc(NULL), _pXmlUserSty _nbLang(0), _nbFile(0), _nbMaxFile(10), _pXmlToolIconsDoc(NULL),\ _pXmlShortcutDoc(NULL), _pXmlContextMenuDocA(NULL), _pXmlSessionDoc(NULL), _pXmlBlacklistDoc(NULL),\ _nbUserLang(0), _nbExternalLang(0), _hUser32(NULL), _hUXTheme(NULL),\ - _transparentFuncAddr(NULL), _enableThemeDialogTextureFuncAddr(NULL),\ + _transparentFuncAddr(NULL), _enableThemeDialogTextureFuncAddr(NULL), _pNativeLangSpeaker(NULL),\ _isTaskListRBUTTONUP_Active(false), _fileSaveDlgFilterIndex(-1), _asNotepadStyle(false), _isFindReplacing(false) { // init import UDL array diff --git a/PowerEditor/src/Parameters.h b/PowerEditor/src/Parameters.h index 46d4a9a18..0c8ef577f 100644 --- a/PowerEditor/src/Parameters.h +++ b/PowerEditor/src/Parameters.h @@ -54,6 +54,8 @@ #include "ContextMenu.h" #endif //CONTEXTMENU +class NativeLangSpeaker; + using namespace std; const bool POS_VERTICAL = true; @@ -1348,15 +1350,13 @@ public: bool loadSession(Session & session, const TCHAR *sessionFileName); int langTypeToCommandID(LangType lt) const; WNDPROC getEnableThemeDlgTexture() const {return _enableThemeDialogTextureFuncAddr;}; - + struct FindDlgTabTitiles { generic_string _find; generic_string _replace; generic_string _findInFiles; - FindDlgTabTitiles() : _find(TEXT("")), _replace(TEXT("")), _findInFiles(TEXT("")) {}; - bool isWellFilled() { - return (lstrcmp(_find.c_str(), TEXT("")) != 0 && lstrcmp(_replace.c_str(), TEXT("")) && lstrcmp(_findInFiles.c_str(), TEXT(""))); - }; + generic_string _mark; + FindDlgTabTitiles() : _find(TEXT("")), _replace(TEXT("")), _findInFiles(TEXT("")), _mark(TEXT("")) {}; }; FindDlgTabTitiles & getFindDlgTabTitiles() { return _findDlgTabTitiles;}; @@ -1518,6 +1518,8 @@ private: winVer _winVersion; + NativeLangSpeaker *_pNativeLangSpeaker; + static int CALLBACK EnumFontFamExProc(ENUMLOGFONTEX *lpelfe, NEWTEXTMETRICEX *, int, LPARAM lParam) { vector *pStrVect = (vector *)lParam; size_t vectSize = pStrVect->size(); diff --git a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp index 482155144..4bd7975d2 100644 --- a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp +++ b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.cpp @@ -302,18 +302,12 @@ void FindReplaceDlg::create(int dialogID, bool isRTL) const TCHAR *find = TEXT("Find"); const TCHAR *replace = TEXT("Replace"); const TCHAR *findInFiles = TEXT("Find in Files"); + const TCHAR *mark = TEXT("Mark"); - NppParameters::FindDlgTabTitiles & fdTitles = NppParameters::getInstance()->getFindDlgTabTitiles(); - - if (fdTitles.isWellFilled()) - { - find = fdTitles._find.c_str(); - replace = fdTitles._replace.c_str(); - findInFiles = fdTitles._findInFiles.c_str(); - } _tab.insertAtEnd(find); _tab.insertAtEnd(replace); _tab.insertAtEnd(findInFiles); + _tab.insertAtEnd(mark); _tab.reSizeTo(rect); _tab.display(); @@ -961,7 +955,7 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP case IDCMARKALL : { - if (_currentStatus == FIND_DLG) + if (_currentStatus == MARK_DLG) { bool isUnicode = (*_ppEditView)->getCurrentBuffer()->getUnicodeMode() != uni8Bit; HWND hFindCombo = ::GetDlgItem(_hSelf, IDFINDWHAT); @@ -988,7 +982,7 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP case IDC_CLEAR_ALL : { - if (_currentStatus == FIND_DLG) + if (_currentStatus == MARK_DLG) { (*_ppEditView)->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE); (*_ppEditView)->execute(SCI_MARKERDELETEALL, MARK_BOOKMARK); @@ -1052,34 +1046,21 @@ BOOL CALLBACK FindReplaceDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM lP case IDC_PURGE_CHECK : { - if (_currentStatus == FIND_DLG) + if (_currentStatus == MARK_DLG) _options._doPurge = isCheckedOrNot(IDC_PURGE_CHECK); } return TRUE; case IDC_MARKLINE_CHECK : { - if (_currentStatus == FIND_DLG) - { + if (_currentStatus == MARK_DLG) _options._doMarkLine = isCheckedOrNot(IDC_MARKLINE_CHECK); - ::EnableWindow(::GetDlgItem(_hSelf, IDCMARKALL), (_options._doMarkLine || _options._doStyleFoundToken)); - } - } - return TRUE; - - case IDC_STYLEFOUND_CHECK : - { - if (_currentStatus == FIND_DLG) - { - _options._doStyleFoundToken = isCheckedOrNot(IDC_STYLEFOUND_CHECK); - ::EnableWindow(::GetDlgItem(_hSelf, IDCMARKALL), (_options._doMarkLine || _options._doStyleFoundToken)); - } } return TRUE; case IDC_IN_SELECTION_CHECK : { - if (_currentStatus <= REPLACE_DLG) + if ((_currentStatus == REPLACE_DLG) || (_currentStatus == MARK_DLG)) _options._isInSelection = isCheckedOrNot(IDC_IN_SELECTION_CHECK); } return TRUE; @@ -1357,7 +1338,6 @@ int FindReplaceDlg::markAll(const TCHAR *txt2find, int styleID) FindOption opt; opt._isMatchCase = true; opt._isWholeWord = false; - opt._doStyleFoundToken = true; opt._str2Search = txt2find; int nbFound = processAll(ProcessMarkAllExt, &opt, true, NULL, styleID); @@ -1513,11 +1493,9 @@ int FindReplaceDlg::processRange(ProcessOperation op, const TCHAR *txt2find, con if (op == ProcessMarkAll && colourStyleID == -1) //if marking, check if purging is needed { if (_env->_doPurge) { + (*_ppEditView)->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE); if (_env->_doMarkLine) (*_ppEditView)->execute(SCI_MARKERDELETEALL, MARK_BOOKMARK); - - if (_env->_doStyleFoundToken) - (*_ppEditView)->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE); } } @@ -1609,11 +1587,8 @@ int FindReplaceDlg::processRange(ProcessOperation op, const TCHAR *txt2find, con case ProcessMarkAll: { - if (_env->_doStyleFoundToken) - { - (*_ppEditView)->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE); - (*_ppEditView)->execute(SCI_INDICATORFILLRANGE, targetStart, foundTextLen); - } + (*_ppEditView)->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE); + (*_ppEditView)->execute(SCI_INDICATORFILLRANGE, targetStart, foundTextLen); if (_env->_doMarkLine) { @@ -1789,8 +1764,8 @@ void FindReplaceDlg::enableReplaceFunc(bool isEnable) RECT *pClosePos = isEnable?&_replaceClosePos:&_findClosePos; enableFindInFilesControls(false); - - // replce controls + enableMarkAllControls(false); + // replace controls ::ShowWindow(::GetDlgItem(_hSelf, ID_STATICTEXT_REPLACE),hideOrShow); ::ShowWindow(::GetDlgItem(_hSelf, IDREPLACE),hideOrShow); ::ShowWindow(::GetDlgItem(_hSelf, IDREPLACEWITH),hideOrShow); @@ -1798,16 +1773,11 @@ void FindReplaceDlg::enableReplaceFunc(bool isEnable) ::ShowWindow(::GetDlgItem(_hSelf, IDREPLACEINSEL),hideOrShow); ::ShowWindow(::GetDlgItem(_hSelf, IDC_REPLACE_OPENEDFILES),hideOrShow); ::ShowWindow(::GetDlgItem(_hSelf, IDC_REPLACEINSELECTION),hideOrShow); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_IN_SELECTION_CHECK), hideOrShow); // find controls ::ShowWindow(::GetDlgItem(_hSelf, IDC_FINDALL_OPENEDFILES), !hideOrShow); ::ShowWindow(::GetDlgItem(_hSelf, IDCCOUNTALL),!hideOrShow); - ::ShowWindow(::GetDlgItem(_hSelf, IDC_FINDALL_STATIC),!hideOrShow); - ::ShowWindow(::GetDlgItem(_hSelf, IDCMARKALL),!hideOrShow); - ::ShowWindow(::GetDlgItem(_hSelf, IDC_MARKLINE_CHECK),!hideOrShow); - ::ShowWindow(::GetDlgItem(_hSelf, IDC_STYLEFOUND_CHECK),!hideOrShow); - ::ShowWindow(::GetDlgItem(_hSelf, IDC_PURGE_CHECK),!hideOrShow); - ::ShowWindow(::GetDlgItem(_hSelf, IDC_CLEAR_ALL),!hideOrShow); ::ShowWindow(::GetDlgItem(_hSelf, IDC_FINDALL_CURRENTFILE),!hideOrShow); gotoCorrectTab(); @@ -1821,6 +1791,20 @@ void FindReplaceDlg::enableReplaceFunc(bool isEnable) setDefaultButton(IDOK); } +void FindReplaceDlg::enableMarkAllControls(bool isEnable) +{ + int hideOrShow = isEnable?SW_SHOW:SW_HIDE; + ::ShowWindow(::GetDlgItem(_hSelf, IDCMARKALL),hideOrShow); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_MARKLINE_CHECK),hideOrShow); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_PURGE_CHECK),hideOrShow); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_CLEAR_ALL),hideOrShow); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_IN_SELECTION_CHECK), hideOrShow); + + ::ShowWindow(::GetDlgItem(_hSelf, IDC_DIR_STATIC), !hideOrShow); + ::ShowWindow(::GetDlgItem(_hSelf, IDDIRECTIONUP), !hideOrShow); + ::ShowWindow(::GetDlgItem(_hSelf, IDDIRECTIONDOWN), !hideOrShow); +} + void FindReplaceDlg::enableFindInFilesControls(bool isEnable) { // Hide Items @@ -1830,9 +1814,7 @@ void FindReplaceDlg::enableFindInFilesControls(bool isEnable) ::ShowWindow(::GetDlgItem(_hSelf, IDC_FINDALL_CURRENTFILE), isEnable?SW_HIDE:SW_SHOW); ::ShowWindow(::GetDlgItem(_hSelf, IDOK), isEnable?SW_HIDE:SW_SHOW); - ::ShowWindow(::GetDlgItem(_hSelf, IDC_FINDALL_STATIC), isEnable?SW_HIDE:SW_SHOW); ::ShowWindow(::GetDlgItem(_hSelf, IDC_MARKLINE_CHECK), isEnable?SW_HIDE:SW_SHOW); - ::ShowWindow(::GetDlgItem(_hSelf, IDC_STYLEFOUND_CHECK), isEnable?SW_HIDE:SW_SHOW); ::ShowWindow(::GetDlgItem(_hSelf, IDC_PURGE_CHECK), isEnable?SW_HIDE:SW_SHOW); ::ShowWindow(::GetDlgItem(_hSelf, IDC_IN_SELECTION_CHECK), isEnable?SW_HIDE:SW_SHOW); ::ShowWindow(::GetDlgItem(_hSelf, IDC_CLEAR_ALL), isEnable?SW_HIDE:SW_SHOW); @@ -1882,7 +1864,6 @@ void FindReplaceDlg::saveInMacro(int cmd, int cmdType) { booleans |= _options._doPurge?IDF_PURGE_CHECK:0; booleans |= _options._doMarkLine?IDF_MARKLINE_CHECK:0; - booleans |= _options._doStyleFoundToken?IDF_STYLEFOUND_CHECK:0; } if (cmdType & FR_OP_REPLACE) ::SendMessage(_hParent, WM_FRSAVE_STR, IDREPLACEWITH, (LPARAM)_options._str4Replace.c_str()); @@ -1920,7 +1901,6 @@ void FindReplaceDlg::execSavedCommand(int cmd, int intValue, generic_string stri _env->_isInHiddenDir = ((intValue & IDF_FINDINFILES_INHIDDENDIR_CHECK)> 0); _env->_doPurge = ((intValue & IDF_PURGE_CHECK)> 0); _env->_doMarkLine = ((intValue & IDF_MARKLINE_CHECK)> 0); - _env->_doStyleFoundToken = ((intValue & IDF_STYLEFOUND_CHECK)> 0); _env->_isInSelection = ((intValue & IDF_IN_SELECTION_CHECK)> 0); _env->_isWrapAround = ((intValue & IDF_WRAP)> 0); _env->_whichDirection = ((intValue & IDF_WHICH_DIRECTION)> 0); @@ -2079,14 +2059,11 @@ void FindReplaceDlg::initOptionsFromDlg() _options._doPurge = isCheckedOrNot(IDC_PURGE_CHECK); _options._doMarkLine = isCheckedOrNot(IDC_MARKLINE_CHECK); - _options._doStyleFoundToken = isCheckedOrNot(IDC_STYLEFOUND_CHECK); _options._whichDirection = isCheckedOrNot(IDDIRECTIONDOWN); _options._isRecursive = isCheckedOrNot(IDD_FINDINFILES_RECURSIVE_CHECK); _options._isInHiddenDir = isCheckedOrNot(IDD_FINDINFILES_INHIDDENDIR_CHECK); - - ::EnableWindow(::GetDlgItem(_hSelf, IDCMARKALL), (_options._doMarkLine || _options._doStyleFoundToken)); } void FindReplaceDlg::doDialog(DIALOG_TYPE whichType, bool isRTL, bool toShow) @@ -2099,6 +2076,8 @@ void FindReplaceDlg::doDialog(DIALOG_TYPE whichType, bool isRTL, bool toShow) if (whichType == FINDINFILES_DLG) enableFindInFilesFunc(); + else if (whichType == MARK_DLG) + enableMarkFunc(); else enableReplaceFunc(whichType == REPLACE_DLG); @@ -2135,6 +2114,34 @@ void FindReplaceDlg::enableFindInFilesFunc() setDefaultButton(IDD_FINDINFILES_FIND_BUTTON); } +void FindReplaceDlg::enableMarkFunc() +{ + enableFindInFilesControls(false); + enableMarkAllControls(true); + + // Replace controls to hide + ::ShowWindow(::GetDlgItem(_hSelf, ID_STATICTEXT_REPLACE),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDREPLACE),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDREPLACEWITH),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDREPLACEALL),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDREPLACEINSEL),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_REPLACE_OPENEDFILES),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_REPLACEINSELECTION),SW_HIDE); + + // find controls to hide + ::ShowWindow(::GetDlgItem(_hSelf, IDC_FINDALL_OPENEDFILES), SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDCCOUNTALL),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDC_FINDALL_CURRENTFILE),SW_HIDE); + ::ShowWindow(::GetDlgItem(_hSelf, IDOK),SW_HIDE); + + _currentStatus = MARK_DLG; + gotoCorrectTab(); + ::MoveWindow(::GetDlgItem(_hSelf, IDCANCEL), _findInFilesClosePos.left, _findInFilesClosePos.top, _findInFilesClosePos.right, _findInFilesClosePos.bottom, TRUE); + TCHAR label[MAX_PATH]; + _tab.getCurrentTitle(label, MAX_PATH); + ::SetWindowText(_hSelf, label); + setDefaultButton(IDCMARKALL); +} void FindReplaceDlg::combo2ExtendedMode(int comboID) { HWND hFindCombo = ::GetDlgItem(_hSelf, comboID); diff --git a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.h b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.h index 779080a19..8c0ffd5a3 100644 --- a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.h +++ b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.h @@ -35,7 +35,7 @@ #define FINDREPLACE_MAXLENGTH 2048 -enum DIALOG_TYPE {FIND_DLG, REPLACE_DLG, FINDINFILES_DLG}; +enum DIALOG_TYPE {FIND_DLG, REPLACE_DLG, FINDINFILES_DLG, MARK_DLG}; #define DIR_DOWN true #define DIR_UP false @@ -71,7 +71,6 @@ struct FindOption SearchType _searchType; bool _doPurge; bool _doMarkLine; - bool _doStyleFoundToken; bool _isInSelection; generic_string _str2Search; generic_string _str4Replace; @@ -81,7 +80,7 @@ struct FindOption bool _isInHiddenDir; FindOption() : _isWholeWord(true), _isMatchCase(true), _searchType(FindNormal),\ _isWrapAround(true), _whichDirection(DIR_DOWN), _incrementalType(NotIncremental), - _doPurge(false), _doMarkLine(false), _doStyleFoundToken(false), + _doPurge(false), _doMarkLine(false), _isInSelection(false), _isRecursive(true), _isInHiddenDir(false), _filters(TEXT("")), _directory(TEXT("")) {}; }; @@ -305,6 +304,8 @@ private : void enableReplaceFunc(bool isEnable); void enableFindInFilesControls(bool isEnable = true); void enableFindInFilesFunc(); + void enableMarkAllControls(bool isEnable); + void enableMarkFunc(); void setDefaultButton(int nID) { SendMessage(_hSelf, DM_SETDEFID, (WPARAM)nID, 0L); diff --git a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.rc b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.rc index 8834446e9..0ed877002 100644 --- a/PowerEditor/src/ScitillaComponent/FindReplaceDlg.rc +++ b/PowerEditor/src/ScitillaComponent/FindReplaceDlg.rc @@ -16,66 +16,67 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - #ifndef FIND_REPLACE_DLG_RC #define FIND_REPLACE_DLG_RC #include #include "FindReplaceDlg_rc.h" -IDD_FIND_REPLACE_DLG DIALOGEX 36, 44, 317, 182 +IDD_FIND_REPLACE_DLG DIALOGEX 36, 44, 367, 186 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "Replace" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN RTEXT "&Find what :",IDFINDWHAT_STATIC,6,22,75,8 - COMBOBOX IDFINDWHAT,83,20,125,150,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_TABSTOP + COMBOBOX IDFINDWHAT,83,20,178,150,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_TABSTOP RTEXT "Rep&lace with :",ID_STATICTEXT_REPLACE,6,40,75,8 - COMBOBOX IDREPLACEWITH,83,38,125,50,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_TABSTOP - CONTROL "&Mark line",IDC_MARKLINE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,40,88,10 - CONTROL "Style found to&ken",IDC_STYLEFOUND_CHECK,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,13,52,100,15 - GROUPBOX "",IDC_FINDALL_STATIC,6,31,204,54 - CONTROL "Purge for each search",IDC_PURGE_CHECK,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,13,66,99,16 - PUSHBUTTON "Find &All",IDCMARKALL,146,38,59,14 - GROUPBOX "",IDC_REPLACEINSELECTION,141,50,170,23 - CONTROL "In select&ion",IDC_IN_SELECTION_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,146,58,59,10 - PUSHBUTTON "Clear",IDC_CLEAR_ALL,146,71,59,11 + COMBOBOX IDREPLACEWITH,83,38,178,50,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_TABSTOP RTEXT "Filter&s :",IDD_FINDINFILES_FILTERS_STATIC,27,58,53,8 COMBOBOX IDD_FINDINFILES_FILTERS_COMBO,83,56,125,150,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_TABSTOP RTEXT "Dir&ectory :",IDD_FINDINFILES_DIR_STATIC,7,76,40,8 - COMBOBOX IDD_FINDINFILES_DIR_COMBO,49,74,141,150,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_TABSTOP - PUSHBUTTON "...",IDD_FINDINFILES_BROWSE_BUTTON,193,74,15,13 - CONTROL "Follow current doc.",IDD_FINDINFILES_FOLDERFOLLOWSDOC_CHECK, "Button", BS_AUTOCHECKBOX | WS_TABSTOP,218,73,94,15 - CONTROL "In all su&b-folders",IDD_FINDINFILES_RECURSIVE_CHECK, "Button", BS_AUTOCHECKBOX | WS_TABSTOP,218,87,94,15 - CONTROL "In &hidden folders",IDD_FINDINFILES_INHIDDENDIR_CHECK, "Button", BS_AUTOCHECKBOX | WS_TABSTOP,218,101,94,15 - - CONTROL "Match &whole word only",IDWHOLEWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,88,140,15 - CONTROL "Match &case",IDMATCHCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,100,140,15 - CONTROL "Wra&p around",IDWRAP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,6,112,110,15 - GROUPBOX "Search Mode",IDC_MODE_STATIC,6,126,138,48 - CONTROL "&Normal",IDNORMAL,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,138,126,10 - CONTROL "E&xtended (\\n, \\r, \\t, \\0, \\x...)",IDEXTENDED, "Button",BS_AUTORADIOBUTTON,12,150,126,10 - CONTROL "Re&gular expression",IDREGEXP,"Button",BS_AUTORADIOBUTTON,12,162,126,10 - CONTROL "&Up",IDDIRECTIONUP,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,155,138,45,12 - CONTROL "&Down",IDDIRECTIONDOWN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,155,150,45,12 - GROUPBOX "Direction",IDC_DIR_STATIC,150,126,60,48,WS_GROUP - PUSHBUTTON "Find Next",IDOK,217,20,90,14,WS_GROUP - PUSHBUTTON "Coun&t",IDCCOUNTALL,217,38,90,14 - PUSHBUTTON "Find All in All &Opened Documents",IDC_FINDALL_OPENEDFILES,217,56,90,21,BS_MULTILINE - PUSHBUTTON "Find All in Current Document",IDC_FINDALL_CURRENTFILE,217,80,90,21,BS_MULTILINE - PUSHBUTTON "&Replace",IDREPLACE,217,38,90,14 - PUSHBUTTON "Replace &All",IDREPLACEALL,217,56,90,14 - PUSHBUTTON "Replace All in All &Opened Documents",IDC_REPLACE_OPENEDFILES,217,74,90,21,BS_MULTILINE - PUSHBUTTON "Find All",IDD_FINDINFILES_FIND_BUTTON,217,20,90,14,WS_GROUP - PUSHBUTTON "&Replace in Files",IDD_FINDINFILES_REPLACEINFILES,217,38,90,14 - PUSHBUTTON "Close",IDCANCEL,217,98,90,14 - GROUPBOX "",IDC_TRANSPARENT_GRPBOX,222,126,85,48 - CONTROL "Transparenc&y",IDC_TRANSPARENT_CHECK,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,218,126,80,10 - CONTROL "On losing focus",IDC_TRANSPARENT_LOSSFOCUS_RADIO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,232,138,70,10 - CONTROL "Always",IDC_TRANSPARENT_ALWAYS_RADIO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,232,150,70,10 - CONTROL "",IDC_PERCENTAGE_SLIDER,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | NOT WS_VISIBLE | WS_TABSTOP,235,161,53,10 + COMBOBOX IDD_FINDINFILES_DIR_COMBO,49,74,190,150,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_TABSTOP + PUSHBUTTON "...",IDD_FINDINFILES_BROWSE_BUTTON,245,74,15,13 + CONTROL "Follow current doc.",IDD_FINDINFILES_FOLDERFOLLOWSDOC_CHECK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,73,94,15 + CONTROL "In all su&b-folders",IDD_FINDINFILES_RECURSIVE_CHECK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,87,94,15 + CONTROL "In &hidden folders",IDD_FINDINFILES_INHIDDENDIR_CHECK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,101,94,15 + CONTROL "Book&mark line",IDC_MARKLINE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,52,100,15 + CONTROL "Purge for each search",IDC_PURGE_CHECK,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,12,66,99,16 + PUSHBUTTON "Mark &All",IDCMARKALL,268,20,90,14 + GROUPBOX "",IDC_REPLACEINSELECTION,192,50,170,23 + CONTROL "In select&ion",IDC_IN_SELECTION_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,58,59,10 + PUSHBUTTON "Clear all marks",IDC_CLEAR_ALL,268,38,90,14 + CONTROL "Match &whole word only",IDWHOLEWORD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,88,140,15 + CONTROL "Match &case",IDMATCHCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,100,140,15 + CONTROL "Wra&p around",IDWRAP,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,12,112,110,15 + GROUPBOX "Search Mode",IDC_MODE_STATIC,6,131,156,48 + CONTROL "&Normal",IDNORMAL,"Button",BS_AUTORADIOBUTTON | WS_GROUP,12,143,126,10 + CONTROL "E&xtended (\\n, \\r, \\t, \\0, \\x...)",IDEXTENDED, + "Button",BS_AUTORADIOBUTTON,12,155,145,10 + CONTROL "Re&gular expression",IDREGEXP,"Button",BS_AUTORADIOBUTTON,12,167,139,10 + CONTROL "&Up",IDDIRECTIONUP,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,177,143,64,12 + CONTROL "&Down",IDDIRECTIONDOWN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,177,155,63,12 + GROUPBOX "Direction",IDC_DIR_STATIC,172,131,74,48,WS_GROUP + PUSHBUTTON "Find Next",IDOK,268,20,90,14,WS_GROUP + PUSHBUTTON "Coun&t",IDCCOUNTALL,268,38,90,14 + PUSHBUTTON "Find All in All &Opened Documents",IDC_FINDALL_OPENEDFILES,268,56,90,21,BS_MULTILINE + PUSHBUTTON "Find All in Current Document",IDC_FINDALL_CURRENTFILE,268,80,90,21,BS_MULTILINE + PUSHBUTTON "&Replace",IDREPLACE,268,38,90,14 + PUSHBUTTON "Replace &All",IDREPLACEALL,268,56,90,14 + PUSHBUTTON "Replace All in All &Opened Documents",IDC_REPLACE_OPENEDFILES,268,74,90,21,BS_MULTILINE + PUSHBUTTON "Find All",IDD_FINDINFILES_FIND_BUTTON,268,20,90,14,WS_GROUP + PUSHBUTTON "&Replace in Files",IDD_FINDINFILES_REPLACEINFILES,268,38,90,14 + PUSHBUTTON "Close",IDCANCEL,268,98,90,14 + GROUPBOX "",IDC_TRANSPARENT_GRPBOX,258,131,99,48 + CONTROL "Transparenc&y",IDC_TRANSPARENT_CHECK,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,254,131,80,10 + CONTROL "On losing focus",IDC_TRANSPARENT_LOSSFOCUS_RADIO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,268,143,86,10 + CONTROL "Always",IDC_TRANSPARENT_ALWAYS_RADIO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,268,155,83,10 + CONTROL "",IDC_PERCENTAGE_SLIDER,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | NOT WS_VISIBLE | WS_TABSTOP,271,166,53,10 END + IDD_INCREMENT_FIND DIALOGEX 0, 0, 400, 20 STYLE DS_SYSMODAL | DS_CONTROL | DS_FIXEDSYS | WS_CHILD | WS_CLIPCHILDREN //EXSTYLE WS_EX_TRANSPARENT diff --git a/PowerEditor/src/localization.cpp b/PowerEditor/src/localization.cpp index 533c8645b..9473d1441 100644 --- a/PowerEditor/src/localization.cpp +++ b/PowerEditor/src/localization.cpp @@ -796,30 +796,57 @@ void NativeLangSpeaker::changeFindReplaceDlgLang(FindReplaceDlg & findReplaceDlg const char *titre1 = (dlgNode->ToElement())->Attribute("titleFind"); const char *titre2 = (dlgNode->ToElement())->Attribute("titleReplace"); const char *titre3 = (dlgNode->ToElement())->Attribute("titleFindInFiles"); - if (titre1 && titre2 && titre3) - { + const char *titre4 = (dlgNode->ToElement())->Attribute("titleMark"); #ifdef UNICODE - WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); + WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); + if (titre1 && titre1[0]) + { basic_string nameW = wmc->char2wchar(titre1, _nativeLangEncoding); pNppParam->getFindDlgTabTitiles()._find = nameW; - - nameW = wmc->char2wchar(titre2, _nativeLangEncoding); + findReplaceDlg.changeTabName(FIND_DLG, pNppParam->getFindDlgTabTitiles()._find.c_str()); + } + if (titre2 && titre2[0]) + { + basic_string nameW = wmc->char2wchar(titre2, _nativeLangEncoding); pNppParam->getFindDlgTabTitiles()._replace = nameW; - - nameW = wmc->char2wchar(titre3, _nativeLangEncoding); + findReplaceDlg.changeTabName(REPLACE_DLG, pNppParam->getFindDlgTabTitiles()._replace.c_str()); + } + if (titre3 && titre3[0]) + { + basic_string nameW = wmc->char2wchar(titre3, _nativeLangEncoding); pNppParam->getFindDlgTabTitiles()._findInFiles = nameW; + findReplaceDlg.changeTabName(FINDINFILES_DLG, pNppParam->getFindDlgTabTitiles()._findInFiles.c_str()); + } + if (titre4 && titre4[0]) + { + basic_string nameW = wmc->char2wchar(titre4, _nativeLangEncoding); + pNppParam->getFindDlgTabTitiles()._mark = nameW; + findReplaceDlg.changeTabName(MARK_DLG, pNppParam->getFindDlgTabTitiles()._mark.c_str()); + } #else + if (titre1 && titre1[0]) + { pNppParam->getFindDlgTabTitiles()._find = titre1; + findReplaceDlg.changeTabName(FIND_DLG, pNppParam->getFindDlgTabTitiles()._find.c_str()); + } + if (titre2 && titre2[0]) + { pNppParam->getFindDlgTabTitiles()._replace = titre2; + findReplaceDlg.changeTabName(REPLACE_DLG, pNppParam->getFindDlgTabTitiles()._replace.c_str()); + } + if (titre3 && titre3[0]) + { pNppParam->getFindDlgTabTitiles()._findInFiles = titre3; -#endif + findReplaceDlg.changeTabName(FINDINFILES_DLG, pNppParam->getFindDlgTabTitiles()._findInFiles.c_str()); } + if (titre4 && titre4[0]) + { + pNppParam->getFindDlgTabTitiles()._mark = titre4; + findReplaceDlg.changeTabName(MARK_DLG, pNppParam->getFindDlgTabTitiles()._mark.c_str()); + } +#endif } - - findReplaceDlg.changeTabName(FIND_DLG, pNppParam->getFindDlgTabTitiles()._find.c_str()); - findReplaceDlg.changeTabName(REPLACE_DLG, pNppParam->getFindDlgTabTitiles()._replace.c_str()); - findReplaceDlg.changeTabName(FINDINFILES_DLG, pNppParam->getFindDlgTabTitiles()._findInFiles.c_str()); } } changeDlgLang(findReplaceDlg.getHSelf(), "Find"); @@ -1105,4 +1132,46 @@ bool NativeLangSpeaker::changeDlgLang(HWND hDlg, const char *dlgTagName, char *t return true; } +bool NativeLangSpeaker::getMsgBoxLang(const char *msgBoxTagName, generic_string & title, generic_string & message) +{ + title = TEXT(""); + message = TEXT(""); + + if (!_nativeLangA) return false; + + TiXmlNodeA *msgBoxNode = _nativeLangA->FirstChild("MessageBox"); + if (!msgBoxNode) return false; + + msgBoxNode = searchDlgNode(msgBoxNode, msgBoxTagName); + if (!msgBoxNode) return false; +#ifdef UNICODE + WcharMbcsConvertor *wmc = WcharMbcsConvertor::getInstance(); +#endif + + // Set Title + const char *titre = (msgBoxNode->ToElement())->Attribute("title"); + const char *msg = (msgBoxNode->ToElement())->Attribute("message"); + if ((titre && titre[0]) && (msg && msg[0])) + { +#ifdef UNICODE + title = wmc->char2wchar(titre, _nativeLangEncoding); + message = wmc->char2wchar(msg, _nativeLangEncoding); +#else + title = wmc->char2wchar(titre, _nativeLangEncoding); + message = wmc->char2wchar(msg, _nativeLangEncoding); +#endif + return true; + } + return false; +} + +int NativeLangSpeaker::messageBox(const char *msgBoxTagName, HWND hWnd, TCHAR *defaultTitle, TCHAR *defaultMessage, int msgBoxType) +{ + generic_string msg, title; + if (getMsgBoxLang(msgBoxTagName, title, msg)) + { + return ::MessageBox(hWnd, msg.c_str(), title.c_str(), msgBoxType); + } + return ::MessageBox(hWnd, defaultMessage, defaultTitle, msgBoxType); +} \ No newline at end of file diff --git a/PowerEditor/src/localization.h b/PowerEditor/src/localization.h index 98c79c7bc..75c6b0544 100644 --- a/PowerEditor/src/localization.h +++ b/PowerEditor/src/localization.h @@ -22,16 +22,13 @@ #include "tinyxmlA.h" #endif //TINYXMLA_INCLUDED +#include "FindReplaceDlg.h" +#include "preferenceDlg.h" + class NativeLangSpeaker { public: NativeLangSpeaker():_nativeLangA(NULL), _nativeLangEncoding(CP_ACP), _isRTL(false), _fileName(NULL){}; void init(TiXmlDocumentA *nativeLangDocRootA, bool loadIfEnglish = false); - /* - void set(TiXmlNodeA *nativeLangA, int nativeLangEncoding) { - _nativeLangA = nativeLangA; - _nativeLangEncoding = nativeLangEncoding; - }; - */ void changeConfigLang(HWND hDlg); void changeLangTabContextMenu(HMENU hCM); TiXmlNodeA * searchDlgNode(TiXmlNodeA *node, const char *dlgTagName); @@ -59,6 +56,8 @@ public: int getLangEncoding() const { return _nativeLangEncoding; }; + bool getMsgBoxLang(const char *msgBoxTagName, generic_string & title, generic_string & message); + int messageBox(const char *msgBoxTagName, HWND hWnd, TCHAR *title, TCHAR *message, int msgBoxType); private: TiXmlNodeA *_nativeLangA; int _nativeLangEncoding;