diff --git a/interface/src/ui/ScriptEditorWidget.cpp b/interface/src/ui/ScriptEditorWidget.cpp index 76327804b6..0ae13f9c24 100644 --- a/interface/src/ui/ScriptEditorWidget.cpp +++ b/interface/src/ui/ScriptEditorWidget.cpp @@ -52,10 +52,16 @@ ScriptEditorWidget::ScriptEditorWidget() : // We create a new ScriptHighligting QObject and provide it with a parent so this is NOT a memory leak. new ScriptHighlighting(_scriptEditorWidgetUI->scriptEdit->document()); QTimer::singleShot(0, _scriptEditorWidgetUI->scriptEdit, SLOT(setFocus())); + + _console = new JSConsole(this); + _console->setFixedHeight(CONSOLE_HEIGHT); + _scriptEditorWidgetUI->verticalLayout->addWidget(_console); + connect(_scriptEditorWidgetUI->clearButton, &QPushButton::clicked, _console, &JSConsole::clear); } ScriptEditorWidget::~ScriptEditorWidget() { delete _scriptEditorWidgetUI; + delete _console; } void ScriptEditorWidget::onScriptModified() { @@ -68,6 +74,7 @@ void ScriptEditorWidget::onScriptModified() { void ScriptEditorWidget::onScriptFinished(const QString& scriptPath) { _scriptEngine = NULL; + _console->setScriptEngine(NULL); if (_isRestarting) { _isRestarting = false; setRunning(true); @@ -89,8 +96,6 @@ bool ScriptEditorWidget::setRunning(bool run) { if (_scriptEngine != NULL) { disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); - disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError); - disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint); disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); } @@ -100,15 +105,15 @@ bool ScriptEditorWidget::setRunning(bool run) { // Reload script so that an out of date copy is not retrieved from the cache _scriptEngine = qApp->loadScript(scriptURLString, true, true, false, true); connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); - connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError); - connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint); connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); } else { connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); - qApp->stopScript(_currentScript); + const QString& scriptURLString = QUrl(_currentScript).toString(); + qApp->stopScript(scriptURLString); _scriptEngine = NULL; } + _console->setScriptEngine(_scriptEngine); return true; } @@ -147,8 +152,6 @@ void ScriptEditorWidget::loadFile(const QString& scriptPath) { if (_scriptEngine != NULL) { disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); - disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError); - disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint); disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); } @@ -168,16 +171,14 @@ void ScriptEditorWidget::loadFile(const QString& scriptPath) { static_cast(this->parent()->parent()->parent())->terminateCurrentTab(); } } - const QString& scriptURLString = QUrl(_currentScript).toString(); _scriptEngine = qApp->getScriptEngine(scriptURLString); if (_scriptEngine != NULL) { connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged); - connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError); - connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint); connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified); connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); } + _console->setScriptEngine(_scriptEngine); } bool ScriptEditorWidget::save() { @@ -210,19 +211,11 @@ bool ScriptEditorWidget::questionSave() { QMessageBox::StandardButton button = QMessageBox::warning(this, tr("Interface"), tr("The script has been modified.\nDo you want to save your changes?"), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Save); - return button == QMessageBox::Save ? save() : (button == QMessageBox::Cancel ? false : true); + return button == QMessageBox::Save ? save() : (button == QMessageBox::Discard); } return true; } -void ScriptEditorWidget::onScriptError(const QString& message) { - _scriptEditorWidgetUI->debugText->appendPlainText("ERROR: " + message); -} - -void ScriptEditorWidget::onScriptPrint(const QString& message) { - _scriptEditorWidgetUI->debugText->appendPlainText("> " + message); -} - void ScriptEditorWidget::onWindowActivated() { if (!_isReloading) { _isReloading = true; @@ -241,10 +234,8 @@ void ScriptEditorWidget::onWindowActivated() { setRunning(false); // Script is restarted once current script instance finishes. } - } } - _isReloading = false; } } diff --git a/interface/src/ui/ScriptEditorWidget.h b/interface/src/ui/ScriptEditorWidget.h index 8dd847ee6d..f53fd7b718 100644 --- a/interface/src/ui/ScriptEditorWidget.h +++ b/interface/src/ui/ScriptEditorWidget.h @@ -14,6 +14,7 @@ #include +#include "JSConsole.h" #include "ScriptEngine.h" namespace Ui { @@ -47,12 +48,11 @@ public slots: void onWindowActivated(); private slots: - void onScriptError(const QString& message); - void onScriptPrint(const QString& message); void onScriptModified(); void onScriptFinished(const QString& scriptName); private: + JSConsole* _console; Ui::ScriptEditorWidget* _scriptEditorWidgetUI; ScriptEngine* _scriptEngine; QString _currentScript; diff --git a/interface/src/ui/ScriptEditorWindow.cpp b/interface/src/ui/ScriptEditorWindow.cpp index b5c8500083..3c6d0f73d5 100644 --- a/interface/src/ui/ScriptEditorWindow.cpp +++ b/interface/src/ui/ScriptEditorWindow.cpp @@ -28,7 +28,6 @@ #include #include "Application.h" -#include "JSConsole.h" #include "PathUtils.h" ScriptEditorWindow::ScriptEditorWindow(QWidget* parent) : @@ -59,10 +58,6 @@ ScriptEditorWindow::ScriptEditorWindow(QWidget* parent) : _ScriptEditorWindowUI->newButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + "icons/new-script.svg"))); _ScriptEditorWindowUI->saveButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + "icons/save-script.svg"))); _ScriptEditorWindowUI->toggleRunButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + "icons/start-script.svg"))); - - QWidget* console = new JSConsole(this); - console->setFixedHeight(CONSOLE_HEIGHT); - this->layout()->addWidget(console); } ScriptEditorWindow::~ScriptEditorWindow() { @@ -77,10 +72,11 @@ void ScriptEditorWindow::setRunningState(bool run) { } void ScriptEditorWindow::updateButtons() { + bool isRunning = _ScriptEditorWindowUI->tabWidget->currentIndex() != -1 && + static_cast(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning(); _ScriptEditorWindowUI->toggleRunButton->setEnabled(_ScriptEditorWindowUI->tabWidget->currentIndex() != -1); - _ScriptEditorWindowUI->toggleRunButton->setIcon(_ScriptEditorWindowUI->tabWidget->currentIndex() != -1 && - static_cast(_ScriptEditorWindowUI->tabWidget->currentWidget())->isRunning() ? - QIcon("../resources/icons/stop-script.svg") : QIcon("../resources/icons/start-script.svg")); + _ScriptEditorWindowUI->toggleRunButton->setIcon(QIcon(QPixmap(PathUtils::resourcesPath() + ((isRunning ? + "icons/stop-script.svg" : "icons/start-script.svg"))))); } void ScriptEditorWindow::loadScriptMenu(const QString& scriptName) { diff --git a/interface/ui/scriptEditorWidget.ui b/interface/ui/scriptEditorWidget.ui index 8aeeff363f..e2e538a595 100644 --- a/interface/ui/scriptEditorWidget.ui +++ b/interface/ui/scriptEditorWidget.ui @@ -128,25 +128,6 @@ - - - - - 0 - 0 - - - - font: 15px "Courier"; - - - true - - - - - - @@ -158,22 +139,4 @@ - - - clearButton - clicked() - debugText - clear() - - - 663 - 447 - - - 350 - 501 - - - -