void JXSearchTextDialog::SetObjects ( JXInputField* searchInput, JXStringHistoryMenu* prevSearchMenu, JXTextCheckbox* ignoreCaseCB, JXTextCheckbox* entireWordCB, JXTextCheckbox* wrapSearchCB, JXTextCheckbox* searchIsRegexCB, JXTextCheckbox* singleLineCB, JXInputField* replaceInput, JXStringHistoryMenu* prevReplaceMenu, JXTextCheckbox* replaceIsRegexCB, JXTextCheckbox* preserveCaseCB, JXTextCheckbox* stayOpenCB, JXTextCheckbox* retainFocusCB, JXSearchTextButton* findFwdButton, JXSearchTextButton* findBackButton, JXTextButton* replaceButton, JXSearchTextButton* replaceFindFwdButton, JXSearchTextButton* replaceFindBackButton, JXSearchTextButton* replaceAllFwdButton, JXSearchTextButton* replaceAllBackButton, JXTextButton* replaceAllInSelButton, JXTextButton* closeButton, JXTextButton* helpButton, JXTextButton* qRefButton ) { JXWindow* window = searchInput->GetWindow(); window->SetTitle("Search text"); window->SetCloseAction(JXWindow::kDeactivateDirector); window->PlaceAsDialogWindow(); window->LockCurrentMinSize(); window->ShouldFocusWhenShow(kJTrue); ListenTo(window); itsSearchInput = searchInput; itsPrevSearchMenu = prevSearchMenu; itsIgnoreCaseCB = ignoreCaseCB; itsEntireWordCB = entireWordCB; itsWrapSearchCB = wrapSearchCB; itsSearchIsRegexCB = searchIsRegexCB; itsSingleLineCB = singleLineCB; itsReplaceInput = replaceInput; itsPrevReplaceMenu = prevReplaceMenu; itsReplaceIsRegexCB = replaceIsRegexCB; itsPreserveCaseCB = preserveCaseCB; itsStayOpenCB = stayOpenCB; itsRetainFocusCB = retainFocusCB; itsFindFwdButton = findFwdButton; itsFindBackButton = findBackButton; itsReplaceButton = replaceButton; itsReplaceFindFwdButton = replaceFindFwdButton; itsReplaceFindBackButton = replaceFindBackButton; itsReplaceAllFwdButton = replaceAllFwdButton; itsReplaceAllBackButton = replaceAllBackButton; itsReplaceAllInSelButton = replaceAllInSelButton; itsCloseButton = closeButton; itsHelpButton = helpButton; itsQRefButton = qRefButton; SetFont(JGetMonospaceFontName(), kJDefaultMonoFontSize); // decor const JRect wFrame = window->GetFrame(); const JRect soFrame = itsStayOpenCB->GetFrame(); JXDownRect* line = new JXDownRect(window, JXWidget::kFixedLeft, JXWidget::kFixedTop, soFrame.left, soFrame.top-6, wFrame.right-10-soFrame.left, 2); assert( line != NULL ); line->SetBorderWidth(1); // shortcuts itsCloseButton->SetShortcuts("#W^["); itsIgnoreCaseCB->SetShortcuts("#I"); itsWrapSearchCB->SetShortcuts("#S"); itsEntireWordCB->SetShortcuts("#E"); itsSearchIsRegexCB->SetShortcuts("#X"); itsSingleLineCB->SetShortcuts("#T"); itsPreserveCaseCB->SetShortcuts("#P"); if (JXMenu::GetDefaultStyle() == JXMenu::kMacintoshStyle) { itsFindFwdButton->SetShortcuts("#G"); itsFindFwdButton->SetHint("Return / Meta-G"); itsFindBackButton->SetHint("Shift-Return / Meta-Shift-G"); itsReplaceButton->SetShortcuts("#R#="); itsReplaceButton->SetHint("Meta-R / Meta-="); itsReplaceFindFwdButton->SetShortcuts("#L"); itsReplaceFindFwdButton->SetHint("Meta-L"); itsReplaceFindBackButton->SetHint("Meta-Shift-L"); } else { itsFindFwdButton->SetShortcuts("^G"); itsFindFwdButton->SetHint("Return / Ctrl-G"); itsFindBackButton->SetHint("Shift-Return / Ctrl-Shift-G"); itsReplaceButton->SetShortcuts("#R^="); itsReplaceButton->SetHint("Meta-R / Ctrl-="); itsReplaceFindFwdButton->SetShortcuts("^L"); itsReplaceFindFwdButton->SetHint("Ctrl-L"); itsReplaceFindBackButton->SetHint("Ctrl-Shift-L"); } JXKeyModifiers modifiers(GetDisplay()); window->InstallShortcut(itsFindFwdButton, JXCtrl('M'), modifiers); modifiers.SetState(kJXShiftKeyIndex, kJTrue); window->InstallShortcut(itsFindBackButton, JXCtrl('M'), modifiers); modifiers.SetState(kJXMetaKeyIndex, kJTrue); itsReplaceIsRegexCB->SetShortcuts("#X"); // trick to underline x window->ClearShortcuts(itsReplaceIsRegexCB); window->InstallShortcut(itsReplaceIsRegexCB, 'x', modifiers); window->InstallShortcut(itsReplaceIsRegexCB, 'X', modifiers); if (JXMenu::GetDefaultStyle() != JXMenu::kMacintoshStyle) { modifiers.SetState(kJXMetaKeyIndex, kJFalse); modifiers.SetState(kJXControlKeyIndex, kJTrue); } window->InstallShortcut(itsFindBackButton, 'g', modifiers); window->InstallShortcut(itsFindBackButton, 'G', modifiers); window->InstallShortcut(itsReplaceFindBackButton, 'l', modifiers); window->InstallShortcut(itsReplaceFindBackButton, 'L', modifiers); // broadcasters ListenTo(itsFindFwdButton); ListenTo(itsFindBackButton); ListenTo(itsReplaceButton); ListenTo(itsReplaceFindFwdButton); ListenTo(itsReplaceFindBackButton); ListenTo(itsReplaceAllFwdButton); ListenTo(itsReplaceAllBackButton); ListenTo(itsReplaceAllInSelButton); ListenTo(itsHelpButton); ListenTo(itsQRefButton); ListenTo(itsCloseButton); ListenTo(itsPrevSearchMenu); ListenTo(itsPrevReplaceMenu); itsIgnoreCaseCB->SetState(kJTrue); itsWrapSearchCB->SetState(kJTrue); itsStayOpenCB->SetState(kJTrue); itsRetainFocusCB->SetState(kJTrue); // listen after setting value ListenTo(itsStayOpenCB); // XSearch data itsSearchInput->ShouldBroadcastAllTextChanged(kJTrue); ListenTo(itsSearchInput); ListenTo(itsSearchIsRegexCB); ListenTo(itsSingleLineCB); itsReplaceInput->ShouldBroadcastAllTextChanged(kJTrue); ListenTo(itsReplaceInput); ListenTo(itsReplaceIsRegexCB); ListenTo(itsPreserveCaseCB); ListenTo(itsWrapSearchCB); ListenTo(itsEntireWordCB); ListenTo(itsIgnoreCaseCB); }