SearchWidget::SearchWidget(SearchOptions options, SearchMode mode, SearchButtons buttons, QWidget *parent) : QWidget(parent), ui(new Ui::SearchWidget) { ui->setupUi(this); setWindowTitle(tr("Search Widget")); int labelWidth = fontMetrics().width(ui->labelReplace->text()); ui->labelFind->setMinimumWidth(labelWidth); ui->labelReplace->setMinimumWidth(labelWidth); connect(ui->findPrevious, SIGNAL(clicked()), SLOT(handleFindPrevious())); connect(ui->findNext, SIGNAL(clicked()), SLOT(handleFindNext())); connect(ui->replacePrevious, SIGNAL(clicked()), SLOT(handleReplacePrevious())); connect(ui->replaceNext, SIGNAL(clicked()), SLOT(handleReplaceNext())); connect(ui->replaceAll, SIGNAL(clicked()), SLOT(handleReplaceAll())); connect(ui->close, SIGNAL(clicked()), SLOT(handleClose())); connect(ui->searchString, SIGNAL(textChanged(QString)), SLOT(handleSearchStringChanged(QString))); connect(ui->replaceString, SIGNAL(textChanged(QString)), SLOT(handleReplaceStringChanged(QString))); m_searchOptionsMenu = new QMenu(tr("Search Options"), this); m_searchOptionsMenu->setObjectName(objectName()); m_searchCaseSensitive = new QAction(tr("Case Sensitive"), this); m_searchCaseSensitive->setCheckable(true); m_searchCaseSensitive->setObjectName(objectName()); m_searchOptionsMenu->addAction(m_searchCaseSensitive); connect(m_searchCaseSensitive, SIGNAL(triggered()), SLOT(handleOptionsChanged())); m_searchWholeWordsOnly = new QAction(tr("Whole Words Only"), this); m_searchWholeWordsOnly->setCheckable(true); m_searchWholeWordsOnly->setObjectName(objectName()); m_searchOptionsMenu->addAction(m_searchWholeWordsOnly); connect(m_searchWholeWordsOnly, SIGNAL(triggered()), SLOT(handleOptionsChanged())); m_searchOptionsMenu->addSeparator(); m_searchRegEx = new QAction(tr("Regular Expression"), this); m_searchRegEx->setObjectName(objectName()); m_searchRegEx->setCheckable(true); m_searchOptionsMenu->addAction(m_searchRegEx); m_searchWildcard = new QAction(tr("Wildcard Expression"), this); m_searchWildcard->setCheckable(true); m_searchWildcard->setObjectName(objectName()); m_searchOptionsMenu->addAction(m_searchWildcard); m_searchFixedString = new QAction(tr("Fixed String"), this); m_searchFixedString->setCheckable(true); m_searchFixedString->setObjectName(objectName()); m_searchOptionsMenu->addAction(m_searchFixedString); m_searchPatternGroup = new QActionGroup(this); m_searchPatternGroup->addAction(m_searchRegEx); m_searchPatternGroup->addAction(m_searchWildcard); m_searchPatternGroup->addAction(m_searchFixedString); m_searchWildcard->setChecked(true); connect(m_searchPatternGroup, SIGNAL(triggered(QAction*)), SLOT(handleOptionsChanged())); ui->searchOptions->setPopupMode(QToolButton::InstantPopup); ui->searchOptions->setMenu(m_searchOptionsMenu); setSearchButtons(buttons); setSearchOptions(options); setSearchMode(mode); }
/* Find/Replace dialog */ TextFindDialog::TextFindDialog(QPlasmaTextDoc* parent, bool replace) : QDialog(parent) { s_findSettings.current = this; fDocument = parent; setAttribute(Qt::WA_DeleteOnClose); if (replace) { setWindowTitle(tr("Replace...")); setWindowIcon(qStdIcon("edit-find-replace")); } else { setWindowTitle(tr("Find...")); setWindowIcon(qStdIcon("edit-find")); } fFindText = new QLineEdit(s_findSettings.text, this); if (replace) fNewText = new QLineEdit(s_findSettings.newText, this); else fNewText = NULL; fCaseSensitive = new QCheckBox(tr("&Case sensitive"), this); fRegEx = new QCheckBox(tr("&Regular expression search"), this); fWholeWord = new QCheckBox(tr("Match &whole word"), this); fReverse = new QCheckBox(tr("Search &up"), this); fFindText->selectAll(); fCaseSensitive->setChecked(s_findSettings.cs); fRegEx->setChecked(s_findSettings.regex); fWholeWord->setChecked(s_findSettings.wo); fReverse->setChecked(s_findSettings.reverse); QWidget* buttonPanel = new QWidget(this); QPushButton* btnFind = new QPushButton(replace ? tr("&Replace") : tr("&Find"), buttonPanel); QPushButton* btnReplaceAll = NULL; if (replace) { btnReplaceAll = new QPushButton(tr("Replace &All"), buttonPanel); fBtnSkip = new QPushButton(tr("&Skip"), buttonPanel); fBtnSkip->setEnabled(false); } QPushButton* btnCancel = new QPushButton(tr("&Cancel"), buttonPanel); QGridLayout* buttonLayout = new QGridLayout(buttonPanel); buttonLayout->setContentsMargins(0, 0, 0, 0); buttonLayout->setVerticalSpacing(4); int idx = 0; buttonLayout->addWidget(btnFind, idx++, 0); if (replace) { buttonLayout->addWidget(btnReplaceAll, idx++, 0); buttonLayout->addWidget(fBtnSkip, idx++, 0); } buttonLayout->addWidget(btnCancel, idx++, 0); buttonLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::MinimumExpanding), idx, 0); QGridLayout* layout = new QGridLayout(this); layout->setContentsMargins(8, 8, 8, 8); layout->setVerticalSpacing(4); layout->setHorizontalSpacing(8); idx = 0; layout->addWidget(new QLabel(tr("Search string:"), this), idx, 0); layout->addWidget(fFindText, idx++, 1); if (replace) { layout->addWidget(new QLabel(tr("Replace with:"), this), idx, 0); layout->addWidget(fNewText, idx++, 1); } layout->addItem(new QSpacerItem(0, 16, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum), idx++, 0, 1, 2); layout->addWidget(fCaseSensitive, idx++, 1); layout->addWidget(fRegEx, idx++, 1); layout->addWidget(fWholeWord, idx++, 1); layout->addWidget(fReverse, idx++, 1); layout->addWidget(buttonPanel, 0, 2, idx, 1); connect(btnFind, SIGNAL(clicked()), this, SLOT(handleFind())); connect(btnCancel, SIGNAL(clicked()), this, SLOT(reject())); if (replace) { connect(btnReplaceAll, SIGNAL(clicked()), this, SLOT(handleReplaceAll())); connect(fBtnSkip, SIGNAL(clicked()), this, SLOT(handleSkip())); } resize(sizeHint().width() * 1.5, sizeHint().height()); }