[NEW_FEATURE] Add hilite all in Incremental search.
git-svn-id: svn://svn.tuxfamily.org/svnroot/notepadplus/repository@189 f5eea248-9336-0410-98b8-ebc06183d4e3
This commit is contained in:
parent
ef941865d7
commit
1eb46eaca3
@ -7390,6 +7390,12 @@ LRESULT Notepad_plus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPa
|
|||||||
return _toReduceTabBar?TRUE:FALSE;
|
return _toReduceTabBar?TRUE:FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case NPPM_INTERNAL_MARKALL :
|
||||||
|
{
|
||||||
|
markSelectedTextInc(bool(wParam));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// ADD: success->hwnd; failure->NULL
|
// ADD: success->hwnd; failure->NULL
|
||||||
// REMOVE: success->NULL; failure->hwnd
|
// REMOVE: success->NULL; failure->hwnd
|
||||||
case NPPM_MODELESSDIALOG :
|
case NPPM_MODELESSDIALOG :
|
||||||
@ -8295,7 +8301,36 @@ void Notepad_plus::markSelectedText()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FindOption op;
|
|
||||||
op._isWholeWord = true;
|
|
||||||
_findReplaceDlg.markAll2(text2Find);
|
_findReplaceDlg.markAll2(text2Find);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Notepad_plus::markSelectedTextInc(bool enable)
|
||||||
|
{
|
||||||
|
if (!enable)
|
||||||
|
{//printStr("out");
|
||||||
|
_pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_INC);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get selection
|
||||||
|
CharacterRange range = _pEditView->getSelection();
|
||||||
|
//Dont mark if the selection has not changed.
|
||||||
|
if (range.cpMin == _prevSelectedRange.cpMin && range.cpMax == _prevSelectedRange.cpMax)
|
||||||
|
{
|
||||||
|
_pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_INC);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Clear marks
|
||||||
|
_pEditView->clearIndicator(SCE_UNIVERSAL_FOUND_STYLE_INC);
|
||||||
|
|
||||||
|
//If nothing selected, dont mark anything
|
||||||
|
if (range.cpMin == range.cpMax)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
char text2Find[MAX_PATH];
|
||||||
|
_pEditView->getSelectedText(text2Find, sizeof(text2Find), false); //do not expand selection (false)
|
||||||
|
_findReplaceDlg.markAllInc(text2Find);
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -684,6 +684,7 @@ private:
|
|||||||
void setFileOpenSaveDlgFilters(FileDialog & fDlg);
|
void setFileOpenSaveDlgFilters(FileDialog & fDlg);
|
||||||
void reloadOnSwitchBack();
|
void reloadOnSwitchBack();
|
||||||
void markSelectedText();
|
void markSelectedText();
|
||||||
|
void markSelectedTextInc(bool enable);
|
||||||
|
|
||||||
bool isQualifiedWord(const char *str)
|
bool isQualifiedWord(const char *str)
|
||||||
{
|
{
|
||||||
|
@ -963,6 +963,12 @@ int FindReplaceDlg::markAll2(const char *txt2find)
|
|||||||
return nbFound;
|
return nbFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int FindReplaceDlg::markAllInc(const char *txt2find)
|
||||||
|
{
|
||||||
|
int nbFound = processAll(ProcessMarkAll_IncSearch, txt2find, NULL, true, NULL);
|
||||||
|
return nbFound;
|
||||||
|
}
|
||||||
|
|
||||||
int FindReplaceDlg::processAll(ProcessOperation op, const char *txt2find, const char *txt2replace, bool isEntire, const char *fileName)
|
int FindReplaceDlg::processAll(ProcessOperation op, const char *txt2find, const char *txt2replace, bool isEntire, const char *fileName)
|
||||||
{
|
{
|
||||||
int nbReplaced = 0;
|
int nbReplaced = 0;
|
||||||
@ -1017,8 +1023,13 @@ int FindReplaceDlg::processAll(ProcessOperation op, const char *txt2find, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool isRegExp = pOptions->_searchType == FindRegex;
|
bool isRegExp = pOptions->_searchType == FindRegex;
|
||||||
int flags = (op == ProcessMarkAll_2)?SCFIND_WHOLEWORD:Searching::buildSearchFlags(pOptions);
|
int flags = Searching::buildSearchFlags(pOptions);
|
||||||
|
|
||||||
|
if (op == ProcessMarkAll_2)
|
||||||
|
flags = SCFIND_WHOLEWORD;
|
||||||
|
else if (op == ProcessMarkAll_IncSearch)
|
||||||
|
flags ^= SCFIND_WHOLEWORD;
|
||||||
|
|
||||||
CharacterRange cr = (*_ppEditView)->getSelection();
|
CharacterRange cr = (*_ppEditView)->getSelection();
|
||||||
int docLength = int((*_ppEditView)->execute(SCI_GETLENGTH));
|
int docLength = int((*_ppEditView)->execute(SCI_GETLENGTH));
|
||||||
|
|
||||||
@ -1186,7 +1197,14 @@ int FindReplaceDlg::processAll(ProcessOperation op, const char *txt2find, const
|
|||||||
|
|
||||||
startPosition = (direction == DIR_UP)?posFind - foundTextLen:posFind + foundTextLen;
|
startPosition = (direction == DIR_UP)?posFind - foundTextLen:posFind + foundTextLen;
|
||||||
break; }
|
break; }
|
||||||
|
|
||||||
|
case ProcessMarkAll_IncSearch: {
|
||||||
|
(*_ppEditView)->execute(SCI_SETINDICATORCURRENT, SCE_UNIVERSAL_FOUND_STYLE_INC);
|
||||||
|
(*_ppEditView)->execute(SCI_INDICATORFILLRANGE, start, end - start);
|
||||||
|
|
||||||
|
startPosition = (direction == DIR_UP)?posFind - foundTextLen:posFind + foundTextLen;
|
||||||
|
break; }
|
||||||
|
|
||||||
case ProcessCountAll: {
|
case ProcessCountAll: {
|
||||||
startPosition = posFind + foundTextLen;
|
startPosition = posFind + foundTextLen;
|
||||||
break; }
|
break; }
|
||||||
@ -1483,6 +1501,7 @@ BOOL CALLBACK FindIncrementDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
case IDC_INCFINDTEXT :
|
case IDC_INCFINDTEXT :
|
||||||
|
{
|
||||||
if (HIWORD(wParam) == EN_CHANGE)
|
if (HIWORD(wParam) == EN_CHANGE)
|
||||||
{
|
{
|
||||||
if (_doSearchFromBegin)
|
if (_doSearchFromBegin)
|
||||||
@ -1491,17 +1510,33 @@ BOOL CALLBACK FindIncrementDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
|||||||
fo._isWholeWord = false;
|
fo._isWholeWord = false;
|
||||||
fo._isIncremental = true;
|
fo._isIncremental = true;
|
||||||
fo._isMatchCase = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_INCFINDMATCHCASE, BM_GETCHECK, 0, 0));
|
fo._isMatchCase = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_INCFINDMATCHCASE, BM_GETCHECK, 0, 0));
|
||||||
|
bool isHiLieAll = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_INCFINDHILITEALL, BM_GETCHECK, 0, 0));
|
||||||
|
|
||||||
string str2Search = _pFRDlg->getTextFromCombo(::GetDlgItem(_hSelf, IDC_INCFINDTEXT), isUnicode);
|
string str2Search = _pFRDlg->getTextFromCombo(::GetDlgItem(_hSelf, IDC_INCFINDTEXT), isUnicode);
|
||||||
_pFRDlg->processFindNext(str2Search.c_str(), &fo);
|
_pFRDlg->processFindNext(str2Search.c_str(), &fo);
|
||||||
|
|
||||||
|
if (isHiLieAll)
|
||||||
|
{
|
||||||
|
::SendMessage(_hParent, NPPM_INTERNAL_MARKALL, TRUE, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_doSearchFromBegin = true;
|
_doSearchFromBegin = true;
|
||||||
}
|
}
|
||||||
return TRUE;
|
}
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
case IDC_INCFINDHILITEALL :
|
||||||
|
{
|
||||||
|
bool isHiLieAll = (BST_CHECKED == ::SendDlgItemMessage(_hSelf, IDC_INCFINDHILITEALL, BM_GETCHECK, 0, 0));
|
||||||
|
//printStr(isHiLieAll?"yes":"no");
|
||||||
|
::SendMessage(_hParent, NPPM_INTERNAL_MARKALL, (BOOL)isHiLieAll, 0);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case WM_ERASEBKGND:
|
case WM_ERASEBKGND:
|
||||||
{
|
{
|
||||||
HWND hParent = ::GetParent(_hSelf);
|
HWND hParent = ::GetParent(_hSelf);
|
||||||
@ -1513,11 +1548,9 @@ BOOL CALLBACK FindIncrementDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
|||||||
LRESULT lResult = SendMessage(hParent, WM_ERASEBKGND,(WPARAM)winDC, 0);
|
LRESULT lResult = SendMessage(hParent, WM_ERASEBKGND,(WPARAM)winDC, 0);
|
||||||
::SetWindowOrgEx(winDC, ptOrig.x, ptOrig.y, NULL);
|
::SetWindowOrgEx(winDC, ptOrig.x, ptOrig.y, NULL);
|
||||||
return (BOOL)lResult;
|
return (BOOL)lResult;
|
||||||
break; }
|
break;
|
||||||
case WM_SIZE:
|
|
||||||
{
|
|
||||||
//Handle sizing (resize editbox?)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case WM_MOVE:
|
case WM_MOVE:
|
||||||
{
|
{
|
||||||
::InvalidateRect(_hSelf, NULL, TRUE); //when moving, force background redraw
|
::InvalidateRect(_hSelf, NULL, TRUE); //when moving, force background redraw
|
||||||
|
@ -57,7 +57,7 @@ struct TargetRange {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum SearchType { FindNormal, FindExtended, FindRegex };
|
enum SearchType { FindNormal, FindExtended, FindRegex };
|
||||||
enum ProcessOperation { ProcessFindAll, ProcessReplaceAll, ProcessCountAll, ProcessMarkAll, ProcessMarkAll_2 };
|
enum ProcessOperation { ProcessFindAll, ProcessReplaceAll, ProcessCountAll, ProcessMarkAll, ProcessMarkAll_2, ProcessMarkAll_IncSearch };
|
||||||
|
|
||||||
struct FindOption {
|
struct FindOption {
|
||||||
bool _isWholeWord;
|
bool _isWholeWord;
|
||||||
@ -237,6 +237,7 @@ public :
|
|||||||
|
|
||||||
int markAll(const char *str2find);
|
int markAll(const char *str2find);
|
||||||
int markAll2(const char *str2find);
|
int markAll2(const char *str2find);
|
||||||
|
int markAllInc(const char *str2find);
|
||||||
|
|
||||||
int processAll(ProcessOperation op, const char *txt2find, const char *txt2replace, bool isEntire = false, const char *fileName = NULL);
|
int processAll(ProcessOperation op, const char *txt2find, const char *txt2replace, bool isEntire = false, const char *fileName = NULL);
|
||||||
void replaceAllInOpenedDocs();
|
void replaceAllInOpenedDocs();
|
||||||
@ -408,7 +409,7 @@ private :
|
|||||||
ReBar * _pRebar;
|
ReBar * _pRebar;
|
||||||
REBARBANDINFO _rbBand;
|
REBARBANDINFO _rbBand;
|
||||||
|
|
||||||
HWND _hEditBox, _hSearchPrev, _hSearchNext, _hCheckCase;
|
//HWND _hEditBox, _hSearchPrev, _hSearchNext, _hCheckCase, _hCheckHiLiteAll;
|
||||||
|
|
||||||
bool _doSearchFromBegin;
|
bool _doSearchFromBegin;
|
||||||
virtual BOOL CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam);
|
virtual BOOL CALLBACK run_dlgProc(UINT message, WPARAM wParam, LPARAM lParam);
|
||||||
|
@ -79,17 +79,18 @@ BEGIN
|
|||||||
CONTROL "",IDC_PERCENTAGE_SLIDER,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | NOT WS_VISIBLE | WS_TABSTOP,240,161,53,10
|
CONTROL "",IDC_PERCENTAGE_SLIDER,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | NOT WS_VISIBLE | WS_TABSTOP,240,161,53,10
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_INCREMENT_FIND DIALOGEX 0, 0, 330, 20
|
IDD_INCREMENT_FIND DIALOGEX 0, 0, 400, 20
|
||||||
STYLE DS_SYSMODAL | DS_CONTROL | DS_FIXEDSYS | WS_CHILD | WS_CLIPCHILDREN
|
STYLE DS_SYSMODAL | DS_CONTROL | DS_FIXEDSYS | WS_CHILD | WS_CLIPCHILDREN
|
||||||
//EXSTYLE WS_EX_TRANSPARENT
|
//EXSTYLE WS_EX_TRANSPARENT
|
||||||
FONT 8, "MS Shell Dlg"
|
FONT 8, "MS Shell Dlg"
|
||||||
BEGIN
|
BEGIN
|
||||||
PUSHBUTTON "X",IDCANCEL,2,3,16,14
|
PUSHBUTTON "X",IDCANCEL,2,3,16,14
|
||||||
LTEXT "Find :",IDC_INCSTATIC,20,5,25,12
|
RTEXT "Find :",IDC_INCSTATIC,20,6,25,12
|
||||||
EDITTEXT IDC_INCFINDTEXT,45,4,175,12,ES_AUTOHSCROLL | ES_WANTRETURN | NOT WS_BORDER,WS_EX_STATICEDGE
|
EDITTEXT IDC_INCFINDTEXT,45,4,175,12,ES_AUTOHSCROLL | ES_WANTRETURN | NOT WS_BORDER,WS_EX_STATICEDGE
|
||||||
PUSHBUTTON "<",IDC_INCFINDPREVOK,223,3,16,14
|
PUSHBUTTON "<",IDC_INCFINDPREVOK,223,3,16,14
|
||||||
DEFPUSHBUTTON ">",IDC_INCFINDNXTOK,243,3,16,14
|
DEFPUSHBUTTON ">",IDC_INCFINDNXTOK,243,3,16,14
|
||||||
CONTROL "Match case", IDC_INCFINDMATCHCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,5,60,12
|
CONTROL "Highlight all", IDC_INCFINDHILITEALL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,270,5,65,12
|
||||||
|
CONTROL "Match case", IDC_INCFINDMATCHCASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,335,5,60,12
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_FINDRESULT DIALOGEX 26, 41, 223, 67
|
IDD_FINDRESULT DIALOGEX 26, 41, 223, 67
|
||||||
|
@ -63,6 +63,7 @@
|
|||||||
#define IDC_INCFINDPREVOK 1683
|
#define IDC_INCFINDPREVOK 1683
|
||||||
#define IDC_INCFINDNXTOK 1684
|
#define IDC_INCFINDNXTOK 1684
|
||||||
#define IDC_INCFINDMATCHCASE 1685
|
#define IDC_INCFINDMATCHCASE 1685
|
||||||
|
#define IDC_INCFINDHILITEALL 1686
|
||||||
|
|
||||||
#define IDC_TRANSPARENT_CHECK 1686
|
#define IDC_TRANSPARENT_CHECK 1686
|
||||||
#define IDC_TRANSPARENT_LOSSFOCUS_RADIO 1687
|
#define IDC_TRANSPARENT_LOSSFOCUS_RADIO 1687
|
||||||
|
@ -113,7 +113,8 @@ void ScintillaEditView::init(HINSTANCE hInst, HWND hPere)
|
|||||||
// smart hilighting
|
// smart hilighting
|
||||||
execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_2, INDIC_ROUNDBOX);
|
execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_2, INDIC_ROUNDBOX);
|
||||||
execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE, INDIC_ROUNDBOX);
|
execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE, INDIC_ROUNDBOX);
|
||||||
|
execute(SCI_INDICSETSTYLE, SCE_UNIVERSAL_FOUND_STYLE_INC, INDIC_ROUNDBOX);
|
||||||
|
|
||||||
_pParameter = NppParameters::getInstance();
|
_pParameter = NppParameters::getInstance();
|
||||||
|
|
||||||
_codepage = ::GetACP();
|
_codepage = ::GetACP();
|
||||||
@ -653,6 +654,14 @@ void ScintillaEditView::defineDocType(LangType typeDoc)
|
|||||||
|
|
||||||
iFind = stylers.getStylerIndexByID(SCE_UNIVERSAL_FOUND_STYLE_2);
|
iFind = stylers.getStylerIndexByID(SCE_UNIVERSAL_FOUND_STYLE_2);
|
||||||
if (iFind != -1)
|
if (iFind != -1)
|
||||||
|
{
|
||||||
|
Style & styleFind = stylers.getStyler(iFind);
|
||||||
|
//setSpecialStyle(styleFind);
|
||||||
|
setSpecialIndicator(styleFind);
|
||||||
|
}
|
||||||
|
|
||||||
|
iFind = stylers.getStylerIndexByID(SCE_UNIVERSAL_FOUND_STYLE_INC);
|
||||||
|
if (iFind != -1)
|
||||||
{
|
{
|
||||||
Style & styleFind = stylers.getStyler(iFind);
|
Style & styleFind = stylers.getStyler(iFind);
|
||||||
//setSpecialStyle(styleFind);
|
//setSpecialStyle(styleFind);
|
||||||
|
@ -284,6 +284,7 @@
|
|||||||
#define NPPM_INTERNAL_ISTABBARREDUCED (NOTEPADPLUS_USER_INTERNAL + 12)
|
#define NPPM_INTERNAL_ISTABBARREDUCED (NOTEPADPLUS_USER_INTERNAL + 12)
|
||||||
#define NPPM_INTERNAL_ISFOCUSEDTAB (NOTEPADPLUS_USER_INTERNAL + 13)
|
#define NPPM_INTERNAL_ISFOCUSEDTAB (NOTEPADPLUS_USER_INTERNAL + 13)
|
||||||
#define NPPM_INTERNAL_GETMENU (NOTEPADPLUS_USER_INTERNAL + 14)
|
#define NPPM_INTERNAL_GETMENU (NOTEPADPLUS_USER_INTERNAL + 14)
|
||||||
|
#define NPPM_INTERNAL_MARKALL (NOTEPADPLUS_USER_INTERNAL + 15)
|
||||||
|
|
||||||
// See Notepad_plus_msgs.h
|
// See Notepad_plus_msgs.h
|
||||||
//#define NOTEPADPLUS_USER (WM_USER + 1000)
|
//#define NOTEPADPLUS_USER (WM_USER + 1000)
|
||||||
|
@ -110,6 +110,8 @@
|
|||||||
#define SCE_UNIVERSAL_SELECT_STYLE 30
|
#define SCE_UNIVERSAL_SELECT_STYLE 30
|
||||||
#define SCE_UNIVERSAL_FOUND_STYLE 31
|
#define SCE_UNIVERSAL_FOUND_STYLE 31
|
||||||
#define SCE_UNIVERSAL_FOUND_STYLE_2 29
|
#define SCE_UNIVERSAL_FOUND_STYLE_2 29
|
||||||
|
#define SCE_UNIVERSAL_FOUND_STYLE_INC 28
|
||||||
|
|
||||||
#define SCE_P_DEFAULT 0
|
#define SCE_P_DEFAULT 0
|
||||||
#define SCE_P_COMMENTLINE 1
|
#define SCE_P_COMMENTLINE 1
|
||||||
#define SCE_P_NUMBER 2
|
#define SCE_P_NUMBER 2
|
||||||
|
Loading…
Reference in New Issue
Block a user