Skip to content

Commit

Permalink
* Merge pull request #45 from SOPSLab/scripting_gui
Browse files Browse the repository at this point in the history
+ Added a "Run Script" UI element to load and run JS scripts from the front-end
  • Loading branch information
jdaymude committed Sep 16, 2020
2 parents 8c3559c + f746b76 commit 063d0b5
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
3 changes: 3 additions & 0 deletions main/application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
#include "main/application.h"

#include <QDebug>
#include <QDir>
#include <QQmlContext>
#include <QString>
#include <QStringList>
Expand Down Expand Up @@ -86,6 +87,8 @@ Application::Application(int argc, char *argv[])
QMetaObject::invokeMethod(qmlRoot, "log", Q_ARG(QVariant, msg), Q_ARG(QVariant, isError));
}
);
qmlRoot->findChild<QObject*>("runScriptFileDialog")->setProperty("executableDir", QDir::currentPath());
connect(qmlRoot, SIGNAL(runScript(QString)), scriptEngine.get(), SLOT(runScript(QString)));

// Set default step duration.
sim.setStepDuration(0);
Expand Down
32 changes: 32 additions & 0 deletions res/qml/main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import QtQuick 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.0

import VisItem 1.0

Expand All @@ -28,6 +29,8 @@ ApplicationWindow {
signal algSelected(string algName)
signal instantiate(string algName)

signal runScript(string scriptPath)

signal start()
signal stop()
signal step()
Expand Down Expand Up @@ -230,6 +233,35 @@ ApplicationWindow {
}
}

A_Button {
id: runScriptButton
text: "Run Script"
Layout.preferredWidth: parent.width

onClicked: {
runScriptFileDialog.open()
}
}

FileDialog {
id: runScriptFileDialog
objectName: "runScriptFileDialog"
title: "Choose script file"
nameFilters: [ "JavaScript files (*.js)" ]
selectedNameFilter: "JavaScript files (*.js)"

property string executableDir: ""

onAccepted: {
var scriptPath = fileUrl.toString().replace("file:///" + executableDir + "/", "")
runScript(scriptPath)
log("Ran script: " + scriptPath, false)
}
onRejected: {
log("No script selected", true)
}
}

ScrollView {
id: metricView
Layout.preferredWidth: parent.width
Expand Down

0 comments on commit 063d0b5

Please sign in to comment.