diff options
author | Rainer Keller <rainer.keller@nokia.com> | 2011-02-17 10:07:06 +0000 |
---|---|---|
committer | Rainer Keller <rainer.keller@nokia.com> | 2011-02-17 11:13:47 +0000 |
commit | 617e4b23be9ccc26ad484097125a4e3a05012c63 (patch) | |
tree | c87b5535669b5d339057a4d33caba3f15f6c2019 | |
parent | fd2ede6b1a55a36ebc7b0dc937f15e733e621c28 (diff) |
Add button to run arbitrary script
A file dialog is opened to let the user choose a script which may not
reside in the simulator script directory.
-rw-r--r-- | library/components/scriptui.cpp | 37 | ||||
-rw-r--r-- | library/components/scriptui.h | 1 |
2 files changed, 27 insertions, 11 deletions
diff --git a/library/components/scriptui.cpp b/library/components/scriptui.cpp index c998e47..ba5c894 100644 --- a/library/components/scriptui.cpp +++ b/library/components/scriptui.cpp @@ -49,6 +49,7 @@ #include <QtGui/QToolButton> #include <QtGui/QMenu> #include <QtGui/QDesktopServices> +#include <QtGui/QFileDialog> ScriptUi::ScriptUi(ScriptAdapter *adapter, QWidget *parent) : ToolBoxPage(parent) @@ -107,7 +108,7 @@ ScriptUi::ScriptUi(ScriptAdapter *adapter, QWidget *parent) QVBoxLayout *scriptRunnerButtonLayout = new QVBoxLayout(); { - QPushButton *runButton = new QPushButton(tr("Run")); + QPushButton *runButton = new QPushButton(tr("Run Selected Script")); connect(runButton, SIGNAL(clicked()), this, SLOT(runSelectedScript())); scriptRunnerButtonLayout->addWidget(runButton); @@ -121,6 +122,11 @@ ScriptUi::ScriptUi(ScriptAdapter *adapter, QWidget *parent) this, SLOT(editScript())); scriptRunnerButtonLayout->addWidget(editScriptButton); + QPushButton *runCustomScriptButton = new QPushButton(tr("Run Other Script")); + connect(runCustomScriptButton, SIGNAL(clicked()), + this, SLOT(runCustomScript())); + scriptRunnerButtonLayout->addWidget(runCustomScriptButton); + scriptRunnerButtonLayout->addStretch(); } scriptingLayout->addLayout(scriptRunnerButtonLayout, 0, 1); @@ -150,22 +156,31 @@ void ScriptUi::setScriptDirectory(const QString &path) void ScriptUi::runScript(const QString &filePath) { - mAdapter->run(filePath); + if (filePath.endsWith(".gpx")) + generateLocationReplayScript("GPX", filePath); + else if (filePath.endsWith(".nmea")) + generateLocationReplayScript("NMEA", filePath); + else + mAdapter->run(filePath); } void ScriptUi::runSelectedScript() { QModelIndex index = mFileView->currentIndex(); - if (index.isValid() && !mFileModel->isDir(index)) { - QString scriptFilePath = mFileModel->filePath(index); - if (scriptFilePath.endsWith(".gpx")) - generateLocationReplayScript("GPX", scriptFilePath); - else if (scriptFilePath.endsWith(".nmea")) - generateLocationReplayScript("NMEA", scriptFilePath); - else - runScript(scriptFilePath); - } + if (index.isValid() && !mFileModel->isDir(index)) + runScript(mFileModel->filePath(index)); +} + +void ScriptUi::runCustomScript() +{ + QString scriptFilePath; + scriptFilePath = QFileDialog::getOpenFileName( + this, tr("Choose script to execute"), QString(), + tr("All Scriptable Files (*.js *.qs *.gpx *.nmea);;Scripts (*.js *.qs);;GPS Data Files (*.gpx *.nmea)")); + + if(!scriptFilePath.isEmpty()) + runScript(scriptFilePath); } void ScriptUi::abortScript() diff --git a/library/components/scriptui.h b/library/components/scriptui.h index 3a2818d..ba860fa 100644 --- a/library/components/scriptui.h +++ b/library/components/scriptui.h @@ -57,6 +57,7 @@ public: private slots: void runScript(const QString &filePath); void runSelectedScript(); + void runCustomScript(); void abortScript(); void togglePauseScript(); |