History

ScriptEditor Improvements: - Script restart works proper again - Fixed on and off icon switch - Replaced regular script output box with fully functional JSConsole!

Thijs Wenker committed 11 years ago

Commit 96b60671 parent 880d34d4 files · +18 −68Browse files

Showing the changes to interface/src/ui/ScriptEditorWidget.cpp (1 of 4 files). Show all

Unified · Split

interface/src/ui/ScriptEditorWidget.cpp+12−21
@@ -52,10 +52,16 @@ ScriptEditorWidget::ScriptEditorWidget() : · 51 unmodified lines
52 // We create a new ScriptHighligting QObject and provide it with a parent so this is NOT a memory leak.52 // We create a new ScriptHighligting QObject and provide it with a parent so this is NOT a memory leak.
53 new ScriptHighlighting(_scriptEditorWidgetUI->scriptEdit->document());53 new ScriptHighlighting(_scriptEditorWidgetUI->scriptEdit->document());
54 QTimer::singleShot(0, _scriptEditorWidgetUI->scriptEdit, SLOT(setFocus()));54 QTimer::singleShot(0, _scriptEditorWidgetUI->scriptEdit, SLOT(setFocus()));
55
56 _console = new JSConsole(this);
57 _console->setFixedHeight(CONSOLE_HEIGHT);
58 _scriptEditorWidgetUI->verticalLayout->addWidget(_console);
59 connect(_scriptEditorWidgetUI->clearButton, &QPushButton::clicked, _console, &JSConsole::clear);
55}60}
56 61
57ScriptEditorWidget::~ScriptEditorWidget() {62ScriptEditorWidget::~ScriptEditorWidget() {
58 delete _scriptEditorWidgetUI;63 delete _scriptEditorWidgetUI;
64 delete _console;
59}65}
60 66
61void ScriptEditorWidget::onScriptModified() {67void ScriptEditorWidget::onScriptModified() {
@@ -68,6 +74,7 @@ void ScriptEditorWidget::onScriptModified() { · 6 unmodified lines
68 74
69void ScriptEditorWidget::onScriptFinished(const QString& scriptPath) {75void ScriptEditorWidget::onScriptFinished(const QString& scriptPath) {
70 _scriptEngine = NULL;76 _scriptEngine = NULL;
77 _console->setScriptEngine(NULL);
71 if (_isRestarting) {78 if (_isRestarting) {
72 _isRestarting = false;79 _isRestarting = false;
73 setRunning(true);80 setRunning(true);
@@ -89,8 +96,6 @@ bool ScriptEditorWidget::setRunning(bool run) { · 15 unmodified lines
89 96
90 if (_scriptEngine != NULL) {97 if (_scriptEngine != NULL) {
91 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);98 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);
92 disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
93 disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
94 disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);99 disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);
95 disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);100 disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);
96 }101 }
@@ -100,15 +105,15 @@ bool ScriptEditorWidget::setRunning(bool run) { · 3 unmodified lines
100 // Reload script so that an out of date copy is not retrieved from the cache105 // Reload script so that an out of date copy is not retrieved from the cache
101 _scriptEngine = qApp->loadScript(scriptURLString, true, true, false, true);106 _scriptEngine = qApp->loadScript(scriptURLString, true, true, false, true);
102 connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);107 connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);
103 connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
104 connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
105 connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);108 connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);
106 connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);109 connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);
107 } else {110 } else {
108 connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);111 connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);
109 qApp->stopScript(_currentScript);112 const QString& scriptURLString = QUrl(_currentScript).toString();
113 qApp->stopScript(scriptURLString);
110 _scriptEngine = NULL;114 _scriptEngine = NULL;
111 }115 }
116 _console->setScriptEngine(_scriptEngine);
112 return true;117 return true;
113}118}
114 119
@@ -147,8 +152,6 @@ void ScriptEditorWidget::loadFile(const QString& scriptPath) { · 32 unmodified lines
147 152
148 if (_scriptEngine != NULL) {153 if (_scriptEngine != NULL) {
149 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);154 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);
150 disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
151 disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
152 disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);155 disconnect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);
153 disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);156 disconnect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);
154 }157 }
@@ -168,16 +171,14 @@ void ScriptEditorWidget::loadFile(const QString& scriptPath) { · 13 unmodified lines
168 static_cast<ScriptEditorWindow*>(this->parent()->parent()->parent())->terminateCurrentTab();171 static_cast<ScriptEditorWindow*>(this->parent()->parent()->parent())->terminateCurrentTab();
169 }172 }
170 }173 }
171
172 const QString& scriptURLString = QUrl(_currentScript).toString();174 const QString& scriptURLString = QUrl(_currentScript).toString();
173 _scriptEngine = qApp->getScriptEngine(scriptURLString);175 _scriptEngine = qApp->getScriptEngine(scriptURLString);
174 if (_scriptEngine != NULL) {176 if (_scriptEngine != NULL) {
175 connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);177 connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);
176 connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
177 connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
178 connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);178 connect(_scriptEngine, &ScriptEngine::update, this, &ScriptEditorWidget::onScriptModified);
179 connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);179 connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);
180 }180 }
181 _console->setScriptEngine(_scriptEngine);
181}182}
182 183
183bool ScriptEditorWidget::save() {184bool ScriptEditorWidget::save() {
@@ -210,19 +211,11 @@ bool ScriptEditorWidget::questionSave() { · 26 unmodified lines
210 QMessageBox::StandardButton button = QMessageBox::warning(this, tr("Interface"),211 QMessageBox::StandardButton button = QMessageBox::warning(this, tr("Interface"),
211 tr("The script has been modified.\nDo you want to save your changes?"), QMessageBox::Save | QMessageBox::Discard |212 tr("The script has been modified.\nDo you want to save your changes?"), QMessageBox::Save | QMessageBox::Discard |
212 QMessageBox::Cancel, QMessageBox::Save);213 QMessageBox::Cancel, QMessageBox::Save);
213 return button == QMessageBox::Save ? save() : (button == QMessageBox::Cancel ? false : true);214 return button == QMessageBox::Save ? save() : (button == QMessageBox::Discard);
214 }215 }
215 return true;216 return true;
216}217}
217 218
218void ScriptEditorWidget::onScriptError(const QString& message) {
219 _scriptEditorWidgetUI->debugText->appendPlainText("ERROR: " + message);
220}
221
222void ScriptEditorWidget::onScriptPrint(const QString& message) {
223 _scriptEditorWidgetUI->debugText->appendPlainText("> " + message);
224}
225
226void ScriptEditorWidget::onWindowActivated() {219void ScriptEditorWidget::onWindowActivated() {
227 if (!_isReloading) {220 if (!_isReloading) {
228 _isReloading = true;221 _isReloading = true;
@@ -241,10 +234,8 @@ void ScriptEditorWidget::onWindowActivated() { · 12 unmodified lines
241 setRunning(false);234 setRunning(false);
242 // Script is restarted once current script instance finishes.235 // Script is restarted once current script instance finishes.
243 }236 }
244
245 }237 }
246 }238 }
247
248 _isReloading = false;239 _isReloading = false;
249 }240 }
250}241}