开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
forked from 陈炳煌/sqlitebrowser
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (16)
标签 (31)
master
coverity_scan
v3.11.x
issue1831_v1
qdarkstyle
no_savepoints_ro_db
v3.10.x
v3.9.x
v3.6.x
v3.5.x
v3.4.x
v3.3.x
utf8grammar
sqlb-3.2.x
sqlb-3.1.x
sqlb-3.x
continuous
v3.11.2
v3.11.1v2
v3.11.1
v3.11.0
v3.11.0-beta3
v3.11.0-beta2
v3.11.0-beta1
v3.11.0-alpha1
v3.10.1
v3.10.0
v3.10.0-beta2
v3.10.0-beta1
v3.9.1
v3.9.0
v3.9.0-beta1
v3.8.0
v3.7.0
v3.6.0
v3.5.1
master
分支 (16)
标签 (31)
master
coverity_scan
v3.11.x
issue1831_v1
qdarkstyle
no_savepoints_ro_db
v3.10.x
v3.9.x
v3.6.x
v3.5.x
v3.4.x
v3.3.x
utf8grammar
sqlb-3.2.x
sqlb-3.1.x
sqlb-3.x
continuous
v3.11.2
v3.11.1v2
v3.11.1
v3.11.0
v3.11.0-beta3
v3.11.0-beta2
v3.11.0-beta1
v3.11.0-alpha1
v3.10.1
v3.10.0
v3.10.0-beta2
v3.10.0-beta1
v3.9.1
v3.9.0
v3.9.0-beta1
v3.8.0
v3.7.0
v3.6.0
v3.5.1
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (16)
标签 (31)
master
coverity_scan
v3.11.x
issue1831_v1
qdarkstyle
no_savepoints_ro_db
v3.10.x
v3.9.x
v3.6.x
v3.5.x
v3.4.x
v3.3.x
utf8grammar
sqlb-3.2.x
sqlb-3.1.x
sqlb-3.x
continuous
v3.11.2
v3.11.1v2
v3.11.1
v3.11.0
v3.11.0-beta3
v3.11.0-beta2
v3.11.0-beta1
v3.11.0-alpha1
v3.10.1
v3.10.0
v3.10.0-beta2
v3.10.0-beta1
v3.9.1
v3.9.0
v3.9.0-beta1
v3.8.0
v3.7.0
v3.6.0
v3.5.1
sqlitebrowser
/
src
/
FindReplaceDialog.cpp
sqlitebrowser
/
src
/
FindReplaceDialog.cpp
FindReplaceDialog.cpp 6.54 KB
一键复制 编辑 原始数据 按行查看 历史
mgrojo 提交于 2019年07月27日 01:47 +08:00 . Allow using extended regular expressions in the find dialogs
#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 UI
ui->setupUi(this);
}
FindReplaceDialog::~FindReplaceDialog()
{
delete ui;
}
void FindReplaceDialog::setExtendedScintilla(ExtendedScintilla* scintilla)
{
m_scintilla = scintilla;
// Create indicator for find-all and replace-all occurrences
foundIndicatorNumber = 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);
else
return 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();
else
findInProgress = 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);
}
else
ui->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.");
else
message = tr("The searched text was found one time.");
break;
default:
if (replace)
message = tr("The searched text was replaced %1 times.").arg(occurrences);
else
message = 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();
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLite Database Browser" and "Database Browser for SQLite". Website at:
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/my_open_source_software/sqlitebrowser.git
git@gitee.com:my_open_source_software/sqlitebrowser.git
my_open_source_software
sqlitebrowser
sqlitebrowser
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /