summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/coreplugin/locator/javascriptfilter.cpp109
-rw-r--r--src/plugins/coreplugin/locator/javascriptfilter.h26
2 files changed, 7 insertions, 128 deletions
diff --git a/src/plugins/coreplugin/locator/javascriptfilter.cpp b/src/plugins/coreplugin/locator/javascriptfilter.cpp
index 7511bb9c6f..094d13f1f2 100644
--- a/src/plugins/coreplugin/locator/javascriptfilter.cpp
+++ b/src/plugins/coreplugin/locator/javascriptfilter.cpp
@@ -351,8 +351,7 @@ public:
QTC_DECLARE_CUSTOM_TASK(JavaScriptRequestTask, JavaScriptRequestAdapter);
-namespace Core {
-namespace Internal {
+namespace Core::Internal {
JavaScriptFilter::JavaScriptFilter()
{
@@ -361,15 +360,10 @@ JavaScriptFilter::JavaScriptFilter()
setDescription(Tr::tr("Evaluates arbitrary JavaScript expressions and copies the result."));
setDefaultIncludedByDefault(false);
setDefaultShortcutString("=");
- m_abortTimer.setSingleShot(true);
- m_abortTimer.setInterval(1000);
- connect(&m_abortTimer, &QTimer::timeout, this, [this] {
- m_aborted = true;
- if (m_engine)
- m_engine->setInterrupted(true);
- });
}
+JavaScriptFilter::~JavaScriptFilter() = default;
+
LocatorMatcherTasks JavaScriptFilter::matchers()
{
using namespace Tasking;
@@ -441,101 +435,6 @@ LocatorMatcherTasks JavaScriptFilter::matchers()
return {{root, storage}};
}
-JavaScriptFilter::~JavaScriptFilter() = default;
-
-void JavaScriptFilter::prepareSearch(const QString &entry)
-{
- Q_UNUSED(entry)
-
- if (!m_engine)
- setupEngine();
- m_engine->setInterrupted(false);
- m_aborted = false;
- m_abortTimer.start();
-}
-
-QList<LocatorFilterEntry> JavaScriptFilter::matchesFor(
- QFutureInterface<Core::LocatorFilterEntry> &future, const QString &entry)
-{
- Q_UNUSED(future)
-
- QList<LocatorFilterEntry> entries;
- if (entry.trimmed().isEmpty()) {
- LocatorFilterEntry entry;
- entry.displayName = Tr::tr("Reset Engine");
- entry.acceptor = [this] {
- m_engine.reset();
- return AcceptResult();
- };
- entries.append(entry);
- } else {
- // Note, that evaluate may be interrupted from caller thread.
- // In this case m_aborted is set to true.
- const QString result = m_engine->evaluate(entry).toString();
- if (m_aborted) {
- const QString message = entry + " = " + Tr::tr("Engine aborted after timeout.");
- LocatorFilterEntry entry;
- entry.displayName = message;
- entry.acceptor = [] { return AcceptResult(); };
- entries.append(entry);
- } else {
- const auto acceptor = [](const QString &clipboardContents) {
- return [clipboardContents] {
- QGuiApplication::clipboard()->setText(clipboardContents);
- return AcceptResult();
- };
- };
- const QString expression = entry + " = " + result;
-
- LocatorFilterEntry entry;
- entry.displayName = expression;
- entry.acceptor = [] { return AcceptResult(); };
- entries.append(entry);
-
- LocatorFilterEntry resultEntry;
- resultEntry.displayName = Tr::tr("Copy to clipboard: %1").arg(result);
- resultEntry.acceptor = acceptor(result);
- entries.append(resultEntry);
-
- LocatorFilterEntry expressionEntry;
- expressionEntry.displayName = Tr::tr("Copy to clipboard: %1").arg(expression);
- expressionEntry.acceptor = acceptor(expression);
- entries.append(expressionEntry);
- }
- }
- return entries;
-}
-
-void JavaScriptFilter::setupEngine()
-{
- m_engine.reset(new QJSEngine);
- m_engine->evaluate(
- "function abs(x) { return Math.abs(x); }\n"
- "function acos(x) { return Math.acos(x); }\n"
- "function asin(x) { return Math.asin(x); }\n"
- "function atan(x) { return Math.atan(x); }\n"
- "function atan2(x, y) { return Math.atan2(x, y); }\n"
- "function bin(x) { return '0b' + x.toString(2); }\n"
- "function ceil(x) { return Math.ceil(x); }\n"
- "function cos(x) { return Math.cos(x); }\n"
- "function exp(x) { return Math.exp(x); }\n"
- "function e() { return Math.E; }\n"
- "function floor(x) { return Math.floor(x); }\n"
- "function hex(x) { return '0x' + x.toString(16); }\n"
- "function log(x) { return Math.log(x); }\n"
- "function max() { return Math.max.apply(null, arguments); }\n"
- "function min() { return Math.min.apply(null, arguments); }\n"
- "function oct(x) { return '0' + x.toString(8); }\n"
- "function pi() { return Math.PI; }\n"
- "function pow(x, y) { return Math.pow(x, y); }\n"
- "function random() { return Math.random(); }\n"
- "function round(x) { return Math.round(x); }\n"
- "function sin(x) { return Math.sin(x); }\n"
- "function sqrt(x) { return Math.sqrt(x); }\n"
- "function tan(x) { return Math.tan(x); }\n");
-}
-
-} // namespace Internal
-} // namespace Core
+} // namespace Core::Internal
#include "javascriptfilter.moc"
diff --git a/src/plugins/coreplugin/locator/javascriptfilter.h b/src/plugins/coreplugin/locator/javascriptfilter.h
index e2508c7048..8b7112fd27 100644
--- a/src/plugins/coreplugin/locator/javascriptfilter.h
+++ b/src/plugins/coreplugin/locator/javascriptfilter.h
@@ -5,39 +5,19 @@
#include <coreplugin/locator/ilocatorfilter.h>
-#include <QTimer>
-
-#include <atomic>
-#include <memory>
-
-QT_BEGIN_NAMESPACE
-class QJSEngine;
-QT_END_NAMESPACE
-
class JavaScriptEngine;
-namespace Core {
-namespace Internal {
+namespace Core::Internal {
class JavaScriptFilter : public Core::ILocatorFilter
{
- Q_OBJECT
public:
JavaScriptFilter();
- ~JavaScriptFilter() override;
+ ~JavaScriptFilter();
- void prepareSearch(const QString &entry) override;
- QList<Core::LocatorFilterEntry> matchesFor(QFutureInterface<Core::LocatorFilterEntry> &future,
- const QString &entry) override;
private:
LocatorMatcherTasks matchers() final;
- void setupEngine();
-
- mutable std::unique_ptr<QJSEngine> m_engine;
- QTimer m_abortTimer;
- std::atomic_bool m_aborted = false;
std::unique_ptr<JavaScriptEngine> m_javaScriptEngine;
};
-} // namespace Internal
-} // namespace Core
+} // namespace Core::Internal