void JXSearchTextDialog::UpdateDisplay() { const JBoolean hasSearchText = HasSearchText(); const JBoolean teWritable = JConvertToBoolean( itsTE != NULL && itsTE->GetType() == JTextEditor::kFullEditor ); const JBoolean canSearch = JI2B(itsTE != NULL && !itsTE->IsEmpty() && hasSearchText); itsFindFwdButton->SetActive(canSearch); itsFindBackButton->SetActive(canSearch); const JBoolean canReplace = JI2B(canSearch && teWritable && itsTE->HasSelection()); itsReplaceButton->SetActive(canReplace); itsReplaceFindFwdButton->SetActive(canReplace); itsReplaceFindBackButton->SetActive(canReplace); const JBoolean canReplaceAll = JI2B(canSearch && teWritable); itsReplaceAllFwdButton->SetActive(canReplaceAll); itsReplaceAllBackButton->SetActive(canReplaceAll); itsReplaceAllInSelButton->SetActive(canReplace); itsSingleLineCB->SetActive(itsSearchIsRegexCB->IsChecked()); itsRetainFocusCB->SetActive(itsStayOpenCB->IsChecked()); }
void CBSearchTextDialog::UpdateDisplay() { JXSearchTextDialog::UpdateDisplay(); if (itsFileList->GetRowCount() == 0) { itsMultifileCB->SetState(kJFalse); } if (itsMultifileCB->IsChecked() || itsSearchDirCB->IsChecked()) { GetFindBackButton()->Deactivate(); GetReplaceButton()->Deactivate(); GetReplaceFindFwdButton()->Deactivate(); GetReplaceFindBackButton()->Deactivate(); GetReplaceAllBackButton()->Deactivate(); GetReplaceAllInSelButton()->Deactivate(); // These two buttons will already be deactivated if !HasSearchText(). if (HasSearchText()) { GetFindFwdButton()->Activate(); if ((CBGetDocumentManager())->WillEditTextFilesLocally()) { GetReplaceAllFwdButton()->Activate(); } } } }
JBoolean JXSearchTextDialog::GetSearchParameters ( JString* searchStr, JBoolean* searchIsRegex, JBoolean* caseSensitive, JBoolean* entireWord, JBoolean* wrapSearch, JString* replaceStr, JBoolean* replaceIsRegex, JBoolean* preserveCase, JRegex** regex ) const { if (!HasSearchText()) { (JGetUserNotification())->ReportError("You must enter something for which to search."); itsSearchInput->Focus(); return kJFalse; } *wrapSearch = itsWrapSearchCB->IsChecked(); *caseSensitive = !itsIgnoreCaseCB->IsChecked(); *preserveCase = itsPreserveCaseCB->IsChecked(); *searchStr = itsSearchInput->GetText(); *searchIsRegex = itsSearchIsRegexCB->IsChecked(); if (*searchIsRegex) { itsRegex->SetCaseSensitive(*caseSensitive); itsRegex->SetSingleLine(itsSingleLineCB->IsChecked()); const JError err = itsRegex->SetPattern(*searchStr); if (!err.OK()) { itsSearchInput->Focus(); err.ReportIfError(); return kJFalse; } } *replaceStr = itsReplaceInput->GetText(); *replaceIsRegex = itsReplaceIsRegexCB->IsChecked(); if (*replaceIsRegex) { itsRegex->SetMatchCase(*preserveCase); JIndexRange errRange; const JError err = itsRegex->SetReplacePattern(*replaceStr, &errRange); if (!err.OK()) { itsReplaceInput->Focus(); itsReplaceInput->SetSelection(errRange); err.ReportIfError(); return kJFalse; } } if (*searchIsRegex || itsSearchInput->IsEntireWord(1, itsSearchInput->GetTextLength())) { *entireWord = itsEntireWordCB->IsChecked(); } else { *entireWord = kJFalse; } *regex = itsRegex; // use the original strings, not the substituted ones itsPrevSearchMenu->AddString(itsSearchInput->GetText()); itsPrevReplaceMenu->AddString(itsReplaceInput->GetText()); // broadcast to other programs who support Xsearch protocol if (itsNeedXSearchBcastFlag) { SetXSearch(); } return kJTrue; }