diff options
Diffstat (limited to 'Swift/QtUI/QtXMLConsoleWidget.cpp')
-rw-r--r-- | Swift/QtUI/QtXMLConsoleWidget.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Swift/QtUI/QtXMLConsoleWidget.cpp b/Swift/QtUI/QtXMLConsoleWidget.cpp index 7553d06..662f070 100644 --- a/Swift/QtUI/QtXMLConsoleWidget.cpp +++ b/Swift/QtUI/QtXMLConsoleWidget.cpp @@ -1,10 +1,37 @@ #include "QtXMLConsoleWidget.h" #include <QCloseEvent> +#include <QTextEdit> +#include <QVBoxLayout> +#include <QPushButton> +#include <QScrollBar> + +#include "QtSwiftUtil.h" +#include "Swiften/Base/String.h" namespace Swift { + QtXMLConsoleWidget::QtXMLConsoleWidget() { + setWindowTitle("Console"); + + QVBoxLayout* layout = new QVBoxLayout(this); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); + textEdit = new QTextEdit(this); + textEdit->setReadOnly(true); + layout->addWidget(textEdit); + + QWidget* bottom = new QWidget(this); + layout->addWidget(bottom); + + QHBoxLayout* buttonLayout = new QHBoxLayout(bottom); + buttonLayout->setContentsMargins(0,0,20,0); + buttonLayout->setSpacing(0); + buttonLayout->addStretch(); + QPushButton* clearButton = new QPushButton("Clear", bottom); + connect(clearButton, SIGNAL(clicked()), textEdit, SLOT(clear())); + buttonLayout->addWidget(clearButton); } void QtXMLConsoleWidget::showEvent(QShowEvent* event) { @@ -26,4 +53,23 @@ void QtXMLConsoleWidget::closeEvent(QCloseEvent* event) { event->accept(); } +void QtXMLConsoleWidget::handleDataRead(const String& data) { + textEdit->setTextColor(QColor(33,98,33)); + appendText(data); +} + +void QtXMLConsoleWidget::handleDataWritten(const String& data) { + textEdit->setTextColor(QColor(155,1,0)); + appendText(data); +} + +void QtXMLConsoleWidget::appendText(const String& data) { + QScrollBar* scrollBar = textEdit->verticalScrollBar(); + bool scrollToBottom = (!scrollBar || scrollBar->value() == scrollBar->maximum()); + textEdit->append(P2QSTRING(data)); + if (scrollToBottom) { + textEdit->ensureCursorVisible(); + } +} + } |