forked from qt-creator/qt-creator
Core: Inline finddialog.ui
Translations are left alone for now. Change-Id: I8e88c33abcd8c79f158d8bdac030c68df16d462b Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -64,7 +64,6 @@ add_qtc_plugin(Core
|
|||||||
find/basetextfind.cpp find/basetextfind.h
|
find/basetextfind.cpp find/basetextfind.h
|
||||||
find/currentdocumentfind.cpp find/currentdocumentfind.h
|
find/currentdocumentfind.cpp find/currentdocumentfind.h
|
||||||
find/find.qrc
|
find/find.qrc
|
||||||
find/finddialog.ui
|
|
||||||
find/findplugin.cpp find/findplugin.h
|
find/findplugin.cpp find/findplugin.h
|
||||||
find/findtoolbar.cpp find/findtoolbar.h
|
find/findtoolbar.cpp find/findtoolbar.h
|
||||||
find/findtoolwindow.cpp find/findtoolwindow.h
|
find/findtoolwindow.cpp find/findtoolwindow.h
|
||||||
|
@@ -294,7 +294,6 @@ Project {
|
|||||||
"currentdocumentfind.cpp",
|
"currentdocumentfind.cpp",
|
||||||
"currentdocumentfind.h",
|
"currentdocumentfind.h",
|
||||||
"find.qrc",
|
"find.qrc",
|
||||||
"finddialog.ui",
|
|
||||||
"findplugin.cpp",
|
"findplugin.cpp",
|
||||||
"findplugin.h",
|
"findplugin.h",
|
||||||
"findtoolbar.cpp",
|
"findtoolbar.cpp",
|
||||||
|
@@ -1,217 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>Core::Internal::FindDialog</class>
|
|
||||||
<widget class="QWidget" name="Core::Internal::FindDialog">
|
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
|
||||||
<property name="sizeConstraint">
|
|
||||||
<enum>QLayout::SetFixedSize</enum>
|
|
||||||
</property>
|
|
||||||
<item row="4" column="0" colspan="2">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_3">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="searchButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Search</string>
|
|
||||||
</property>
|
|
||||||
<property name="default">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="replaceButton">
|
|
||||||
<property name="text">
|
|
||||||
<string>Search && &Replace</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="searchLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Search f&or:</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>searchTerm</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QWidget" name="widget_2" native="true">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<property name="spacing">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QComboBox" name="filterList">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="sizeAdjustPolicy">
|
|
||||||
<enum>QComboBox::AdjustToContents</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<widget class="QWidget" name="optionsWidget" native="true">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<property name="leftMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="topMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="rightMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="bottomMargin">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="matchCase">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Case sensitive</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="wholeWords">
|
|
||||||
<property name="text">
|
|
||||||
<string>Whole words o&nly</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QCheckBox" name="regExp">
|
|
||||||
<property name="text">
|
|
||||||
<string>Use re&gular expressions</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>80</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>Sco&pe:</string>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>filterList</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="Utils::FancyLineEdit" name="searchTerm"/>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0" colspan="2">
|
|
||||||
<widget class="QWidget" name="configWidget" native="true">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>10</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>680</width>
|
|
||||||
<height>0</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>Utils::FancyLineEdit</class>
|
|
||||||
<extends>QLineEdit</extends>
|
|
||||||
<header location="global">utils/fancylineedit.h</header>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<tabstops>
|
|
||||||
<tabstop>filterList</tabstop>
|
|
||||||
<tabstop>searchTerm</tabstop>
|
|
||||||
<tabstop>matchCase</tabstop>
|
|
||||||
<tabstop>wholeWords</tabstop>
|
|
||||||
<tabstop>regExp</tabstop>
|
|
||||||
</tabstops>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
@@ -2,22 +2,33 @@
|
|||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
#include "findtoolwindow.h"
|
#include "findtoolwindow.h"
|
||||||
|
|
||||||
#include "ifindfilter.h"
|
#include "ifindfilter.h"
|
||||||
#include "findplugin.h"
|
#include "findplugin.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <utils/qtcassert.h>
|
|
||||||
#include <utils/algorithm.h>
|
|
||||||
|
|
||||||
#include <QSettings>
|
#include <utils/algorithm.h>
|
||||||
#include <QStringListModel>
|
#include <utils/fancylineedit.h>
|
||||||
|
#include <utils/layoutbuilder.h>
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
|
#include <QCheckBox>
|
||||||
|
#include <QComboBox>
|
||||||
#include <QCompleter>
|
#include <QCompleter>
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QGridLayout>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QPushButton>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QScrollArea>
|
#include <QScrollArea>
|
||||||
|
#include <QSettings>
|
||||||
|
#include <QStringListModel>
|
||||||
|
|
||||||
using namespace Core;
|
using namespace Utils;
|
||||||
using namespace Core::Internal;
|
|
||||||
|
namespace Core::Internal {
|
||||||
|
|
||||||
static FindToolWindow *m_instance = nullptr;
|
static FindToolWindow *m_instance = nullptr;
|
||||||
|
|
||||||
@@ -45,35 +56,96 @@ FindToolWindow::FindToolWindow(QWidget *parent)
|
|||||||
m_configWidget(nullptr)
|
m_configWidget(nullptr)
|
||||||
{
|
{
|
||||||
m_instance = this;
|
m_instance = this;
|
||||||
m_ui.setupUi(this);
|
|
||||||
m_ui.searchTerm->setFiltering(true);
|
|
||||||
m_ui.searchTerm->setPlaceholderText(QString());
|
|
||||||
setFocusProxy(m_ui.searchTerm);
|
|
||||||
|
|
||||||
connect(m_ui.searchButton, &QAbstractButton::clicked, this, &FindToolWindow::search);
|
m_searchButton = new QPushButton(this);
|
||||||
connect(m_ui.replaceButton, &QAbstractButton::clicked, this, &FindToolWindow::replace);
|
m_searchButton->setText(QCoreApplication::translate("Core::Internal::FindDialog", "&Search", nullptr));
|
||||||
connect(m_ui.matchCase, &QAbstractButton::toggled, Find::instance(), &Find::setCaseSensitive);
|
m_searchButton->setDefault(true);
|
||||||
connect(m_ui.wholeWords, &QAbstractButton::toggled, Find::instance(), &Find::setWholeWord);
|
|
||||||
connect(m_ui.regExp, &QAbstractButton::toggled, Find::instance(), &Find::setRegularExpression);
|
m_replaceButton = new QPushButton(this);
|
||||||
connect(m_ui.filterList, &QComboBox::activated,
|
m_replaceButton->setText(QCoreApplication::translate("Core::Internal::FindDialog", "Search && &Replace", nullptr));
|
||||||
|
|
||||||
|
m_searchTerm = new FancyLineEdit(this);
|
||||||
|
m_searchTerm->setFiltering(true);
|
||||||
|
|
||||||
|
m_searchLabel = new QLabel(this);
|
||||||
|
m_searchLabel->setText(QCoreApplication::translate("Core::Internal::FindDialog", "Search f&or:", nullptr));
|
||||||
|
m_searchLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
|
||||||
|
m_searchLabel->setBuddy(m_searchTerm);
|
||||||
|
|
||||||
|
m_filterList = new QComboBox;
|
||||||
|
m_filterList->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||||
|
m_filterList->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||||
|
|
||||||
|
m_optionsWidget = new QWidget(this);
|
||||||
|
|
||||||
|
m_matchCase = new QCheckBox(m_optionsWidget);
|
||||||
|
m_matchCase->setText(QCoreApplication::translate("Core::Internal::FindDialog", "&Case sensitive", nullptr));
|
||||||
|
|
||||||
|
m_wholeWords = new QCheckBox(m_optionsWidget);
|
||||||
|
m_wholeWords->setText(QCoreApplication::translate("Core::Internal::FindDialog", "Whole words o&nly", nullptr));
|
||||||
|
|
||||||
|
m_regExp = new QCheckBox(m_optionsWidget);
|
||||||
|
m_regExp->setText(QCoreApplication::translate("Core::Internal::FindDialog", "Use re&gular expressions", nullptr));
|
||||||
|
|
||||||
|
auto label = new QLabel(this);
|
||||||
|
label->setText(QCoreApplication::translate("Core::Internal::FindDialog", "Sco&pe:", nullptr));
|
||||||
|
label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
|
||||||
|
label->setMinimumSize(QSize(80, 0));
|
||||||
|
label->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter);
|
||||||
|
label->setBuddy(m_filterList);
|
||||||
|
|
||||||
|
m_uiConfigWidget = new QWidget(this);
|
||||||
|
QSizePolicy sizePolicy2(QSizePolicy::Preferred, QSizePolicy::Fixed);
|
||||||
|
sizePolicy2.setHorizontalStretch(0);
|
||||||
|
sizePolicy2.setVerticalStretch(10);
|
||||||
|
m_uiConfigWidget->setSizePolicy(sizePolicy2);
|
||||||
|
m_uiConfigWidget->setMinimumSize(QSize(680, 0));
|
||||||
|
|
||||||
|
setFocusProxy(m_searchTerm);
|
||||||
|
|
||||||
|
using namespace Layouting;
|
||||||
|
|
||||||
|
Row {
|
||||||
|
m_matchCase,
|
||||||
|
m_wholeWords,
|
||||||
|
m_regExp,
|
||||||
|
st,
|
||||||
|
}.attachTo(m_optionsWidget, WithoutMargins);
|
||||||
|
|
||||||
|
Grid {
|
||||||
|
label, m_filterList, br,
|
||||||
|
m_searchLabel, m_searchTerm, br,
|
||||||
|
empty, m_optionsWidget, br,
|
||||||
|
Span(2, m_uiConfigWidget), br,
|
||||||
|
Span(2, Row { st, m_searchButton, m_replaceButton }), br,
|
||||||
|
}.attachTo(this);
|
||||||
|
|
||||||
|
layout()->setSizeConstraint(QLayout::SetFixedSize);
|
||||||
|
|
||||||
|
connect(m_searchButton, &QAbstractButton::clicked, this, &FindToolWindow::search);
|
||||||
|
connect(m_replaceButton, &QAbstractButton::clicked, this, &FindToolWindow::replace);
|
||||||
|
connect(m_matchCase, &QAbstractButton::toggled, Find::instance(), &Find::setCaseSensitive);
|
||||||
|
connect(m_wholeWords, &QAbstractButton::toggled, Find::instance(), &Find::setWholeWord);
|
||||||
|
connect(m_regExp, &QAbstractButton::toggled, Find::instance(), &Find::setRegularExpression);
|
||||||
|
connect(m_filterList, &QComboBox::activated,
|
||||||
this, QOverload<int>::of(&FindToolWindow::setCurrentFilter));
|
this, QOverload<int>::of(&FindToolWindow::setCurrentFilter));
|
||||||
|
|
||||||
m_findCompleter->setModel(Find::findCompletionModel());
|
m_findCompleter->setModel(Find::findCompletionModel());
|
||||||
m_ui.searchTerm->setSpecialCompleter(m_findCompleter);
|
m_searchTerm->setSpecialCompleter(m_findCompleter);
|
||||||
m_ui.searchTerm->installEventFilter(this);
|
m_searchTerm->installEventFilter(this);
|
||||||
connect(m_findCompleter, QOverload<const QModelIndex &>::of(&QCompleter::activated),
|
connect(m_findCompleter, QOverload<const QModelIndex &>::of(&QCompleter::activated),
|
||||||
this, &FindToolWindow::findCompleterActivated);
|
this, &FindToolWindow::findCompleterActivated);
|
||||||
|
|
||||||
m_ui.searchTerm->setValidationFunction(validateRegExp);
|
m_searchTerm->setValidationFunction(validateRegExp);
|
||||||
connect(Find::instance(), &Find::findFlagsChanged,
|
connect(Find::instance(), &Find::findFlagsChanged,
|
||||||
m_ui.searchTerm, &Utils::FancyLineEdit::validate);
|
m_searchTerm, &Utils::FancyLineEdit::validate);
|
||||||
connect(m_ui.searchTerm, &Utils::FancyLineEdit::validChanged,
|
connect(m_searchTerm, &Utils::FancyLineEdit::validChanged,
|
||||||
this, &FindToolWindow::updateButtonStates);
|
this, &FindToolWindow::updateButtonStates);
|
||||||
|
|
||||||
auto layout = new QVBoxLayout;
|
auto layout = new QVBoxLayout;
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
m_ui.configWidget->setLayout(layout);
|
m_uiConfigWidget->setLayout(layout);
|
||||||
updateButtonStates();
|
updateButtonStates();
|
||||||
|
|
||||||
connect(Find::instance(), &Find::findFlagsChanged, this, &FindToolWindow::updateFindFlags);
|
connect(Find::instance(), &Find::findFlagsChanged, this, &FindToolWindow::updateFindFlags);
|
||||||
@@ -96,7 +168,7 @@ bool FindToolWindow::event(QEvent *event)
|
|||||||
if ((ke->key() == Qt::Key_Return || ke->key() == Qt::Key_Enter)
|
if ((ke->key() == Qt::Key_Return || ke->key() == Qt::Key_Enter)
|
||||||
&& (ke->modifiers() == Qt::NoModifier || ke->modifiers() == Qt::KeypadModifier)) {
|
&& (ke->modifiers() == Qt::NoModifier || ke->modifiers() == Qt::KeypadModifier)) {
|
||||||
ke->accept();
|
ke->accept();
|
||||||
if (m_ui.searchButton->isEnabled())
|
if (m_searchButton->isEnabled())
|
||||||
search();
|
search();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -106,10 +178,10 @@ bool FindToolWindow::event(QEvent *event)
|
|||||||
|
|
||||||
bool FindToolWindow::eventFilter(QObject *obj, QEvent *event)
|
bool FindToolWindow::eventFilter(QObject *obj, QEvent *event)
|
||||||
{
|
{
|
||||||
if (obj == m_ui.searchTerm && event->type() == QEvent::KeyPress) {
|
if (obj == m_searchTerm && event->type() == QEvent::KeyPress) {
|
||||||
auto ke = static_cast<QKeyEvent *>(event);
|
auto ke = static_cast<QKeyEvent *>(event);
|
||||||
if (ke->key() == Qt::Key_Down) {
|
if (ke->key() == Qt::Key_Down) {
|
||||||
if (m_ui.searchTerm->text().isEmpty())
|
if (m_searchTerm->text().isEmpty())
|
||||||
m_findCompleter->setCompletionPrefix(QString());
|
m_findCompleter->setCompletionPrefix(QString());
|
||||||
m_findCompleter->complete();
|
m_findCompleter->complete();
|
||||||
}
|
}
|
||||||
@@ -121,34 +193,34 @@ void FindToolWindow::updateButtonStates()
|
|||||||
{
|
{
|
||||||
bool filterEnabled = m_currentFilter && m_currentFilter->isEnabled();
|
bool filterEnabled = m_currentFilter && m_currentFilter->isEnabled();
|
||||||
bool enabled = filterEnabled && (!m_currentFilter->showSearchTermInput()
|
bool enabled = filterEnabled && (!m_currentFilter->showSearchTermInput()
|
||||||
|| m_ui.searchTerm->isValid()) && m_currentFilter->isValid();
|
|| m_searchTerm->isValid()) && m_currentFilter->isValid();
|
||||||
m_ui.searchButton->setEnabled(enabled);
|
m_searchButton->setEnabled(enabled);
|
||||||
m_ui.replaceButton->setEnabled(m_currentFilter
|
m_replaceButton->setEnabled(m_currentFilter
|
||||||
&& m_currentFilter->isReplaceSupported() && enabled);
|
&& m_currentFilter->isReplaceSupported() && enabled);
|
||||||
if (m_configWidget)
|
if (m_configWidget)
|
||||||
m_configWidget->setEnabled(filterEnabled);
|
m_configWidget->setEnabled(filterEnabled);
|
||||||
|
|
||||||
if (m_currentFilter) {
|
if (m_currentFilter) {
|
||||||
m_ui.searchTerm->setVisible(m_currentFilter->showSearchTermInput());
|
m_searchTerm->setVisible(m_currentFilter->showSearchTermInput());
|
||||||
m_ui.searchLabel->setVisible(m_currentFilter->showSearchTermInput());
|
m_searchLabel->setVisible(m_currentFilter->showSearchTermInput());
|
||||||
m_ui.optionsWidget->setVisible(m_currentFilter->supportedFindFlags()
|
m_optionsWidget->setVisible(m_currentFilter->supportedFindFlags()
|
||||||
& (FindCaseSensitively | FindWholeWords | FindRegularExpression));
|
& (FindCaseSensitively | FindWholeWords | FindRegularExpression));
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui.matchCase->setEnabled(filterEnabled
|
m_matchCase->setEnabled(filterEnabled
|
||||||
&& (m_currentFilter->supportedFindFlags() & FindCaseSensitively));
|
&& (m_currentFilter->supportedFindFlags() & FindCaseSensitively));
|
||||||
m_ui.wholeWords->setEnabled(filterEnabled
|
m_wholeWords->setEnabled(filterEnabled
|
||||||
&& (m_currentFilter->supportedFindFlags() & FindWholeWords));
|
&& (m_currentFilter->supportedFindFlags() & FindWholeWords));
|
||||||
m_ui.regExp->setEnabled(filterEnabled
|
m_regExp->setEnabled(filterEnabled
|
||||||
&& (m_currentFilter->supportedFindFlags() & FindRegularExpression));
|
&& (m_currentFilter->supportedFindFlags() & FindRegularExpression));
|
||||||
m_ui.searchTerm->setEnabled(filterEnabled);
|
m_searchTerm->setEnabled(filterEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindToolWindow::updateFindFlags()
|
void FindToolWindow::updateFindFlags()
|
||||||
{
|
{
|
||||||
m_ui.matchCase->setChecked(Find::hasFindFlag(FindCaseSensitively));
|
m_matchCase->setChecked(Find::hasFindFlag(FindCaseSensitively));
|
||||||
m_ui.wholeWords->setChecked(Find::hasFindFlag(FindWholeWords));
|
m_wholeWords->setChecked(Find::hasFindFlag(FindWholeWords));
|
||||||
m_ui.regExp->setChecked(Find::hasFindFlag(FindRegularExpression));
|
m_regExp->setChecked(Find::hasFindFlag(FindRegularExpression));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -159,7 +231,7 @@ void FindToolWindow::setFindFilters(const QList<IFindFilter *> &filters)
|
|||||||
for (IFindFilter *filter : qAsConst(m_filters))
|
for (IFindFilter *filter : qAsConst(m_filters))
|
||||||
filter->disconnect(this);
|
filter->disconnect(this);
|
||||||
m_filters = filters;
|
m_filters = filters;
|
||||||
m_ui.filterList->clear();
|
m_filterList->clear();
|
||||||
QStringList names;
|
QStringList names;
|
||||||
for (IFindFilter *filter : filters) {
|
for (IFindFilter *filter : filters) {
|
||||||
names << filter->displayName();
|
names << filter->displayName();
|
||||||
@@ -167,7 +239,7 @@ void FindToolWindow::setFindFilters(const QList<IFindFilter *> &filters)
|
|||||||
connect(filter, &IFindFilter::displayNameChanged,
|
connect(filter, &IFindFilter::displayNameChanged,
|
||||||
this, [this, filter]() { updateFindFilterName(filter); });
|
this, [this, filter]() { updateFindFilterName(filter); });
|
||||||
}
|
}
|
||||||
m_ui.filterList->addItems(names);
|
m_filterList->addItems(names);
|
||||||
if (m_filters.size() > 0)
|
if (m_filters.size() > 0)
|
||||||
setCurrentFilter(0);
|
setCurrentFilter(0);
|
||||||
}
|
}
|
||||||
@@ -181,12 +253,12 @@ void FindToolWindow::updateFindFilterName(IFindFilter *filter)
|
|||||||
{
|
{
|
||||||
int index = m_filters.indexOf(filter);
|
int index = m_filters.indexOf(filter);
|
||||||
if (QTC_GUARD(index >= 0))
|
if (QTC_GUARD(index >= 0))
|
||||||
m_ui.filterList->setItemText(index, filter->displayName());
|
m_filterList->setItemText(index, filter->displayName());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindToolWindow::setFindText(const QString &text)
|
void FindToolWindow::setFindText(const QString &text)
|
||||||
{
|
{
|
||||||
m_ui.searchTerm->setText(text);
|
m_searchTerm->setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindToolWindow::setCurrentFilter(IFindFilter *filter)
|
void FindToolWindow::setCurrentFilter(IFindFilter *filter)
|
||||||
@@ -197,13 +269,13 @@ void FindToolWindow::setCurrentFilter(IFindFilter *filter)
|
|||||||
if (index >= 0)
|
if (index >= 0)
|
||||||
setCurrentFilter(index);
|
setCurrentFilter(index);
|
||||||
updateFindFlags();
|
updateFindFlags();
|
||||||
m_ui.searchTerm->setFocus();
|
m_searchTerm->setFocus();
|
||||||
m_ui.searchTerm->selectAll();
|
m_searchTerm->selectAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindToolWindow::setCurrentFilter(int index)
|
void FindToolWindow::setCurrentFilter(int index)
|
||||||
{
|
{
|
||||||
m_ui.filterList->setCurrentIndex(index);
|
m_filterList->setCurrentIndex(index);
|
||||||
for (int i = 0; i < m_configWidgets.size(); ++i) {
|
for (int i = 0; i < m_configWidgets.size(); ++i) {
|
||||||
QWidget *configWidget = m_configWidgets.at(i);
|
QWidget *configWidget = m_configWidgets.at(i);
|
||||||
if (i == index) {
|
if (i == index) {
|
||||||
@@ -221,13 +293,13 @@ void FindToolWindow::setCurrentFilter(int index)
|
|||||||
this, &FindToolWindow::updateButtonStates);
|
this, &FindToolWindow::updateButtonStates);
|
||||||
updateButtonStates();
|
updateButtonStates();
|
||||||
if (m_configWidget)
|
if (m_configWidget)
|
||||||
m_ui.configWidget->layout()->addWidget(m_configWidget);
|
m_uiConfigWidget->layout()->addWidget(m_configWidget);
|
||||||
} else {
|
} else {
|
||||||
if (configWidget)
|
if (configWidget)
|
||||||
configWidget->setParent(nullptr);
|
configWidget->setParent(nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
QWidget *w = m_ui.configWidget;
|
QWidget *w = m_uiConfigWidget;
|
||||||
while (w) {
|
while (w) {
|
||||||
auto sa = qobject_cast<QScrollArea *>(w);
|
auto sa = qobject_cast<QScrollArea *>(w);
|
||||||
if (sa) {
|
if (sa) {
|
||||||
@@ -236,7 +308,7 @@ void FindToolWindow::setCurrentFilter(int index)
|
|||||||
}
|
}
|
||||||
w = w->parentWidget();
|
w = w->parentWidget();
|
||||||
}
|
}
|
||||||
for (w = m_configWidget ? m_configWidget : m_ui.configWidget; w; w = w->parentWidget()) {
|
for (w = m_configWidget ? m_configWidget : m_uiConfigWidget; w; w = w->parentWidget()) {
|
||||||
if (w->layout())
|
if (w->layout())
|
||||||
w->layout()->activate();
|
w->layout()->activate();
|
||||||
}
|
}
|
||||||
@@ -246,9 +318,9 @@ void FindToolWindow::acceptAndGetParameters(QString *term, IFindFilter **filter)
|
|||||||
{
|
{
|
||||||
QTC_ASSERT(filter, return);
|
QTC_ASSERT(filter, return);
|
||||||
*filter = nullptr;
|
*filter = nullptr;
|
||||||
Find::updateFindCompletion(m_ui.searchTerm->text(), Find::findFlags());
|
Find::updateFindCompletion(m_searchTerm->text(), Find::findFlags());
|
||||||
int index = m_ui.filterList->currentIndex();
|
int index = m_filterList->currentIndex();
|
||||||
QString searchTerm = m_ui.searchTerm->text();
|
QString searchTerm = m_searchTerm->text();
|
||||||
if (index >= 0)
|
if (index >= 0)
|
||||||
*filter = m_filters.at(index);
|
*filter = m_filters.at(index);
|
||||||
if (term)
|
if (term)
|
||||||
@@ -310,3 +382,5 @@ void FindToolWindow::findCompleterActivated(const QModelIndex &index)
|
|||||||
Find::setRegularExpression(findFlags.testFlag(FindRegularExpression));
|
Find::setRegularExpression(findFlags.testFlag(FindRegularExpression));
|
||||||
Find::setPreserveCase(findFlags.testFlag(FindPreserveCase));
|
Find::setPreserveCase(findFlags.testFlag(FindPreserveCase));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // Core::Internal
|
||||||
|
@@ -3,17 +3,21 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "ui_finddialog.h"
|
|
||||||
#include "findplugin.h"
|
|
||||||
|
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QWidget>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QCompleter)
|
QT_BEGIN_NAMESPACE
|
||||||
|
class QCheckBox;
|
||||||
|
class QComboBox;
|
||||||
|
class QCompleter;
|
||||||
|
class QLabel;
|
||||||
|
class QPushButton;
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
namespace Core {
|
namespace Core { class IFindFilter; }
|
||||||
class IFindFilter;
|
namespace Utils { class FancyLineEdit; }
|
||||||
|
|
||||||
namespace Internal {
|
namespace Core::Internal {
|
||||||
|
|
||||||
class FindToolWindow : public QWidget
|
class FindToolWindow : public QWidget
|
||||||
{
|
{
|
||||||
@@ -47,13 +51,22 @@ private:
|
|||||||
|
|
||||||
void acceptAndGetParameters(QString *term, IFindFilter **filter);
|
void acceptAndGetParameters(QString *term, IFindFilter **filter);
|
||||||
|
|
||||||
Ui::FindDialog m_ui;
|
|
||||||
QList<IFindFilter *> m_filters;
|
QList<IFindFilter *> m_filters;
|
||||||
QCompleter *m_findCompleter;
|
QCompleter *m_findCompleter;
|
||||||
QWidgetList m_configWidgets;
|
QWidgetList m_configWidgets;
|
||||||
IFindFilter *m_currentFilter;
|
IFindFilter *m_currentFilter;
|
||||||
QWidget *m_configWidget;
|
QWidget *m_configWidget;
|
||||||
|
|
||||||
|
QWidget *m_uiConfigWidget;
|
||||||
|
QPushButton *m_searchButton;
|
||||||
|
QPushButton *m_replaceButton;
|
||||||
|
QLabel *m_searchLabel;
|
||||||
|
QComboBox *m_filterList;
|
||||||
|
QWidget *m_optionsWidget;
|
||||||
|
QCheckBox *m_matchCase;
|
||||||
|
QCheckBox *m_wholeWords;
|
||||||
|
QCheckBox *m_regExp;
|
||||||
|
Utils::FancyLineEdit *m_searchTerm;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // Core::Internal
|
||||||
} // namespace Core
|
|
||||||
|
Reference in New Issue
Block a user