From 2e9284951c7364dc766a406099ce3a779773abb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 9 Nov 2014 14:53:08 +0100 Subject: Improve log formatting * Updated log level detection for current Minecraft versions * Better formatting: using a monospaced font and raw text instead of HTML (fixes #111) --- gui/pages/LogPage.cpp | 101 ++++++++++++++++++++++++++++++-------------------- gui/pages/LogPage.h | 12 ++---- 2 files changed, 63 insertions(+), 50 deletions(-) (limited to 'gui') diff --git a/gui/pages/LogPage.cpp b/gui/pages/LogPage.cpp index 636d2695..f16e3477 100644 --- a/gui/pages/LogPage.cpp +++ b/gui/pages/LogPage.cpp @@ -16,6 +16,14 @@ LogPage::LogPage(MinecraftProcess *proc, QWidget *parent) connect(m_process, SIGNAL(log(QString, MessageLevel::Enum)), this, SLOT(write(QString, MessageLevel::Enum))); + // create the format and set its font + defaultFormat = new QTextCharFormat(ui->text->currentCharFormat()); + QFont font; + font.setFamily("Courier"); + font.setStyleHint(QFont::Monospace); + font.setFixedPitch(true); + defaultFormat->setFont(font); + auto findShortcut = new QShortcut(QKeySequence(QKeySequence::Find), this); connect(findShortcut, SIGNAL(activated()), SLOT(findActivated())); auto findNextShortcut = new QShortcut(QKeySequence(QKeySequence::FindNext), this); @@ -28,6 +36,7 @@ LogPage::LogPage(MinecraftProcess *proc, QWidget *parent) LogPage::~LogPage() { delete ui; + delete defaultFormat; } bool LogPage::apply() @@ -107,24 +116,6 @@ void LogPage::findPreviousActivated() } } -void LogPage::writeColor(QString text, const char *color, const char *background) -{ - // append a paragraph - QString newtext; - newtext += ""; - newtext += text.toHtmlEscaped(); - newtext += ""; - ui->text->appendHtml(newtext); -} - void LogPage::write(QString data, MessageLevel::Enum mode) { if (!m_write_active) @@ -159,31 +150,59 @@ void LogPage::write(QString data, MessageLevel::Enum mode) for (QString ¶graph : paragraphs) { //TODO: implement filtering here. - filtered.append(paragraph.trimmed()); + filtered.append(paragraph); } QListIterator iter(filtered); - if (mode == MessageLevel::MultiMC) - while (iter.hasNext()) - writeColor(iter.next(), "blue", 0); - else if (mode == MessageLevel::Error) - while (iter.hasNext()) - writeColor(iter.next(), "red", 0); - else if (mode == MessageLevel::Warning) - while (iter.hasNext()) - writeColor(iter.next(), "orange", 0); - else if (mode == MessageLevel::Fatal) - while (iter.hasNext()) - writeColor(iter.next(), "red", "black"); - else if (mode == MessageLevel::Debug) - while (iter.hasNext()) - writeColor(iter.next(), "green", 0); - else if (mode == MessageLevel::PrePost) - while (iter.hasNext()) - writeColor(iter.next(), "grey", 0); - // TODO: implement other MessageLevels - else - while (iter.hasNext()) - writeColor(iter.next(), 0, 0); + QTextCharFormat format(*defaultFormat); + + switch(mode) + { + case MessageLevel::MultiMC: + { + format.setForeground(QColor("blue")); + break; + } + case MessageLevel::Debug: + { + format.setForeground(QColor("green")); + break; + } + case MessageLevel::Warning: + { + format.setForeground(QColor("orange")); + break; + } + case MessageLevel::Error: + { + format.setForeground(QColor("red")); + break; + } + case MessageLevel::Fatal: + { + format.setForeground(QColor("red")); + format.setBackground(QColor("black")); + } + case MessageLevel::PrePost: + { + format.setForeground(QColor("grey")); + } + case MessageLevel::Info: + case MessageLevel::Message: + default: + { + // do nothing, keep original + } + } + + while (iter.hasNext()) + { + // append a paragraph/line + auto workCursor = ui->text->textCursor(); + workCursor.movePosition(QTextCursor::End); + workCursor.insertText(iter.next(), format); + workCursor.insertBlock(); + } + if (isVisible()) { if (m_scroll_active) diff --git a/gui/pages/LogPage.h b/gui/pages/LogPage.h index 3c86724e..468dcf79 100644 --- a/gui/pages/LogPage.h +++ b/gui/pages/LogPage.h @@ -28,6 +28,7 @@ namespace Ui { class LogPage; } +class QTextCharFormat; class LogPage : public QWidget, public BasePage { @@ -55,15 +56,6 @@ public: } virtual bool shouldDisplay() const; -private: - /** - * @brief write a colored paragraph - * @param data the string - * @param color the css color name - * this will only insert a single paragraph. - * \n are ignored. a real \n is always appended. - */ - void writeColor(QString text, const char *color, const char *background); private slots: /** * @brief write a string @@ -90,4 +82,6 @@ private: bool m_scroll_active = true; int m_saved_offset = 0; bool m_write_active = true; + + QTextCharFormat * defaultFormat; }; -- cgit v1.2.3