From 24a9a22b53464403df3e5bb4f13d960045bb9dd3 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Mon, 19 Apr 2010 15:55:02 +0200 Subject: [PATCH] Added colors to the "Application Output" panel. --- .../projectexplorer/outputformatter.cpp | 61 +++++++++++++++++-- src/plugins/projectexplorer/outputformatter.h | 18 +++++- .../qmlprojectmanager/qmloutputformatter.cpp | 19 +++--- .../qmlprojectmanager/qmloutputformatter.h | 1 - .../qmlprojectruncontrol.cpp | 4 +- 5 files changed, 83 insertions(+), 20 deletions(-) diff --git a/src/plugins/projectexplorer/outputformatter.cpp b/src/plugins/projectexplorer/outputformatter.cpp index f2347267a61..3127772c132 100644 --- a/src/plugins/projectexplorer/outputformatter.cpp +++ b/src/plugins/projectexplorer/outputformatter.cpp @@ -29,13 +29,25 @@ #include "outputformatter.h" +#include <texteditor/fontsettings.h> +#include <texteditor/texteditorsettings.h> + #include <QtGui/QPlainTextEdit> using namespace ProjectExplorer; +using namespace TextEditor; OutputFormatter::OutputFormatter(QObject *parent) : QObject(parent) + , m_formats(0) { + initFormats(); +} + +OutputFormatter::~OutputFormatter() +{ + if (m_formats) + delete[] m_formats; } QPlainTextEdit *OutputFormatter::plainTextEdit() const @@ -49,17 +61,24 @@ void OutputFormatter::setPlainTextEdit(QPlainTextEdit *plainText) setParent(m_plainTextEdit); } -void OutputFormatter::appendApplicationOutput(const QString &text, bool /*onStdErr*/) +void OutputFormatter::appendApplicationOutput(const QString &text, bool onStdErr) { - QTextCharFormat format; - format.setForeground(plainTextEdit()->palette().text().color()); - plainTextEdit()->setCurrentCharFormat(format); + if (onStdErr) + setFormat(StdErrFormat); + else + setFormat(StdOutFormat); + plainTextEdit()->insertPlainText(text); } void OutputFormatter::appendMessage(const QString &text, bool isError) { - appendApplicationOutput(text, isError); + if (isError) + setFormat(ErrorMessageFormat); + else + setFormat(NormalMessageFormat); + + plainTextEdit()->insertPlainText(text); } void OutputFormatter::mousePressEvent(QMouseEvent * /*e*/) @@ -70,3 +89,35 @@ void OutputFormatter::mouseReleaseEvent(QMouseEvent * /*e*/) void OutputFormatter::mouseMoveEvent(QMouseEvent * /*e*/) {} + +void OutputFormatter::initFormats() +{ + FontSettings fs = TextEditorSettings::instance()->fontSettings(); + QFont font = fs.font(); + QFont boldFont = font; + boldFont.setBold(true); + + m_formats = new QTextCharFormat[NumberOfFormats]; + + // NormalMessageFormat + m_formats[NormalMessageFormat].setFont(boldFont); + m_formats[NormalMessageFormat].setForeground(QColor(Qt::black)); + + // ErrorMessageFormat + m_formats[ErrorMessageFormat].setFont(boldFont); + m_formats[ErrorMessageFormat].setForeground(QColor(Qt::red)); + + // StdOutFormat + m_formats[StdOutFormat].setFont(font); + m_formats[StdOutFormat].setForeground(QColor(Qt::black)); + + // StdErrFormat + m_formats[StdErrFormat].setFont(font); + m_formats[StdErrFormat].setForeground(QColor(Qt::red)); +} + +void OutputFormatter::setFormat(Format theFormat) const +{ + if (m_formats) + plainTextEdit()->setCurrentCharFormat(m_formats[theFormat]); +} diff --git a/src/plugins/projectexplorer/outputformatter.h b/src/plugins/projectexplorer/outputformatter.h index 4bde9197f67..38ed672b9b7 100644 --- a/src/plugins/projectexplorer/outputformatter.h +++ b/src/plugins/projectexplorer/outputformatter.h @@ -35,8 +35,9 @@ #include <QtCore/QObject> #include <QtCore/QString> -QT_FORWARD_DECLARE_CLASS(QPlainTextEdit); QT_FORWARD_DECLARE_CLASS(QMouseEvent); +QT_FORWARD_DECLARE_CLASS(QPlainTextEdit); +QT_FORWARD_DECLARE_CLASS(QTextCharFormat); namespace ProjectExplorer { @@ -46,6 +47,7 @@ class PROJECTEXPLORER_EXPORT OutputFormatter: public QObject public: OutputFormatter(QObject *parent = 0); + virtual ~OutputFormatter(); QPlainTextEdit *plainTextEdit() const; void setPlainTextEdit(QPlainTextEdit *plainText); @@ -57,8 +59,22 @@ public: virtual void mouseReleaseEvent(QMouseEvent *e); virtual void mouseMoveEvent(QMouseEvent *e); +protected: + enum Format { + NormalMessageFormat = 0, + ErrorMessageFormat = 1, + StdOutFormat = 2, + StdErrFormat = 3, + + NumberOfFormats = 4 + }; + + void initFormats(); + void setFormat(Format theFormat) const; + private: QPlainTextEdit *m_plainTextEdit; + QTextCharFormat *m_formats; }; } // namespace ProjectExplorer diff --git a/src/plugins/qmlprojectmanager/qmloutputformatter.cpp b/src/plugins/qmlprojectmanager/qmloutputformatter.cpp index 821a492b611..6b4c2889d9a 100644 --- a/src/plugins/qmlprojectmanager/qmloutputformatter.cpp +++ b/src/plugins/qmlprojectmanager/qmloutputformatter.cpp @@ -44,16 +44,18 @@ QmlOutputFormatter::QmlOutputFormatter(QObject *parent) { } -void QmlOutputFormatter::appendApplicationOutput(const QString &text, bool /*onStdErr*/) +void QmlOutputFormatter::appendApplicationOutput(const QString &text, bool onStdErr) { - QTextCharFormat normalFormat, linkFormat; - normalFormat.setForeground(plainTextEdit()->palette().text().color()); - linkFormat.setForeground(plainTextEdit()->palette().link().color()); + if (onStdErr) + setFormat(StdErrFormat); + else + setFormat(StdOutFormat); + + QTextCharFormat normalFormat = plainTextEdit()->currentCharFormat(); + QTextCharFormat linkFormat = normalFormat; linkFormat.setUnderlineStyle(QTextCharFormat::SingleUnderline); linkFormat.setAnchor(true); - plainTextEdit()->setCurrentCharFormat(normalFormat); - // Create links from QML errors (anything of the form "file:///...:[line]:[column]:") int index = 0; while (m_qmlError.indexIn(text, index) != -1) { @@ -72,11 +74,6 @@ void QmlOutputFormatter::appendApplicationOutput(const QString &text, bool /*onS plainTextEdit()->insertPlainText(text.mid(index)); } -void QmlOutputFormatter::appendMessage(const QString &text, bool isError) -{ - appendApplicationOutput(text, isError); -} - void QmlOutputFormatter::mousePressEvent(QMouseEvent * /*e*/) { m_mousePressed = true; diff --git a/src/plugins/qmlprojectmanager/qmloutputformatter.h b/src/plugins/qmlprojectmanager/qmloutputformatter.h index 4d02a0c493f..8d0e64d6d51 100644 --- a/src/plugins/qmlprojectmanager/qmloutputformatter.h +++ b/src/plugins/qmlprojectmanager/qmloutputformatter.h @@ -43,7 +43,6 @@ public: QmlOutputFormatter(QObject *parent = 0); virtual void appendApplicationOutput(const QString &text, bool onStdErr); - virtual void appendMessage(const QString &text, bool isError); virtual void mousePressEvent(QMouseEvent *e); virtual void mouseReleaseEvent(QMouseEvent *e); diff --git a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp index aa4a0a37fe7..de6e9bba300 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectruncontrol.cpp @@ -89,8 +89,8 @@ void QmlRunControl::start() Debugger::DebuggerUISwitcher::instance()->setActiveLanguage(Qml::Constants::LANG_QML); emit started(); - emit addToOutputWindow(this, tr("Starting %1 %2").arg(QDir::toNativeSeparators(m_executable), - m_commandLineArguments.join(QLatin1String(" "))), false); + emit appendMessage(this, tr("Starting %1 %2").arg(QDir::toNativeSeparators(m_executable), + m_commandLineArguments.join(QLatin1String(" "))), false); } void QmlRunControl::stop() -- GitLab