diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2016-03-16 22:37:24 +0100 |
---|---|---|
committer | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2016-11-16 09:52:05 +0000 |
commit | 6b2cf5cd03073ee8e7b319f68f7dce43c7984622 (patch) | |
tree | a8aec1772eb4fa09881b8858aef47c360ed25518 /src/plugins/texteditor/findinfiles.cpp | |
parent | 4ae07377db1f587b5d49a46c355d46c97a6c59fc (diff) |
FindInFiles: make possible to have more than one extension
This change adds a possibility to add more than
one external tool which can be used instead of internal finder.
Currently there is one extension: 'gitgrep'.
By default we use internal finder.
Change-Id: If644358552f3cea9ebda8308539322a1b6d3ab77
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/texteditor/findinfiles.cpp')
-rw-r--r-- | src/plugins/texteditor/findinfiles.cpp | 61 |
1 files changed, 48 insertions, 13 deletions
diff --git a/src/plugins/texteditor/findinfiles.cpp b/src/plugins/texteditor/findinfiles.cpp index 3fa85c07ed..207172311a 100644 --- a/src/plugins/texteditor/findinfiles.cpp +++ b/src/plugins/texteditor/findinfiles.cpp @@ -41,6 +41,8 @@ #include <QFileDialog> #include <QLabel> #include <QHBoxLayout> +#include <QStackedWidget> +#include <QComboBox> using namespace Core; using namespace TextEditor; @@ -64,7 +66,7 @@ FindInFiles::~FindInFiles() bool FindInFiles::isValid() const { - return m_directory->isValid(); + return m_directory->isValid() && currentSearchEngine()->isEnabled(); } QString FindInFiles::id() const @@ -92,11 +94,8 @@ QVariant FindInFiles::additionalParameters() const QString FindInFiles::label() const { - QString title = tr("Directory"); - if (FileFindExtension *ext = extension()) { - if (ext->isEnabled()) - title = ext->title(); - } + QString title = currentSearchEngine()->title(); + const QChar slash = QLatin1Char('/'); const QStringList &nonEmptyComponents = path().toFileInfo().absoluteFilePath() .split(slash, QString::SkipEmptyParts); @@ -107,10 +106,31 @@ QString FindInFiles::label() const QString FindInFiles::toolTip() const { - //: %3 is filled by BaseFileFind::runNewSearch - return tr("Path: %1\nFilter: %2\n%3") + //: the last arg is filled by BaseFileFind::runNewSearch + QString tooltip = tr("Path: %1\nFilter: %2\n%3") .arg(path().toUserOutput()) .arg(fileNameFilters().join(QLatin1Char(','))); + + const QString searchEngineToolTip = currentSearchEngine()->toolTip(); + if (!searchEngineToolTip.isEmpty()) + tooltip = tooltip.arg(searchEngineToolTip); + + return tooltip; +} + +void FindInFiles::syncSearchEngineCombo(int selectedSearchEngineIndex) +{ + QTC_ASSERT(m_searchEngineCombo && selectedSearchEngineIndex >= 0 + && selectedSearchEngineIndex < searchEngines().size(), return); + + m_searchEngineCombo->setCurrentIndex(selectedSearchEngineIndex); + searchEnginesSelectionChanged(selectedSearchEngineIndex); +} + +void FindInFiles::searchEnginesSelectionChanged(int index) +{ + setCurrentSearchEngine(index); + m_searchEngineWidget->setCurrentIndex(index); } QWidget *FindInFiles::createConfigWidget() @@ -122,8 +142,22 @@ QWidget *FindInFiles::createConfigWidget() m_configWidget->setLayout(gridLayout); int row = 0; - if (FileFindExtension *ext = extension()) - gridLayout->addWidget(ext->widget(), row++, 1, 1, 2); + auto searchEngineLabel = new QLabel(tr("Search engine:")); + gridLayout->addWidget(searchEngineLabel, row, 0, Qt::AlignRight); + + m_searchEngineCombo = new QComboBox; + auto cc = static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged); + connect(m_searchEngineCombo, cc, this, &FindInFiles::searchEnginesSelectionChanged); + connect(m_searchEngineCombo, cc, this, &FindInFiles::enabledChanged); + searchEngineLabel->setBuddy(m_searchEngineCombo); + gridLayout->addWidget(m_searchEngineCombo, row, 1); + + m_searchEngineWidget = new QStackedWidget(m_configWidget); + foreach (SearchEngine *searchEngine, searchEngines()) { + m_searchEngineWidget->addWidget(searchEngine->widget()); + m_searchEngineCombo->addItem(searchEngine->title()); + } + gridLayout->addWidget(m_searchEngineWidget, row++, 2); QLabel *dirLabel = new QLabel(tr("Director&y:")); gridLayout->addWidget(dirLabel, row, 0, Qt::AlignRight); @@ -131,9 +165,10 @@ QWidget *FindInFiles::createConfigWidget() m_directory->setExpectedKind(PathChooser::ExistingDirectory); m_directory->setPromptDialogTitle(tr("Directory to Search")); connect(m_directory.data(), &PathChooser::pathChanged, - this, &FindInFiles::pathChanged); - connect(m_directory.data(), &PathChooser::validChanged, - this, &FindInFiles::enabledChanged); + this, [this](const QString &path) { + emit FindInFiles::pathChanged(path); + emit FindInFiles::enabledChanged(isEnabled()); + }); m_directory->setHistoryCompleter(QLatin1String(HistoryKey), /*restoreLastItemFromHistory=*/ true); if (!HistoryCompleter::historyExistsFor(QLatin1String(HistoryKey))) { |