同步操作将从 陈炳煌/sqlitebrowser 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "FindReplaceDialog.h"#include "ui_FindReplaceDialog.h"#include "ExtendedScintilla.h"#include <QWhatsThis>FindReplaceDialog::FindReplaceDialog(QWidget* parent): QDialog(parent),ui(new Ui::FindReplaceDialog),findInProgress(false){// Create UIui->setupUi(this);}FindReplaceDialog::~FindReplaceDialog(){delete ui;}void FindReplaceDialog::setExtendedScintilla(ExtendedScintilla* scintilla){m_scintilla = scintilla;// Create indicator for find-all and replace-all occurrencesfoundIndicatorNumber = m_scintilla->indicatorDefine(QsciScintilla::StraightBoxIndicator);m_scintilla->setIndicatorForegroundColor(Qt::magenta, foundIndicatorNumber);m_scintilla->setIndicatorDrawUnder(true, foundIndicatorNumber);bool isWriteable = ! m_scintilla->isReadOnly();ui->replaceWithText->setEnabled(isWriteable);ui->replaceButton->setEnabled(isWriteable);ui->replaceAllButton->setEnabled(isWriteable);connect(m_scintilla, SIGNAL(destroyed()), this, SLOT(hide()));connect(ui->findText, SIGNAL(editingFinished()), this, SLOT(cancelFind()));connect(ui->regexpCheckBox, &QCheckBox::toggled, this, &FindReplaceDialog::cancelFind);connect(ui->caseCheckBox, &QCheckBox::toggled, this, &FindReplaceDialog::cancelFind);connect(ui->wholeWordsCheckBox, &QCheckBox::toggled, this, &FindReplaceDialog::cancelFind);connect(ui->wrapCheckBox, &QCheckBox::toggled, this, &FindReplaceDialog::cancelFind);connect(ui->backwardsCheckBox, &QCheckBox::toggled, this, &FindReplaceDialog::cancelFind);connect(ui->selectionCheckBox, &QCheckBox::toggled, this, &FindReplaceDialog::cancelFind);connect(ui->selectionCheckBox, &QCheckBox::toggled, ui->wrapCheckBox, &QCheckBox::setDisabled);}bool FindReplaceDialog::findFirst(bool wrap, bool forward){if (ui->selectionCheckBox->isChecked())return m_scintilla->findFirstInSelection(ui->findText->text(),ui->regexpCheckBox->isChecked(),ui->caseCheckBox->isChecked(),ui->wholeWordsCheckBox->isChecked(),forward,/* show */ true,/* posix */ true,/* cxx11 */ true);elsereturn m_scintilla->findFirst(ui->findText->text(),ui->regexpCheckBox->isChecked(),ui->caseCheckBox->isChecked(),ui->wholeWordsCheckBox->isChecked(),wrap,forward,/* line */ -1,/* index */ -1,/* show */ true,/* posix */ true,/* cxx11 */ true);}bool FindReplaceDialog::findNext(){clearIndicators();if (findInProgress)findInProgress = m_scintilla->findNext();elsefindInProgress = findFirst(ui->wrapCheckBox->isChecked(),!ui->backwardsCheckBox->isChecked());if (!findInProgress)ui->messageLabel->setText(tr("The searched text was not found"));return findInProgress;}void FindReplaceDialog::showFindReplaceDialog(bool hasReplace){ui->replaceWithText->setVisible(hasReplace);ui->replaceButton->setVisible(hasReplace);ui->replaceWithLabel->setVisible(hasReplace);ui->replaceAllButton->setVisible(hasReplace);show();}void FindReplaceDialog::show(){ui->findText->setFocus();// If there is multi-line selected text set automatically the selection// check box. If it's only part of a line, use it as text to find.if (m_scintilla->hasSelectedText())if (m_scintilla->selectedText().contains("\n"))ui->selectionCheckBox->setChecked(true);else {ui->findText->setText(m_scintilla->selectedText());ui->selectionCheckBox->setChecked(false);}elseui->selectionCheckBox->setChecked(false);ui->findText->selectAll();QDialog::show();}void FindReplaceDialog::replace(){if (m_scintilla->hasSelectedText())m_scintilla->replace(ui->replaceWithText->text());findNext();}void FindReplaceDialog::indicateSelection(){int fromRow, fromIndex, toRow, toIndex;m_scintilla->getSelection(&fromRow, &fromIndex, &toRow, &toIndex);m_scintilla->fillIndicatorRange(fromRow, fromIndex, toRow, toIndex, foundIndicatorNumber);}void FindReplaceDialog::searchAll(bool replace){clearIndicators();if (!ui->selectionCheckBox->isChecked())m_scintilla->setCursorPosition(0, 0);bool found = findFirst(/* wrap */ false, /* fordward */ true);int occurrences = 0;while (found) {if (replace)m_scintilla->replace(ui->replaceWithText->text());indicateSelection();++occurrences;found = m_scintilla->findNext();}if (!ui->selectionCheckBox->isChecked())m_scintilla->clearSelection();QString message;switch (occurrences) {case 0:message = tr("The searched text was not found.");break;case 1:if (replace)message = tr("The searched text was replaced one time.");elsemessage = tr("The searched text was found one time.");break;default:if (replace)message = tr("The searched text was replaced %1 times.").arg(occurrences);elsemessage = tr("The searched text was found %1 times.").arg(occurrences);break;}ui->messageLabel->setText(message);}void FindReplaceDialog::findAll(){searchAll(/* replace */ false);}void FindReplaceDialog::replaceAll(){searchAll(/* replace */ true);}void FindReplaceDialog::cancelFind(){m_scintilla->findFirst(QString(), false, false, false, false);clearIndicators();findInProgress = false;ui->messageLabel->setText("");}void FindReplaceDialog::help(){QWhatsThis::enterWhatsThisMode();}void FindReplaceDialog::clearIndicators(){m_scintilla->clearIndicatorRange(0, 0, m_scintilla->lines(), m_scintilla->lineLength(m_scintilla->lines()), foundIndicatorNumber);ui->messageLabel->setText("");}void FindReplaceDialog::close(){m_scintilla->clearSelection();// Reset any previous find so it does not interfere with the next time// the dialog is open.cancelFind();QDialog::close();}void FindReplaceDialog::buttonBox_clicked(QAbstractButton* button){if (button == ui->buttonBox->button(QDialogButtonBox::Help))help();else if (button == ui->buttonBox->button(QDialogButtonBox::Close))close();}void FindReplaceDialog::reject(){close();QDialog::reject();}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。