forked from qt-creator/qt-creator
LocatorMatcher: Introduce MatcherType enum
Use it for registering/getting different kinds of matchers. Change-Id: I6f944e0332bf8c512892a00b8ba88f9939f34682 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -214,11 +214,11 @@ ClangModelManagerSupport::ClangModelManagerSupport()
|
|||||||
matchers << creator(client, 10000);
|
matchers << creator(client, 10000);
|
||||||
return matchers;
|
return matchers;
|
||||||
};
|
};
|
||||||
LocatorMatcher::addLocatorMatcherCreator(
|
LocatorMatcher::addMatcherCreator(MatcherType::AllSymbols,
|
||||||
[matcherCreator] { return matcherCreator(&LanguageClient::workspaceLocatorMatcher); });
|
[matcherCreator] { return matcherCreator(&LanguageClient::workspaceAllSymbolsMatcher); });
|
||||||
LocatorMatcher::addClassMatcherCreator(
|
LocatorMatcher::addMatcherCreator(MatcherType::Classes,
|
||||||
[matcherCreator] { return matcherCreator(&LanguageClient::workspaceClassMatcher); });
|
[matcherCreator] { return matcherCreator(&LanguageClient::workspaceClassMatcher); });
|
||||||
LocatorMatcher::addFunctionMatcherCreator(
|
LocatorMatcher::addMatcherCreator(MatcherType::Functions,
|
||||||
[matcherCreator] { return matcherCreator(&LanguageClient::workspaceFunctionMatcher); });
|
[matcherCreator] { return matcherCreator(&LanguageClient::workspaceFunctionMatcher); });
|
||||||
|
|
||||||
EditorManager *editorManager = EditorManager::instance();
|
EditorManager *editorManager = EditorManager::instance();
|
||||||
|
@@ -427,51 +427,23 @@ LocatorMatcherTask::OutputData LocatorMatcher::runBlocking(const QList<LocatorMa
|
|||||||
return tree.outputData();
|
return tree.outputData();
|
||||||
}
|
}
|
||||||
|
|
||||||
static QList<LocatorMatcherTaskCreator> s_locatorMatcherCreators = {};
|
static QHash<MatcherType, QList<LocatorMatcherTaskCreator>> s_matcherCreators = {};
|
||||||
static QList<LocatorMatcherTaskCreator> s_classMatcherCreators = {};
|
|
||||||
static QList<LocatorMatcherTaskCreator> s_functionMatcherCreators = {};
|
|
||||||
|
|
||||||
void LocatorMatcher::addLocatorMatcherCreator(const LocatorMatcherTaskCreator &creator)
|
void LocatorMatcher::addMatcherCreator(MatcherType type, const LocatorMatcherTaskCreator &creator)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(creator, return);
|
QTC_ASSERT(creator, return);
|
||||||
s_locatorMatcherCreators.append(creator);
|
s_matcherCreators[type].append(creator);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocatorMatcher::addClassMatcherCreator(const LocatorMatcherTaskCreator &creator)
|
QList<LocatorMatcherTask> LocatorMatcher::matchers(MatcherType type)
|
||||||
{
|
|
||||||
QTC_ASSERT(creator, return);
|
|
||||||
s_classMatcherCreators.append(creator);
|
|
||||||
}
|
|
||||||
|
|
||||||
void LocatorMatcher::addFunctionMatcherCreator(const LocatorMatcherTaskCreator &creator)
|
|
||||||
{
|
|
||||||
QTC_ASSERT(creator, return);
|
|
||||||
s_functionMatcherCreators.append(creator);
|
|
||||||
}
|
|
||||||
|
|
||||||
static QList<LocatorMatcherTask> matchers(const QList<LocatorMatcherTaskCreator> &creators)
|
|
||||||
{
|
{
|
||||||
|
const QList<LocatorMatcherTaskCreator> creators = s_matcherCreators.value(type);
|
||||||
QList<LocatorMatcherTask> result;
|
QList<LocatorMatcherTask> result;
|
||||||
for (const LocatorMatcherTaskCreator &creator : creators)
|
for (const LocatorMatcherTaskCreator &creator : creators)
|
||||||
result << creator();
|
result << creator();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<LocatorMatcherTask> LocatorMatcher::locatorMatchers()
|
|
||||||
{
|
|
||||||
return matchers(s_locatorMatcherCreators);
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<LocatorMatcherTask> LocatorMatcher::classMatchers()
|
|
||||||
{
|
|
||||||
return matchers(s_classMatcherCreators);
|
|
||||||
}
|
|
||||||
|
|
||||||
QList<LocatorMatcherTask> LocatorMatcher::functionMatchers()
|
|
||||||
{
|
|
||||||
return matchers(s_functionMatcherCreators);
|
|
||||||
}
|
|
||||||
|
|
||||||
static QList<ILocatorFilter *> g_locatorFilters;
|
static QList<ILocatorFilter *> g_locatorFilters;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@@ -145,6 +145,12 @@ public:
|
|||||||
using LocatorMatcherTaskCreator = std::function<QList<LocatorMatcherTask>()>;
|
using LocatorMatcherTaskCreator = std::function<QList<LocatorMatcherTask>()>;
|
||||||
class LocatorMatcherPrivate;
|
class LocatorMatcherPrivate;
|
||||||
|
|
||||||
|
enum class MatcherType {
|
||||||
|
AllSymbols,
|
||||||
|
Classes,
|
||||||
|
Functions
|
||||||
|
};
|
||||||
|
|
||||||
class CORE_EXPORT LocatorMatcher final : public QObject
|
class CORE_EXPORT LocatorMatcher final : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -167,13 +173,8 @@ public:
|
|||||||
const LocatorMatcherTask::InputData &input,
|
const LocatorMatcherTask::InputData &input,
|
||||||
int parallelLimit = 0);
|
int parallelLimit = 0);
|
||||||
|
|
||||||
static void addLocatorMatcherCreator(const LocatorMatcherTaskCreator &creator);
|
static void addMatcherCreator(MatcherType type, const LocatorMatcherTaskCreator &creator);
|
||||||
static void addClassMatcherCreator(const LocatorMatcherTaskCreator &creator);
|
static QList<LocatorMatcherTask> matchers(MatcherType type);
|
||||||
static void addFunctionMatcherCreator(const LocatorMatcherTaskCreator &creator);
|
|
||||||
|
|
||||||
static QList<LocatorMatcherTask> locatorMatchers();
|
|
||||||
static QList<LocatorMatcherTask> classMatchers();
|
|
||||||
static QList<LocatorMatcherTask> functionMatchers();
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void serialOutputDataReady(const LocatorMatcherTask::OutputData &serialOutputData);
|
void serialOutputDataReady(const LocatorMatcherTask::OutputData &serialOutputData);
|
||||||
|
@@ -110,7 +110,7 @@ LocatorMatcherTask locatorMatcher(IndexItem::ItemType type, const EntryFromIndex
|
|||||||
return {Async<LocatorMatcherTask::OutputData>(onSetup, onDone, onDone), storage};
|
return {Async<LocatorMatcherTask::OutputData>(onSetup, onDone, onDone), storage};
|
||||||
}
|
}
|
||||||
|
|
||||||
LocatorMatcherTask cppLocatorMatcher()
|
LocatorMatcherTask cppAllSymbolsMatcher()
|
||||||
{
|
{
|
||||||
const auto converter = [](const IndexItem::Ptr &info) {
|
const auto converter = [](const IndexItem::Ptr &info) {
|
||||||
// TODO: Passing nullptr for filter -> accept won't work now. Replace with accept function.
|
// TODO: Passing nullptr for filter -> accept won't work now. Replace with accept function.
|
||||||
|
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
namespace CppEditor {
|
namespace CppEditor {
|
||||||
|
|
||||||
Core::LocatorMatcherTask CPPEDITOR_EXPORT cppLocatorMatcher();
|
Core::LocatorMatcherTask CPPEDITOR_EXPORT cppAllSymbolsMatcher();
|
||||||
Core::LocatorMatcherTask CPPEDITOR_EXPORT cppClassMatcher();
|
Core::LocatorMatcherTask CPPEDITOR_EXPORT cppClassMatcher();
|
||||||
Core::LocatorMatcherTask CPPEDITOR_EXPORT cppFunctionMatcher();
|
Core::LocatorMatcherTask CPPEDITOR_EXPORT cppFunctionMatcher();
|
||||||
|
|
||||||
|
@@ -127,7 +127,7 @@ void LocatorFilterTest::testLocatorFilter()
|
|||||||
{
|
{
|
||||||
QFETCH(QString, testFile);
|
QFETCH(QString, testFile);
|
||||||
QFETCH(ILocatorFilter *, filter);
|
QFETCH(ILocatorFilter *, filter);
|
||||||
QFETCH(MatcherCreator, matcherCreator);
|
QFETCH(MatcherType, matcherType);
|
||||||
QFETCH(QString, searchText);
|
QFETCH(QString, searchText);
|
||||||
QFETCH(ResultDataList, expectedResults);
|
QFETCH(ResultDataList, expectedResults);
|
||||||
|
|
||||||
@@ -138,7 +138,8 @@ void LocatorFilterTest::testLocatorFilter()
|
|||||||
|
|
||||||
{
|
{
|
||||||
Tests::VerifyCleanCppModelManager verify;
|
Tests::VerifyCleanCppModelManager verify;
|
||||||
CppLocatorFilterTestCase(nullptr, matcherCreator(), testFile, searchText, expectedResults);
|
CppLocatorFilterTestCase(nullptr, LocatorMatcher::matchers(matcherType), testFile,
|
||||||
|
searchText, expectedResults);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,7 +147,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
{
|
{
|
||||||
QTest::addColumn<QString>("testFile");
|
QTest::addColumn<QString>("testFile");
|
||||||
QTest::addColumn<ILocatorFilter *>("filter");
|
QTest::addColumn<ILocatorFilter *>("filter");
|
||||||
QTest::addColumn<MatcherCreator>("matcherCreator");
|
QTest::addColumn<MatcherType>("matcherType");
|
||||||
QTest::addColumn<QString>("searchText");
|
QTest::addColumn<QString>("searchText");
|
||||||
QTest::addColumn<ResultDataList>("expectedResults");
|
QTest::addColumn<ResultDataList>("expectedResults");
|
||||||
|
|
||||||
@@ -155,10 +156,6 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
ILocatorFilter *cppClassesFilter = cppModelManager->classesFilter();
|
ILocatorFilter *cppClassesFilter = cppModelManager->classesFilter();
|
||||||
ILocatorFilter *cppLocatorFilter = cppModelManager->locatorFilter();
|
ILocatorFilter *cppLocatorFilter = cppModelManager->locatorFilter();
|
||||||
|
|
||||||
const MatcherCreator functionMatcherCreator = &LocatorMatcher::functionMatchers;
|
|
||||||
const MatcherCreator classMatcherCreator = &LocatorMatcher::classMatchers;
|
|
||||||
const MatcherCreator locatorMatcherCreator = &LocatorMatcher::locatorMatchers;
|
|
||||||
|
|
||||||
MyTestDataDir testDirectory("testdata_basic");
|
MyTestDataDir testDirectory("testdata_basic");
|
||||||
QString testFile = testDirectory.file("file1.cpp");
|
QString testFile = testDirectory.file("file1.cpp");
|
||||||
testFile[0] = testFile[0].toLower(); // Ensure Windows path sorts after scope names.
|
testFile[0] = testFile[0].toLower(); // Ensure Windows path sorts after scope names.
|
||||||
@@ -169,7 +166,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter")
|
QTest::newRow("CppFunctionsFilter")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
<< functionMatcherCreator
|
<< MatcherType::Functions
|
||||||
<< "function"
|
<< "function"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("functionDefinedInClass(bool, int)",
|
ResultData("functionDefinedInClass(bool, int)",
|
||||||
@@ -192,7 +189,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-Sorting")
|
QTest::newRow("CppFunctionsFilter-Sorting")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
<< functionMatcherCreator
|
<< MatcherType::Functions
|
||||||
<< "pos"
|
<< "pos"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("positiveNumber()", testFileShort),
|
ResultData("positiveNumber()", testFileShort),
|
||||||
@@ -204,7 +201,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-arguments")
|
QTest::newRow("CppFunctionsFilter-arguments")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
<< functionMatcherCreator
|
<< MatcherType::Functions
|
||||||
<< "function*bool"
|
<< "function*bool"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("functionDefinedInClass(bool, int)",
|
ResultData("functionDefinedInClass(bool, int)",
|
||||||
@@ -221,7 +218,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-WithNamespacePrefix")
|
QTest::newRow("CppFunctionsFilter-WithNamespacePrefix")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
<< functionMatcherCreator
|
<< MatcherType::Functions
|
||||||
<< "mynamespace::"
|
<< "mynamespace::"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass()", "MyNamespace::MyClass (file1.cpp)"),
|
ResultData("MyClass()", "MyNamespace::MyClass (file1.cpp)"),
|
||||||
@@ -237,7 +234,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-WithClassPrefix")
|
QTest::newRow("CppFunctionsFilter-WithClassPrefix")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
<< functionMatcherCreator
|
<< MatcherType::Functions
|
||||||
<< "MyClass::func"
|
<< "MyClass::func"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("functionDefinedInClass(bool, int)",
|
ResultData("functionDefinedInClass(bool, int)",
|
||||||
@@ -259,7 +256,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppClassesFilter")
|
QTest::newRow("CppClassesFilter")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppClassesFilter
|
<< cppClassesFilter
|
||||||
<< classMatcherCreator
|
<< MatcherType::Classes
|
||||||
<< "myclass"
|
<< "myclass"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", "<anonymous namespace>"),
|
ResultData("MyClass", "<anonymous namespace>"),
|
||||||
@@ -270,7 +267,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppClassesFilter-WithNamespacePrefix")
|
QTest::newRow("CppClassesFilter-WithNamespacePrefix")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppClassesFilter
|
<< cppClassesFilter
|
||||||
<< classMatcherCreator
|
<< MatcherType::Classes
|
||||||
<< "mynamespace::"
|
<< "mynamespace::"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", "MyNamespace")
|
ResultData("MyClass", "MyNamespace")
|
||||||
@@ -280,7 +277,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppLocatorFilter-filtered")
|
QTest::newRow("CppLocatorFilter-filtered")
|
||||||
<< testFile
|
<< testFile
|
||||||
<< cppLocatorFilter
|
<< cppLocatorFilter
|
||||||
<< locatorMatcherCreator
|
<< MatcherType::AllSymbols
|
||||||
<< "my"
|
<< "my"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", testFileShort),
|
ResultData("MyClass", testFileShort),
|
||||||
@@ -307,7 +304,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppClassesFilter-ObjC")
|
QTest::newRow("CppClassesFilter-ObjC")
|
||||||
<< objTestFile
|
<< objTestFile
|
||||||
<< cppClassesFilter
|
<< cppClassesFilter
|
||||||
<< classMatcherCreator
|
<< MatcherType::Classes
|
||||||
<< "M"
|
<< "M"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("MyClass", objTestFileShort),
|
ResultData("MyClass", objTestFileShort),
|
||||||
@@ -319,7 +316,7 @@ void LocatorFilterTest::testLocatorFilter_data()
|
|||||||
QTest::newRow("CppFunctionsFilter-ObjC")
|
QTest::newRow("CppFunctionsFilter-ObjC")
|
||||||
<< objTestFile
|
<< objTestFile
|
||||||
<< cppFunctionsFilter
|
<< cppFunctionsFilter
|
||||||
<< functionMatcherCreator
|
<< MatcherType::Functions
|
||||||
<< "M"
|
<< "M"
|
||||||
<< ResultDataList{
|
<< ResultDataList{
|
||||||
ResultData("anotherMethod", "MyClass (file1.mm)"),
|
ResultData("anotherMethod", "MyClass (file1.mm)"),
|
||||||
@@ -428,8 +425,8 @@ void LocatorFilterTest::testFunctionsFilterHighlighting()
|
|||||||
|
|
||||||
{
|
{
|
||||||
Tests::VerifyCleanCppModelManager verify;
|
Tests::VerifyCleanCppModelManager verify;
|
||||||
const MatcherCreator matcherCreator = &LocatorMatcher::functionMatchers;
|
CppLocatorFilterTestCase(nullptr, LocatorMatcher::matchers(MatcherType::Functions),
|
||||||
CppLocatorFilterTestCase(nullptr, matcherCreator(), testFile, searchText, expectedResults);
|
testFile, searchText, expectedResults);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -535,7 +535,7 @@ void CppModelManager::findUnusedFunctions(const FilePath &folder)
|
|||||||
|
|
||||||
// Step 1: Employ locator to find all functions
|
// Step 1: Employ locator to find all functions
|
||||||
LocatorMatcher *matcher = new LocatorMatcher;
|
LocatorMatcher *matcher = new LocatorMatcher;
|
||||||
matcher->setTasks(LocatorMatcher::functionMatchers());
|
matcher->setTasks(LocatorMatcher::matchers(MatcherType::Functions));
|
||||||
const QPointer<SearchResult> search
|
const QPointer<SearchResult> search
|
||||||
= SearchResultWindow::instance()->startNewSearch(Tr::tr("Find Unused Functions"),
|
= SearchResultWindow::instance()->startNewSearch(Tr::tr("Find Unused Functions"),
|
||||||
{},
|
{},
|
||||||
@@ -897,9 +897,12 @@ void CppModelManager::initCppTools()
|
|||||||
setSymbolsFindFilter(std::make_unique<SymbolsFindFilter>(this));
|
setSymbolsFindFilter(std::make_unique<SymbolsFindFilter>(this));
|
||||||
setCurrentDocumentFilter(std::make_unique<CppCurrentDocumentFilter>());
|
setCurrentDocumentFilter(std::make_unique<CppCurrentDocumentFilter>());
|
||||||
// Setup matchers
|
// Setup matchers
|
||||||
LocatorMatcher::addLocatorMatcherCreator([] { return QList{CppEditor::cppLocatorMatcher()}; });
|
LocatorMatcher::addMatcherCreator(MatcherType::AllSymbols,
|
||||||
LocatorMatcher::addClassMatcherCreator([] { return QList{CppEditor::cppClassMatcher()}; });
|
[] { return QList{CppEditor::cppAllSymbolsMatcher()}; });
|
||||||
LocatorMatcher::addFunctionMatcherCreator([] { return QList{CppEditor::cppFunctionMatcher()}; });
|
LocatorMatcher::addMatcherCreator(MatcherType::Classes,
|
||||||
|
[] { return QList{CppEditor::cppClassMatcher()}; });
|
||||||
|
LocatorMatcher::addMatcherCreator(MatcherType::Functions,
|
||||||
|
[] { return QList{CppEditor::cppFunctionMatcher()}; });
|
||||||
}
|
}
|
||||||
|
|
||||||
CppModelManager::CppModelManager()
|
CppModelManager::CppModelManager()
|
||||||
|
@@ -94,7 +94,7 @@ LocatorMatcherTask locatorMatcher(Client *client, int maxResultCount,
|
|||||||
return {root, storage};
|
return {root, storage};
|
||||||
}
|
}
|
||||||
|
|
||||||
LocatorMatcherTask workspaceLocatorMatcher(Client *client, int maxResultCount)
|
LocatorMatcherTask workspaceAllSymbolsMatcher(Client *client, int maxResultCount)
|
||||||
{
|
{
|
||||||
return locatorMatcher(client, maxResultCount, {});
|
return locatorMatcher(client, maxResultCount, {});
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,7 @@ namespace Core { class IEditor; }
|
|||||||
namespace LanguageClient {
|
namespace LanguageClient {
|
||||||
|
|
||||||
// TODO: Could be public methods of Client instead
|
// TODO: Could be public methods of Client instead
|
||||||
Core::LocatorMatcherTask LANGUAGECLIENT_EXPORT workspaceLocatorMatcher(Client *client,
|
Core::LocatorMatcherTask LANGUAGECLIENT_EXPORT workspaceAllSymbolsMatcher(Client *client,
|
||||||
int maxResultCount = 0);
|
int maxResultCount = 0);
|
||||||
Core::LocatorMatcherTask LANGUAGECLIENT_EXPORT workspaceClassMatcher(Client *client,
|
Core::LocatorMatcherTask LANGUAGECLIENT_EXPORT workspaceClassMatcher(Client *client,
|
||||||
int maxResultCount = 0);
|
int maxResultCount = 0);
|
||||||
|
@@ -647,7 +647,7 @@ void LineEditField::setupCompletion(FancyLineEdit *lineEdit)
|
|||||||
lineEdit->setSpecialCompleter(new QCompleter(completionList, lineEdit));
|
lineEdit->setSpecialCompleter(new QCompleter(completionList, lineEdit));
|
||||||
};
|
};
|
||||||
LocatorMatcher *matcher = new LocatorMatcher;
|
LocatorMatcher *matcher = new LocatorMatcher;
|
||||||
matcher->setTasks(LocatorMatcher::classMatchers());
|
matcher->setTasks(LocatorMatcher::matchers(MatcherType::Classes));
|
||||||
QObject::connect(matcher, &LocatorMatcher::serialOutputDataReady, lineEdit, handleResults);
|
QObject::connect(matcher, &LocatorMatcher::serialOutputDataReady, lineEdit, handleResults);
|
||||||
QObject::connect(matcher, &LocatorMatcher::done, matcher, &QObject::deleteLater);
|
QObject::connect(matcher, &LocatorMatcher::done, matcher, &QObject::deleteLater);
|
||||||
matcher->start();
|
matcher->start();
|
||||||
|
Reference in New Issue
Block a user