mirror of
https://github.com/Serial-Studio/Serial-Studio.git
synced 2025-01-31 17:42:55 +08:00
Limit scrollback to 10'000 lines
This commit is contained in:
parent
61703cba5e
commit
d9a20ad574
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user