diff options
Diffstat (limited to 'gui/pages/LogPage.cpp')
-rw-r--r-- | gui/pages/LogPage.cpp | 101 |
1 files changed, 60 insertions, 41 deletions
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 += "<span style=\""; - { - if (color) - newtext += QString("color:") + color + ";"; - if (background) - newtext += QString("background-color:") + background + ";"; - newtext += "font-family: monospace;"; - } - newtext += "\">"; - newtext += text.toHtmlEscaped(); - newtext += "</span>"; - 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<QString> 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) |