forked from qt-creator/qt-creator
TextEditor: Use PathChooser for FindInFiles
Change-Id: I17058cd41eec1cfea41ddbf2cae1a7c70a4e3a10 Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
committed by
Orgad Shaneh
parent
2cba6ed06c
commit
bf22f23066
@@ -196,6 +196,13 @@ QString HistoryCompleter::historyItem() const
|
|||||||
return d->list.at(0);
|
return d->list.at(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool HistoryCompleter::historyExistsFor(const QString &historyKey)
|
||||||
|
{
|
||||||
|
QTC_ASSERT(theSettings, return false);
|
||||||
|
const QString fullKey = QLatin1String("CompleterHistory/") + historyKey;
|
||||||
|
return theSettings->value(fullKey).isValid();
|
||||||
|
}
|
||||||
|
|
||||||
HistoryCompleter::~HistoryCompleter()
|
HistoryCompleter::~HistoryCompleter()
|
||||||
{
|
{
|
||||||
delete d;
|
delete d;
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ public:
|
|||||||
HistoryCompleter(const QString &historyKey, QObject *parent = 0);
|
HistoryCompleter(const QString &historyKey, QObject *parent = 0);
|
||||||
bool removeHistoryItem(int index);
|
bool removeHistoryItem(int index);
|
||||||
QString historyItem() const;
|
QString historyItem() const;
|
||||||
|
static bool historyExistsFor(const QString &historyKey);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
~HistoryCompleter();
|
~HistoryCompleter();
|
||||||
|
|||||||
@@ -714,9 +714,9 @@ void PathChooser::installLineEditVersionToolTip(QLineEdit *le, const QStringList
|
|||||||
ef->setArguments(arguments);
|
ef->setArguments(arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathChooser::setHistoryCompleter(const QString &historyKey)
|
void PathChooser::setHistoryCompleter(const QString &historyKey, bool restoreLastItemFromHistory)
|
||||||
{
|
{
|
||||||
d->m_lineEdit->setHistoryCompleter(historyKey);
|
d->m_lineEdit->setHistoryCompleter(historyKey, restoreLastItemFromHistory);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList PathChooser::commandVersionArguments() const
|
QStringList PathChooser::commandVersionArguments() const
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ public:
|
|||||||
static void installLineEditVersionToolTip(QLineEdit *le, const QStringList &arguments);
|
static void installLineEditVersionToolTip(QLineEdit *le, const QStringList &arguments);
|
||||||
|
|
||||||
// Enable a history completer with a history of entries.
|
// Enable a history completer with a history of entries.
|
||||||
void setHistoryCompleter(const QString &historyKey);
|
void setHistoryCompleter(const QString &historyKey, bool restoreLastItemFromHistory = false);
|
||||||
|
|
||||||
bool isReadOnly() const;
|
bool isReadOnly() const;
|
||||||
void setReadOnly(bool b);
|
void setReadOnly(bool b);
|
||||||
|
|||||||
@@ -27,8 +27,10 @@
|
|||||||
|
|
||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <coreplugin/find/findplugin.h>
|
#include <coreplugin/find/findplugin.h>
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
#include <utils/filesearch.h>
|
#include <utils/filesearch.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
|
#include <utils/historycompleter.h>
|
||||||
#include <utils/pathchooser.h>
|
#include <utils/pathchooser.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
@@ -38,7 +40,6 @@
|
|||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QComboBox>
|
|
||||||
#include <QHBoxLayout>
|
#include <QHBoxLayout>
|
||||||
|
|
||||||
using namespace Core;
|
using namespace Core;
|
||||||
@@ -46,6 +47,7 @@ using namespace TextEditor;
|
|||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
static FindInFiles *m_instance = 0;
|
static FindInFiles *m_instance = 0;
|
||||||
|
static const char HistoryKey[] = "FindInFiles.Directories.History";
|
||||||
|
|
||||||
FindInFiles::FindInFiles()
|
FindInFiles::FindInFiles()
|
||||||
: m_configWidget(0),
|
: m_configWidget(0),
|
||||||
@@ -70,12 +72,6 @@ QString FindInFiles::displayName() const
|
|||||||
return tr("Files in File System");
|
return tr("Files in File System");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindInFiles::findAll(const QString &txt, FindFlags findFlags)
|
|
||||||
{
|
|
||||||
updateComboEntries(m_directory, true);
|
|
||||||
BaseFileFind::findAll(txt, findFlags);
|
|
||||||
}
|
|
||||||
|
|
||||||
FileIterator *FindInFiles::files(const QStringList &nameFilters,
|
FileIterator *FindInFiles::files(const QStringList &nameFilters,
|
||||||
const QVariant &additionalParameters) const
|
const QVariant &additionalParameters) const
|
||||||
{
|
{
|
||||||
@@ -115,20 +111,22 @@ QWidget *FindInFiles::createConfigWidget()
|
|||||||
|
|
||||||
QLabel *dirLabel = new QLabel(tr("Director&y:"));
|
QLabel *dirLabel = new QLabel(tr("Director&y:"));
|
||||||
gridLayout->addWidget(dirLabel, 0, 0, Qt::AlignRight);
|
gridLayout->addWidget(dirLabel, 0, 0, Qt::AlignRight);
|
||||||
m_directory = new QComboBox;
|
m_directory = new PathChooser;
|
||||||
m_directory->setEditable(true);
|
m_directory->setExpectedKind(PathChooser::ExistingDirectory);
|
||||||
m_directory->setMaxCount(30);
|
m_directory->setHistoryCompleter(QLatin1String(HistoryKey),
|
||||||
m_directory->setMinimumContentsLength(10);
|
/*restoreLastItemFromHistory=*/ true);
|
||||||
m_directory->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
|
m_directory->setPromptDialogTitle(tr("Directory to Search"));
|
||||||
m_directory->setInsertPolicy(QComboBox::InsertAtTop);
|
connect(m_directory.data(), &PathChooser::validChanged,
|
||||||
m_directory->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
|
this, &FindInFiles::enabledChanged);
|
||||||
m_directory->setModel(&m_directoryStrings);
|
if (!HistoryCompleter::historyExistsFor(QLatin1String(HistoryKey))) {
|
||||||
syncComboWithSettings(m_directory, m_directorySetting.toUserOutput());
|
auto completer = static_cast<HistoryCompleter *>(m_directory->lineEdit()->completer());
|
||||||
|
const QStringList legacyHistory = Core::ICore::settings()->value(
|
||||||
|
QLatin1String("Find/FindInFiles/directories")).toStringList();
|
||||||
|
for (const QString &dir: legacyHistory)
|
||||||
|
completer->addEntry(dir);
|
||||||
|
}
|
||||||
dirLabel->setBuddy(m_directory);
|
dirLabel->setBuddy(m_directory);
|
||||||
gridLayout->addWidget(m_directory, 0, 1);
|
gridLayout->addWidget(m_directory, 0, 1, 1, 2);
|
||||||
QPushButton *browseButton = new QPushButton(PathChooser::browseButtonLabel());
|
|
||||||
gridLayout->addWidget(browseButton, 0, 2);
|
|
||||||
connect(browseButton, &QAbstractButton::clicked, this, &FindInFiles::openFileBrowser);
|
|
||||||
|
|
||||||
QLabel * const filePatternLabel = new QLabel(tr("Fi&le pattern:"));
|
QLabel * const filePatternLabel = new QLabel(tr("Fi&le pattern:"));
|
||||||
filePatternLabel->setMinimumWidth(80);
|
filePatternLabel->setMinimumWidth(80);
|
||||||
@@ -143,31 +141,15 @@ QWidget *FindInFiles::createConfigWidget()
|
|||||||
return m_configWidget;
|
return m_configWidget;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindInFiles::openFileBrowser()
|
|
||||||
{
|
|
||||||
if (!m_directory)
|
|
||||||
return;
|
|
||||||
QString oldDir = path().toString();
|
|
||||||
if (!QDir(oldDir).exists())
|
|
||||||
oldDir.clear();
|
|
||||||
QString dir = QFileDialog::getExistingDirectory(m_configWidget,
|
|
||||||
tr("Directory to search"), oldDir);
|
|
||||||
if (!dir.isEmpty())
|
|
||||||
m_directory->setEditText(QDir::toNativeSeparators(dir));
|
|
||||||
}
|
|
||||||
|
|
||||||
FileName FindInFiles::path() const
|
FileName FindInFiles::path() const
|
||||||
{
|
{
|
||||||
return FileName::fromUserInput(FileUtils::normalizePathName(m_directory->currentText()));
|
return m_directory->fileName();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindInFiles::writeSettings(QSettings *settings)
|
void FindInFiles::writeSettings(QSettings *settings)
|
||||||
{
|
{
|
||||||
settings->beginGroup(QLatin1String("FindInFiles"));
|
settings->beginGroup(QLatin1String("FindInFiles"));
|
||||||
writeCommonSettings(settings);
|
writeCommonSettings(settings);
|
||||||
settings->setValue(QLatin1String("directories"), m_directoryStrings.stringList());
|
|
||||||
if (m_directory)
|
|
||||||
settings->setValue(QLatin1String("currentDirectory"), path().toString());
|
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,16 +157,12 @@ void FindInFiles::readSettings(QSettings *settings)
|
|||||||
{
|
{
|
||||||
settings->beginGroup(QLatin1String("FindInFiles"));
|
settings->beginGroup(QLatin1String("FindInFiles"));
|
||||||
readCommonSettings(settings, QLatin1String("*.cpp,*.h"));
|
readCommonSettings(settings, QLatin1String("*.cpp,*.h"));
|
||||||
m_directoryStrings.setStringList(settings->value(QLatin1String("directories")).toStringList());
|
|
||||||
m_directorySetting = FileName::fromString(
|
|
||||||
settings->value(QLatin1String("currentDirectory")).toString());
|
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
syncComboWithSettings(m_directory, m_directorySetting.toUserOutput());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindInFiles::setDirectory(const FileName &directory)
|
void FindInFiles::setDirectory(const FileName &directory)
|
||||||
{
|
{
|
||||||
syncComboWithSettings(m_directory, directory.toUserOutput());
|
m_directory->setFileName(directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindInFiles::findOnFileSystem(const QString &path)
|
void FindInFiles::findOnFileSystem(const QString &path)
|
||||||
|
|||||||
@@ -34,7 +34,8 @@
|
|||||||
#include <QStringListModel>
|
#include <QStringListModel>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QLabel)
|
QT_FORWARD_DECLARE_CLASS(QLabel)
|
||||||
QT_FORWARD_DECLARE_CLASS(QComboBox)
|
|
||||||
|
namespace Utils { class PathChooser; }
|
||||||
|
|
||||||
namespace TextEditor {
|
namespace TextEditor {
|
||||||
|
|
||||||
@@ -48,7 +49,6 @@ public:
|
|||||||
|
|
||||||
QString id() const;
|
QString id() const;
|
||||||
QString displayName() const;
|
QString displayName() const;
|
||||||
void findAll(const QString &txt, Core::FindFlags findFlags);
|
|
||||||
QWidget *createConfigWidget();
|
QWidget *createConfigWidget();
|
||||||
void writeSettings(QSettings *settings);
|
void writeSettings(QSettings *settings);
|
||||||
void readSettings(QSettings *settings);
|
void readSettings(QSettings *settings);
|
||||||
@@ -64,14 +64,10 @@ protected:
|
|||||||
QString toolTip() const;
|
QString toolTip() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void openFileBrowser();
|
|
||||||
|
|
||||||
Utils::FileName path() const;
|
Utils::FileName path() const;
|
||||||
|
|
||||||
QStringListModel m_directoryStrings;
|
|
||||||
Utils::FileName m_directorySetting;
|
|
||||||
QPointer<QWidget> m_configWidget;
|
QPointer<QWidget> m_configWidget;
|
||||||
QPointer<QComboBox> m_directory;
|
QPointer<Utils::PathChooser> m_directory;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace TextEditor
|
} // namespace TextEditor
|
||||||
|
|||||||
Reference in New Issue
Block a user