Various changes to support use and loading of multiple scripts in the

scripting system.
This commit is contained in:
Collin Kidder
2017-08-31 20:33:27 -04:00
parent 290af20e62
commit 4b61ea2c00
5 changed files with 108 additions and 48 deletions
+35 -5
View File
@@ -32,9 +32,11 @@ ScriptingWindow::ScriptingWindow(const QVector<CANFrame> *frames, QWidget *paren
connect(ui->btnRevertScript, &QAbstractButton::pressed, this, &ScriptingWindow::revertScript);
connect(ui->btnSaveScript, &QAbstractButton::pressed, this, &ScriptingWindow::saveScript);
connect(ui->btnClearLog, &QAbstractButton::pressed, this, &ScriptingWindow::clickedLogClear);
connect(ui->listLoadedScripts, &QListWidget::currentRowChanged, this, &ScriptingWindow::changeCurrentScript);
connect(CANConManager::getInstance(), &CANConManager::framesReceived, this, &ScriptingWindow::newFrames);
elapsedTime.start();
}
ScriptingWindow::~ScriptingWindow()
@@ -91,6 +93,19 @@ void ScriptingWindow::showEvent(QShowEvent* event)
QDialog::showEvent(event);
}
void ScriptingWindow::changeCurrentScript()
{
int sel = ui->listLoadedScripts->currentRow();
if (sel < 0) return;
if (currentScript) currentScript->scriptText = editor->toPlainText();
ScriptContainer *container = scripts.at(sel);
currentScript = container;
editor->setPlainText(container->scriptText);
editor->setEnabled(true);
}
void ScriptingWindow::loadNewScript()
{
QString filename;
@@ -124,12 +139,12 @@ void ScriptingWindow::loadNewScript()
container->fileName = justFileName;
container->filePath = filename;
container->scriptText = contents;
container->setLogWidget(ui->listLog);
container->setScriptWindow(this);
container->compileScript();
scripts.append(container);
currentScript = container;
editor->setPlainText(container->scriptText);
editor->setEnabled(true);
ui->listLoadedScripts->setCurrentRow(ui->listLoadedScripts->count() - 1);
changeCurrentScript();
}
}
}
@@ -144,7 +159,7 @@ void ScriptingWindow::createNewScript()
container->fileName = "UNNAMED_" + QString::number((qrand() % 10000)) + ".js";
container->filePath = QString();
container->scriptText = QString();
container->setLogWidget(ui->listLog);
container->setScriptWindow(this);
scripts.append(container);
ui->listLoadedScripts->addItem(container->fileName);
currentScript = container;
@@ -209,4 +224,19 @@ void ScriptingWindow::recompileScript()
void ScriptingWindow::clickedLogClear()
{
ui->listLog->clear();
elapsedTime.start();
}
void ScriptingWindow::log(QString text)
{
ScriptContainer *cont = qobject_cast<ScriptContainer*>(sender());
if (cont != NULL)
ui->listLog->addItem(QString::number(elapsedTime.elapsed()) + "(" + cont->fileName + "): " + text);
else
ui->listLog->addItem(QString::number(elapsedTime.elapsed()) + ": " + text);
if (ui->cbAutoScroll->isChecked())
{
ui->listLog->scrollToBottom();
}
}