From eecf78ca1b28d0948ca2889e6c5afbe8b302d4b3 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sun, 8 Dec 2019 14:33:55 +0100 Subject: [PATCH] Make console output a textarea --- .../scripting/codecompletion.cpp | 13 ++++--- nymea-app/ui/magic/ScriptEditor.qml | 35 +++++-------------- 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/libnymea-app-core/scripting/codecompletion.cpp b/libnymea-app-core/scripting/codecompletion.cpp index 11a2e1b6..0e46e680 100644 --- a/libnymea-app-core/scripting/codecompletion.cpp +++ b/libnymea-app-core/scripting/codecompletion.cpp @@ -478,18 +478,21 @@ CodeCompletion::BlockInfo CodeCompletion::getBlockInfo(int position) const info.name.remove(QRegExp(".* ")); } - qDebug() << "Block starts at" << blockStart.position() << "contents:" << blockStart.block().text(); int childBlocks = 0; while (!blockStart.isNull() && blockStart.position() < position) { QString line = blockStart.block().text(); if (line.endsWith("{")) { - blockStart.movePosition(QTextCursor::NextBlock); childBlocks++; + if (!blockStart.movePosition(QTextCursor::NextBlock)) { + break; + } continue; } if (line.trimmed().startsWith("}")) { - blockStart.movePosition(QTextCursor::NextBlock); childBlocks--; + if (!blockStart.movePosition(QTextCursor::NextBlock)) { + break; + } continue; } // \n @@ -508,7 +511,9 @@ CodeCompletion::BlockInfo CodeCompletion::getBlockInfo(int position) const qDebug() << "inserting:" << propName << "->" << propValue; info.properties.insert(propName, propValue); } - blockStart.movePosition(QTextCursor::NextBlock); + if (!blockStart.movePosition(QTextCursor::NextBlock)) { + break; + } } return info; diff --git a/nymea-app/ui/magic/ScriptEditor.qml b/nymea-app/ui/magic/ScriptEditor.qml index e86ca750..271e0fb3 100644 --- a/nymea-app/ui/magic/ScriptEditor.qml +++ b/nymea-app/ui/magic/ScriptEditor.qml @@ -145,7 +145,8 @@ Page { if (scriptId !== d.scriptId) { return; } - messagesModel.append({type: type, message: message}) + var str = "".arg(type == "ScriptMessageTypeWarning" ? app.accentColor : app.foregroundColor) + message + "" + consoleOutput.append(str) } } @@ -346,32 +347,12 @@ Page { property string title: qsTr("Console") signal raise() - ListView { - id: messagesListView - model: ListModel { - id: messagesModel - onCountChanged: { - if (count > 0) { - consolePane.raise(); - } - } - } - property bool autoScroll: true - onCountChanged: { - if (autoScroll) { - messagesListView.positionViewAtEnd() - } - } - onMovementEnded: { - autoScroll = messagesListView.atYEnd; - } - - delegate: Label { - width: parent.width - text: model.message - font: scriptEdit.font - color: model.type === "ScriptMessageTypeWarning" ? "red" : app.foregroundColor - } + TextArea { + id: consoleOutput + onTextChanged: consolePane.raise(); + selectByMouse: true + font: scriptEdit.font + textFormat: Qt.RichText } } }