aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/lua/luaplugin.cpp
diff options
context:
space:
mode:
authorDavid Schulz <[email protected]>2024-10-15 14:17:02 +0200
committerDavid Schulz <[email protected]>2024-10-15 13:45:25 +0000
commit2bb2dcd4bb83d79f9e1413f154a93d36523ece00 (patch)
tree18750667d9564f0eab5f05f6dc60d978b86075bc /src/plugins/lua/luaplugin.cpp
parent057dcdb555ad670785b7d3ea94a7d8a9c70279ca (diff)
Lua: add toolbar button and action to run script in current editor
Change-Id: Id0f285a89c5c915548b1847cfcf9c3f7bb29f860 Reviewed-by: Marcus Tillmanns <[email protected]>
Diffstat (limited to 'src/plugins/lua/luaplugin.cpp')
-rw-r--r--src/plugins/lua/luaplugin.cpp41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/plugins/lua/luaplugin.cpp b/src/plugins/lua/luaplugin.cpp
index 5eb2a730623..85c227dc0de 100644
--- a/src/plugins/lua/luaplugin.cpp
+++ b/src/plugins/lua/luaplugin.cpp
@@ -15,12 +15,15 @@
#include <extensionsystem/iplugin.h>
#include <extensionsystem/pluginmanager.h>
+#include <texteditor/texteditor.h>
+
#include <utils/algorithm.h>
#include <utils/fileutils.h>
#include <utils/layoutbuilder.h>
#include <utils/macroexpander.h>
#include <utils/qtcprocess.h>
#include <utils/theme/theme.h>
+#include <utils/utilsicons.h>
#include <QDebug>
#include <QKeyEvent>
@@ -29,6 +32,7 @@
#include <QListView>
#include <QPainter>
#include <QMenu>
+#include <QToolBar>
#include <QStringListModel>
#include <QStyledItemDelegate>
@@ -367,6 +371,22 @@ public:
}
scanForScripts();
+
+ connect(
+ EditorManager::instance(),
+ &EditorManager::editorOpened,
+ this,
+ &LuaPlugin::onEditorOpened);
+
+ ActionBuilder(this, Id(ACTION_SCRIPTS_BASE).withSuffix("current"))
+ .setText(Tr::tr("Run current Script"))
+ .addOnTriggered([]() {
+ if (auto textEditor = TextEditor::BaseTextEditor::currentTextEditor()) {
+ const FilePath path = textEditor->document()->filePath();
+ if (path.isChildOf(Core::ICore::userResourcePath("scripts")))
+ runScript(path);
+ }
+ });
}
bool delayedInitialize() final
@@ -424,8 +444,8 @@ public:
ActionBuilder(this, base)
.setText(Tr::tr("%1").arg(script.baseName()))
.setToolTip(Tr::tr("Run script '%1'").arg(script.toUserOutput()))
- .addOnTriggered([this, script]() { runScript(script); });
- connect(menu->addAction(Tr::tr("Run")), &QAction::triggered, this, [this, script]() {
+ .addOnTriggered([script]() { runScript(script); });
+ connect(menu->addAction(Tr::tr("Run")), &QAction::triggered, this, [script]() {
runScript(script);
});
connect(menu->addAction(Tr::tr("Edit")), &QAction::triggered, this, [script]() {
@@ -433,9 +453,22 @@ public:
});
}
}
- }
+ }
+
+ void onEditorOpened(Core::IEditor *editor)
+ {
+ const FilePath path = editor->document()->filePath();
+ if (path.isChildOf(Core::ICore::userResourcePath("scripts"))) {
+ auto textEditor = qobject_cast<TextEditor::BaseTextEditor *>(editor);
+ TextEditor::TextEditorWidget *editorWidget = textEditor->editorWidget();
+ editorWidget->toolBar()
+ ->addAction(Utils::Icons::RUN_SMALL_TOOLBAR.icon(), Tr::tr("Run"), [path]() {
+ runScript(path);
+ });
+ }
+ }
- void runScript(const FilePath &script)
+ static void runScript(const FilePath &script)
{
expected_str<QByteArray> content = script.fileContents();
if (content) {