Limit scrollback to 10'000 lines

This commit is contained in:
Alex Spataru 2022-01-01 20:56:10 -05:00
parent 61703cba5e
commit d9a20ad574
4 changed files with 20 additions and 18 deletions

View File

@ -292,6 +292,7 @@ void IO::Console::save()
void IO::Console::clear()
{
m_textBuffer.clear();
m_textBuffer.reserve(10 * 1000);
m_isStartingLine = true;
Q_EMIT dataReceived();
}

View File

@ -321,13 +321,9 @@ void JSON::Generator::readData(const QByteArray &data)
void JSON::Generator::processFrame(const QByteArray &data, const quint64 frame,
const QDateTime &time)
{
// Init variables
QJsonParseError error;
QJsonDocument document;
// Serial device sends JSON (auto mode)
if (operationMode() == JSON::Generator::kAutomatic)
document = QJsonDocument::fromJson(data, &error);
m_jfi.jsonDocument = QJsonDocument::fromJson(data, &m_error);
// We need to use a map file, check if its loaded & replace values into map
else
@ -343,12 +339,8 @@ void JSON::Generator::processFrame(const QByteArray &data, const quint64 frame,
for (int i = 0; i < list.count(); ++i)
json.replace(QString("\"%%1\"").arg(i + 1), "\"" + list.at(i) + "\"");
// Create json document
const auto jsonData = json.toUtf8();
const auto jsonDocument = QJsonDocument::fromJson(jsonData, &error);
// Calculate dynamically generated values
auto root = jsonDocument.object();
auto root = QJsonDocument::fromJson(json.toUtf8(), &m_error).object();
auto groups = JFI_Value(root, "groups", "g").toArray();
for (int i = 0; i < groups.count(); ++i)
{
@ -380,12 +372,19 @@ void JSON::Generator::processFrame(const QByteArray &data, const quint64 frame,
root.insert("groups", groups);
// Create JSON document
document = QJsonDocument(root);
m_jfi.jsonDocument = QJsonDocument(root);
// Clear strings
json.clear();
}
// No parse error, update UI & reset error counter
if (error.error == QJsonParseError::NoError)
Q_EMIT jsonChanged(JFI_CreateNew(frame, time, document));
if (m_error.error == QJsonParseError::NoError)
{
m_jfi.rxDateTime = time;
m_jfi.frameNumber = frame;
Q_EMIT jsonChanged(m_jfi);
}
}
//----------------------------------------------------------------------------------------

View File

@ -153,10 +153,12 @@ private Q_SLOTS:
private:
QFile m_jsonMap;
JFI_Object m_jfi;
quint64 m_frameCount;
QSettings m_settings;
QString m_jsonMapData;
OperationMode m_opMode;
QJsonParseError m_error;
bool m_processInSeparateThread;
};
}

View File

@ -66,14 +66,10 @@ Widgets::Terminal::Terminal(QQuickItem *parent)
#endif
m_textEdit.setPalette(palette);
// Connect console signals
// Connect signals/slots
// clang-format off
connect(&IO::Console::instance(), &IO::Console::stringReceived,
this, &Widgets::Terminal::insertText);
// clang-format on
// Configure re-paint timer at 10 Hz
// clang-format off
connect(&Misc::TimerEvents::instance(), &Misc::TimerEvents::timeout10Hz,
this, &Widgets::Terminal::repaint);
// clang-format on
@ -555,6 +551,10 @@ void Widgets::Terminal::addText(const QString &text, const bool enableVt100)
if (enableVt100)
textToInsert = vt100Processing(text);
// Clear terminal scrollback after 10000 lines
if (m_textEdit.blockCount() >= 10000)
m_textEdit.clear();
// Add text at the end of the text document
QTextCursor cursor(m_textEdit.document());
cursor.beginEditBlock();