disabled find next and replace same when no text has been found or replaced yet, enabled them when that occurs. also fixed replace all so it does not dirty the window if it fails to replace anything.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4247 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
shatty
2003-08-09 04:52:41 +00:00
parent 23e88e5ee2
commit aa9dc9ead8
2 changed files with 24 additions and 2 deletions
+21 -2
View File
@@ -176,10 +176,13 @@ StyledEditWindow::InitWindow(uint32 encoding)
menu->AddSeparatorItem(); menu->AddSeparatorItem();
menu->AddItem(menuItem= new BMenuItem("Find...", new BMessage(MENU_FIND),'F')); menu->AddItem(menuItem= new BMenuItem("Find...", new BMessage(MENU_FIND),'F'));
menu->AddItem(menuItem= new BMenuItem("Find Again",new BMessage(MENU_FIND_AGAIN),'G')); menu->AddItem(fFindAgainItem= new BMenuItem("Find Again",new BMessage(MENU_FIND_AGAIN),'G'));
fFindAgainItem->SetEnabled(false);
menu->AddItem(menuItem= new BMenuItem("Find Selection", new BMessage(MENU_FIND_SELECTION),'H')); menu->AddItem(menuItem= new BMenuItem("Find Selection", new BMessage(MENU_FIND_SELECTION),'H'));
menu->AddItem(menuItem= new BMenuItem("Replace...", new BMessage(MENU_REPLACE),'R')); menu->AddItem(menuItem= new BMenuItem("Replace...", new BMessage(MENU_REPLACE),'R'));
menu->AddItem(menuItem= new BMenuItem("Replace Same", new BMessage(MENU_REPLACE_SAME),'T')); menu->AddItem(fReplaceSameItem= new BMenuItem("Replace Same", new BMessage(MENU_REPLACE_SAME),'T'));
fReplaceSameItem->SetEnabled(false);
//Add the "Font"-menu: //Add the "Font"-menu:
BMessage *fontMessage; BMessage *fontMessage;
@@ -363,6 +366,7 @@ StyledEditWindow::MessageReceived(BMessage *message)
case MSG_SEARCH: case MSG_SEARCH:
{ {
message->FindString("findtext", &fStringToFind); message->FindString("findtext", &fStringToFind);
fFindAgainItem->SetEnabled(true);
message->FindBool("casesens", &fCaseSens); message->FindBool("casesens", &fCaseSens);
message->FindBool("wrap", &fWrapAround); message->FindBool("wrap", &fWrapAround);
message->FindBool("backsearch", &fBackSearch); message->FindBool("backsearch", &fBackSearch);
@@ -398,7 +402,9 @@ StyledEditWindow::MessageReceived(BMessage *message)
message->FindString("FindText",&findIt); message->FindString("FindText",&findIt);
message->FindString("ReplaceText",&replaceWith); message->FindString("ReplaceText",&replaceWith);
fStringToFind= findIt; fStringToFind= findIt;
fFindAgainItem->SetEnabled(true);
fReplaceString= replaceWith; fReplaceString= replaceWith;
fReplaceSameItem->SetEnabled(true);
fCaseSens= caseSens; fCaseSens= caseSens;
fWrapAround= wrap; fWrapAround= wrap;
fBackSearch= backSearch; fBackSearch= backSearch;
@@ -406,6 +412,11 @@ StyledEditWindow::MessageReceived(BMessage *message)
Replace(findIt, replaceWith, caseSens, wrap, backSearch); Replace(findIt, replaceWith, caseSens, wrap, backSearch);
} }
break; break;
case MENU_REPLACE_SAME:
{
Replace(fStringToFind,fReplaceString,fCaseSens,fWrapAround,fBackSearch);
}
break;
case MSG_REPLACE_ALL: case MSG_REPLACE_ALL:
{ {
BString findIt; BString findIt;
@@ -418,7 +429,9 @@ StyledEditWindow::MessageReceived(BMessage *message)
message->FindBool("allwindows", &allWindows); message->FindBool("allwindows", &allWindows);
fStringToFind= findIt; fStringToFind= findIt;
fFindAgainItem->SetEnabled(true);
fReplaceString= replaceWith; fReplaceString= replaceWith;
fReplaceSameItem->SetEnabled(true);
fCaseSens= caseSens; fCaseSens= caseSens;
@@ -1263,6 +1276,7 @@ StyledEditWindow::FindSelection()
viewText= fTextView->Text(); viewText= fTextView->Text();
viewText.CopyInto(fStringToFind, selectionStart, selectionLength); viewText.CopyInto(fStringToFind, selectionStart, selectionLength);
fFindAgainItem->SetEnabled(true);
Search(fStringToFind, fCaseSens, fWrapAround, fBackSearch); Search(fStringToFind, fCaseSens, fWrapAround, fBackSearch);
}/***StyledEditWindow::FindSelection()***/ }/***StyledEditWindow::FindSelection()***/
@@ -1296,6 +1310,11 @@ StyledEditWindow::ReplaceAll(BString findIt, BString replaceWith, bool caseSens)
else else
viewText.IReplaceAll(findIt.String(),replaceWith.String()); viewText.IReplaceAll(findIt.String(),replaceWith.String());
if (viewText.Compare(fTextView->Text()) == 0) {
// they are the same
return;
}
int32 textStart, textFinish; int32 textStart, textFinish;
fTextView->GetSelection(&textStart, &textFinish); fTextView->GetSelection(&textStart, &textFinish);
+3
View File
@@ -60,6 +60,9 @@ private:
BMenuItem *fCopyItem; BMenuItem *fCopyItem;
BMenuItem *fClearItem; BMenuItem *fClearItem;
BMenuItem *fFindAgainItem;
BMenuItem *fReplaceSameItem;
BMenuItem *fBlackItem; BMenuItem *fBlackItem;
BMenuItem *fRedItem; BMenuItem *fRedItem;
BMenuItem *fGreenItem; BMenuItem *fGreenItem;