forked from qt-creator/qt-creator
Core: Merge Find and Locator into Core plugin
Change-Id: I7053310272235d854c9f409670ff52a10a7add8b Reviewed-by: Christian Kandeler <christian.kandeler@digia.com> Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
#include <coreplugin/progressmanager/futureprogress.h>
|
||||
#include <coreplugin/dialogs/readonlyfilesdialog.h>
|
||||
#include <coreplugin/documentmanager.h>
|
||||
#include <find/ifindsupport.h>
|
||||
#include <coreplugin/find/ifindsupport.h>
|
||||
#include <texteditor/itexteditor.h>
|
||||
#include <texteditor/refactoringchanges.h>
|
||||
#include <utils/stylehelper.h>
|
||||
@@ -56,27 +56,26 @@
|
||||
|
||||
namespace TextEditor {
|
||||
namespace Internal {
|
||||
class BaseFileFindPrivate {
|
||||
|
||||
class BaseFileFindPrivate
|
||||
{
|
||||
public:
|
||||
BaseFileFindPrivate() : m_resultLabel(0), m_filterCombo(0) {}
|
||||
|
||||
QMap<QFutureWatcher<Utils::FileSearchResultList> *, QPointer<Find::SearchResult> > m_watchers;
|
||||
QPointer<Find::IFindSupport> m_currentFindSupport;
|
||||
QMap<QFutureWatcher<Utils::FileSearchResultList> *, QPointer<Core::SearchResult> > m_watchers;
|
||||
QPointer<Core::IFindSupport> m_currentFindSupport;
|
||||
|
||||
QLabel *m_resultLabel;
|
||||
QStringListModel m_filterStrings;
|
||||
QString m_filterSetting;
|
||||
QPointer<QComboBox> m_filterCombo;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace TextEditor
|
||||
|
||||
using namespace Core;
|
||||
using namespace Internal;
|
||||
using namespace Utils;
|
||||
using namespace Find;
|
||||
using namespace TextEditor;
|
||||
using namespace TextEditor::Internal;
|
||||
|
||||
using namespace Core;
|
||||
|
||||
BaseFileFind::BaseFileFind() : d(new BaseFileFindPrivate)
|
||||
{
|
||||
@@ -125,14 +124,14 @@ QStringList BaseFileFind::fileNameFilters() const
|
||||
return filters;
|
||||
}
|
||||
|
||||
void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags,
|
||||
void BaseFileFind::runNewSearch(const QString &txt, Core::FindFlags findFlags,
|
||||
SearchResultWindow::SearchMode searchMode)
|
||||
{
|
||||
d->m_currentFindSupport = 0;
|
||||
if (d->m_filterCombo)
|
||||
updateComboEntries(d->m_filterCombo, true);
|
||||
SearchResult *search = Find::SearchResultWindow::instance()->startNewSearch(label(),
|
||||
toolTip().arg(Find::IFindFilter::descriptionForFindFlags(findFlags)),
|
||||
SearchResult *search = Core::SearchResultWindow::instance()->startNewSearch(label(),
|
||||
toolTip().arg(Core::IFindFilter::descriptionForFindFlags(findFlags)),
|
||||
txt, searchMode, QString::fromLatin1("TextEditor"));
|
||||
search->setTextToReplace(txt);
|
||||
search->setSearchAgainSupported(true);
|
||||
@@ -142,10 +141,10 @@ void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags,
|
||||
parameters.nameFilters = fileNameFilters();
|
||||
parameters.additionalParameters = additionalParameters();
|
||||
search->setUserData(qVariantFromValue(parameters));
|
||||
connect(search, SIGNAL(activated(Find::SearchResultItem)), this, SLOT(openEditor(Find::SearchResultItem)));
|
||||
connect(search, SIGNAL(activated(Core::SearchResultItem)), this, SLOT(openEditor(Core::SearchResultItem)));
|
||||
if (searchMode == SearchResultWindow::SearchAndReplace) {
|
||||
connect(search, SIGNAL(replaceButtonClicked(QString,QList<Find::SearchResultItem>,bool)),
|
||||
this, SLOT(doReplace(QString,QList<Find::SearchResultItem>,bool)));
|
||||
connect(search, SIGNAL(replaceButtonClicked(QString,QList<Core::SearchResultItem>,bool)),
|
||||
this, SLOT(doReplace(QString,QList<Core::SearchResultItem>,bool)));
|
||||
}
|
||||
connect(search, SIGNAL(visibilityChanged(bool)), this, SLOT(hideHighlightAll(bool)));
|
||||
connect(search, SIGNAL(cancelled()), this, SLOT(cancel()));
|
||||
@@ -157,20 +156,20 @@ void BaseFileFind::runNewSearch(const QString &txt, Find::FindFlags findFlags,
|
||||
runSearch(search);
|
||||
}
|
||||
|
||||
void BaseFileFind::runSearch(Find::SearchResult *search)
|
||||
void BaseFileFind::runSearch(Core::SearchResult *search)
|
||||
{
|
||||
FileFindParameters parameters = search->userData().value<FileFindParameters>();
|
||||
CountingLabel *label = new CountingLabel;
|
||||
connect(search, SIGNAL(countChanged(int)), label, SLOT(updateCount(int)));
|
||||
CountingLabel *statusLabel = new CountingLabel;
|
||||
connect(search, SIGNAL(countChanged(int)), statusLabel, SLOT(updateCount(int)));
|
||||
Find::SearchResultWindow::instance()->popup(IOutputPane::Flags(IOutputPane::ModeSwitch|IOutputPane::WithFocus));
|
||||
Core::SearchResultWindow::instance()->popup(IOutputPane::Flags(IOutputPane::ModeSwitch|IOutputPane::WithFocus));
|
||||
QFutureWatcher<FileSearchResultList> *watcher = new QFutureWatcher<FileSearchResultList>();
|
||||
d->m_watchers.insert(watcher, search);
|
||||
watcher->setPendingResultsLimit(1);
|
||||
connect(watcher, SIGNAL(resultReadyAt(int)), this, SLOT(displayResult(int)));
|
||||
connect(watcher, SIGNAL(finished()), this, SLOT(searchFinished()));
|
||||
if (parameters.flags & Find::FindRegularExpression) {
|
||||
if (parameters.flags & FindRegularExpression) {
|
||||
watcher->setFuture(Utils::findInFilesRegExp(parameters.text,
|
||||
files(parameters.nameFilters, parameters.additionalParameters),
|
||||
textDocumentFlagsForFindFlags(parameters.flags),
|
||||
@@ -188,24 +187,24 @@ void BaseFileFind::runSearch(Find::SearchResult *search)
|
||||
connect(progress, SIGNAL(clicked()), search, SLOT(popup()));
|
||||
}
|
||||
|
||||
void BaseFileFind::findAll(const QString &txt, Find::FindFlags findFlags)
|
||||
void BaseFileFind::findAll(const QString &txt, Core::FindFlags findFlags)
|
||||
{
|
||||
runNewSearch(txt, findFlags, SearchResultWindow::SearchOnly);
|
||||
}
|
||||
|
||||
void BaseFileFind::replaceAll(const QString &txt, Find::FindFlags findFlags)
|
||||
void BaseFileFind::replaceAll(const QString &txt, Core::FindFlags findFlags)
|
||||
{
|
||||
runNewSearch(txt, findFlags, SearchResultWindow::SearchAndReplace);
|
||||
}
|
||||
|
||||
void BaseFileFind::doReplace(const QString &text,
|
||||
const QList<Find::SearchResultItem> &items,
|
||||
const QList<Core::SearchResultItem> &items,
|
||||
bool preserveCase)
|
||||
{
|
||||
QStringList files = replaceAll(text, items, preserveCase);
|
||||
if (!files.isEmpty()) {
|
||||
DocumentManager::notifyFilesChangedInternally(files);
|
||||
Find::SearchResultWindow::instance()->hide();
|
||||
Core::SearchResultWindow::instance()->hide();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,9 +218,9 @@ void BaseFileFind::displayResult(int index) {
|
||||
return;
|
||||
}
|
||||
Utils::FileSearchResultList results = watcher->resultAt(index);
|
||||
QList<Find::SearchResultItem> items;
|
||||
QList<Core::SearchResultItem> items;
|
||||
foreach (const Utils::FileSearchResult &result, results) {
|
||||
Find::SearchResultItem item;
|
||||
Core::SearchResultItem item;
|
||||
item.path = QStringList() << QDir::toNativeSeparators(result.fileName);
|
||||
item.lineNumber = result.lineNumber;
|
||||
item.text = result.matchingLine;
|
||||
@@ -231,7 +230,7 @@ void BaseFileFind::displayResult(int index) {
|
||||
item.userData = result.regexpCapturedTexts;
|
||||
items << item;
|
||||
}
|
||||
search->addResults(items, Find::SearchResult::AddOrdered);
|
||||
search->addResults(items, Core::SearchResult::AddOrdered);
|
||||
}
|
||||
|
||||
void BaseFileFind::searchFinished()
|
||||
@@ -304,7 +303,7 @@ void BaseFileFind::updateComboEntries(QComboBox *combo, bool onTop)
|
||||
}
|
||||
}
|
||||
|
||||
void BaseFileFind::openEditor(const Find::SearchResultItem &item)
|
||||
void BaseFileFind::openEditor(const Core::SearchResultItem &item)
|
||||
{
|
||||
SearchResult *result = qobject_cast<SearchResult *>(sender());
|
||||
IEditor *openedEditor = 0;
|
||||
@@ -352,7 +351,7 @@ void BaseFileFind::recheckEnabled()
|
||||
}
|
||||
|
||||
QStringList BaseFileFind::replaceAll(const QString &text,
|
||||
const QList<Find::SearchResultItem> &items,
|
||||
const QList<Core::SearchResultItem> &items,
|
||||
bool preserveCase)
|
||||
{
|
||||
if (items.isEmpty())
|
||||
@@ -360,12 +359,12 @@ QStringList BaseFileFind::replaceAll(const QString &text,
|
||||
|
||||
RefactoringChanges refactoring;
|
||||
|
||||
QHash<QString, QList<Find::SearchResultItem> > changes;
|
||||
foreach (const Find::SearchResultItem &item, items)
|
||||
QHash<QString, QList<Core::SearchResultItem> > changes;
|
||||
foreach (const Core::SearchResultItem &item, items)
|
||||
changes[QDir::fromNativeSeparators(item.path.first())].append(item);
|
||||
|
||||
// Checking for files without write permissions
|
||||
QHashIterator<QString, QList<Find::SearchResultItem> > it(changes);
|
||||
QHashIterator<QString, QList<Core::SearchResultItem> > it(changes);
|
||||
QSet<QString> roFiles;
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
@@ -386,12 +385,12 @@ QStringList BaseFileFind::replaceAll(const QString &text,
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
const QString fileName = it.key();
|
||||
const QList<Find::SearchResultItem> changeItems = it.value();
|
||||
const QList<Core::SearchResultItem> changeItems = it.value();
|
||||
|
||||
ChangeSet changeSet;
|
||||
RefactoringFilePtr file = refactoring.file(fileName);
|
||||
QSet<QPair<int, int> > processed;
|
||||
foreach (const Find::SearchResultItem &item, changeItems) {
|
||||
foreach (const Core::SearchResultItem &item, changeItems) {
|
||||
const QPair<int, int> &p = qMakePair(item.lineNumber, item.textMarkPos);
|
||||
if (processed.contains(p))
|
||||
continue;
|
||||
@@ -441,3 +440,5 @@ void CountingLabel::updateCount(int count)
|
||||
{
|
||||
setText(tr("%1 found").arg(count));
|
||||
}
|
||||
|
||||
} // namespace TextEditor
|
||||
|
||||
Reference in New Issue
Block a user