summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/QtXMLConsoleWidget.cpp')
-rw-r--r--Swift/QtUI/QtXMLConsoleWidget.cpp46
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();
+ }
+}
+
}