Wait for script engine to stop before restarting.
Showing the changes to interface/src/ui/ScriptEditorWidget.cpp (1 of 2 files). Show all
Unified · Split
| @@ -28,7 +28,8 @@ · 27 unmodified lines | |||
| 28 | 28 | ||
| 29 | ScriptEditorWidget::ScriptEditorWidget() : | 29 | ScriptEditorWidget::ScriptEditorWidget() : |
| 30 | _scriptEditorWidgetUI(new Ui::ScriptEditorWidget), | 30 | _scriptEditorWidgetUI(new Ui::ScriptEditorWidget), |
| 31 | _scriptEngine(NULL) | 31 | _scriptEngine(NULL), |
| 32 | _isRestarting(false) | ||
| 32 | { | 33 | { |
| 33 | _scriptEditorWidgetUI->setupUi(this); | 34 | _scriptEditorWidgetUI->setupUi(this); |
| 34 | 35 | ||
| @@ -52,8 +53,9 @@ ScriptEditorWidget::~ScriptEditorWidget() { · 17 unmodified lines | |||
| 52 | 53 | ||
| 53 | void ScriptEditorWidget::onScriptModified() { | 54 | void ScriptEditorWidget::onScriptModified() { |
| 54 | if(_scriptEditorWidgetUI->onTheFlyCheckBox->isChecked() && isRunning()) { | 55 | if(_scriptEditorWidgetUI->onTheFlyCheckBox->isChecked() && isRunning()) { |
| 56 | _isRestarting = true; | ||
| 55 | setRunning(false); | 57 | setRunning(false); |
| 56 | setRunning(true); | 58 | // Script is restarted once current script instance finishes. |
| 57 | } | 59 | } |
| 58 | } | 60 | } |
| 59 | 61 | ||
| @@ -62,6 +64,13 @@ void ScriptEditorWidget::onScriptEnding() { · 2 unmodified lines | |||
| 62 | _scriptEngine = NULL; | 64 | _scriptEngine = NULL; |
| 63 | } | 65 | } |
| 64 | 66 | ||
| 67 | void ScriptEditorWidget::onScriptFinished(const QString& scriptPath) { | ||
| 68 | if (_isRestarting) { | ||
| 69 | _isRestarting = false; | ||
| 70 | setRunning(true); | ||
| 71 | } | ||
| 72 | } | ||
| 73 | |||
| 65 | bool ScriptEditorWidget::isModified() { | 74 | bool ScriptEditorWidget::isModified() { |
| 66 | return _scriptEditorWidgetUI->scriptEdit->document()->isModified(); | 75 | return _scriptEditorWidgetUI->scriptEdit->document()->isModified(); |
| 67 | } | 76 | } |
| @@ -93,6 +102,7 @@ bool ScriptEditorWidget::setRunning(bool run) { · 25 unmodified lines | |||
| 93 | connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint); | 102 | connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint); |
| 94 | connect(_scriptEngine, &ScriptEngine::scriptEnding, this, &ScriptEditorWidget::onScriptEnding); | 103 | connect(_scriptEngine, &ScriptEngine::scriptEnding, this, &ScriptEditorWidget::onScriptEnding); |
| 95 | } else { | 104 | } else { |
| 105 | connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished); | ||
| 96 | Application::getInstance()->stopScript(_currentScript); | 106 | Application::getInstance()->stopScript(_currentScript); |
| 97 | _scriptEngine = NULL; | 107 | _scriptEngine = NULL; |
| 98 | } | 108 | } |