From aa9dc9ead80e57598ba31ac74ed7c18880192919 Mon Sep 17 00:00:00 2001 From: shatty Date: Sat, 9 Aug 2003 04:52:41 +0000 Subject: [PATCH] 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 --- src/apps/stylededit/StyledEditWindow.cpp | 23 +++++++++++++++++++++-- src/apps/stylededit/StyledEditWindow.h | 3 +++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/apps/stylededit/StyledEditWindow.cpp b/src/apps/stylededit/StyledEditWindow.cpp index 49254fa7c9..118a459717 100644 --- a/src/apps/stylededit/StyledEditWindow.cpp +++ b/src/apps/stylededit/StyledEditWindow.cpp @@ -176,10 +176,13 @@ StyledEditWindow::InitWindow(uint32 encoding) menu->AddSeparatorItem(); 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("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: BMessage *fontMessage; @@ -363,6 +366,7 @@ StyledEditWindow::MessageReceived(BMessage *message) case MSG_SEARCH: { message->FindString("findtext", &fStringToFind); + fFindAgainItem->SetEnabled(true); message->FindBool("casesens", &fCaseSens); message->FindBool("wrap", &fWrapAround); message->FindBool("backsearch", &fBackSearch); @@ -398,7 +402,9 @@ StyledEditWindow::MessageReceived(BMessage *message) message->FindString("FindText",&findIt); message->FindString("ReplaceText",&replaceWith); fStringToFind= findIt; + fFindAgainItem->SetEnabled(true); fReplaceString= replaceWith; + fReplaceSameItem->SetEnabled(true); fCaseSens= caseSens; fWrapAround= wrap; fBackSearch= backSearch; @@ -406,6 +412,11 @@ StyledEditWindow::MessageReceived(BMessage *message) Replace(findIt, replaceWith, caseSens, wrap, backSearch); } break; + case MENU_REPLACE_SAME: + { + Replace(fStringToFind,fReplaceString,fCaseSens,fWrapAround,fBackSearch); + } + break; case MSG_REPLACE_ALL: { BString findIt; @@ -418,7 +429,9 @@ StyledEditWindow::MessageReceived(BMessage *message) message->FindBool("allwindows", &allWindows); fStringToFind= findIt; + fFindAgainItem->SetEnabled(true); fReplaceString= replaceWith; + fReplaceSameItem->SetEnabled(true); fCaseSens= caseSens; @@ -1263,6 +1276,7 @@ StyledEditWindow::FindSelection() viewText= fTextView->Text(); viewText.CopyInto(fStringToFind, selectionStart, selectionLength); + fFindAgainItem->SetEnabled(true); Search(fStringToFind, fCaseSens, fWrapAround, fBackSearch); }/***StyledEditWindow::FindSelection()***/ @@ -1296,6 +1310,11 @@ StyledEditWindow::ReplaceAll(BString findIt, BString replaceWith, bool caseSens) else viewText.IReplaceAll(findIt.String(),replaceWith.String()); + if (viewText.Compare(fTextView->Text()) == 0) { + // they are the same + return; + } + int32 textStart, textFinish; fTextView->GetSelection(&textStart, &textFinish); diff --git a/src/apps/stylededit/StyledEditWindow.h b/src/apps/stylededit/StyledEditWindow.h index 183b29dfb9..044ed3a251 100644 --- a/src/apps/stylededit/StyledEditWindow.h +++ b/src/apps/stylededit/StyledEditWindow.h @@ -60,6 +60,9 @@ private: BMenuItem *fCopyItem; BMenuItem *fClearItem; + BMenuItem *fFindAgainItem; + BMenuItem *fReplaceSameItem; + BMenuItem *fBlackItem; BMenuItem *fRedItem; BMenuItem *fGreenItem;