summaryrefslogtreecommitdiffstats
path: root/gui/consolewindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/consolewindow.cpp')
-rw-r--r--gui/consolewindow.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/gui/consolewindow.cpp b/gui/consolewindow.cpp
new file mode 100644
index 00000000..1d84fe04
--- /dev/null
+++ b/gui/consolewindow.cpp
@@ -0,0 +1,73 @@
+#include "consolewindow.h"
+#include "ui_consolewindow.h"
+
+#include <QScrollBar>
+
+ConsoleWindow::ConsoleWindow(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::ConsoleWindow),
+ m_mayclose(true)
+{
+ ui->setupUi(this);
+}
+
+ConsoleWindow::~ConsoleWindow()
+{
+ delete ui;
+}
+
+void ConsoleWindow::writeColor(QString text, const char *color)
+{
+ // append a paragraph
+ if (color != nullptr)
+ ui->text->appendHtml(QString("<font color=%1>%2</font>").arg(color).arg(text));
+ else
+ ui->text->appendPlainText(text);
+ // scroll down
+ QScrollBar *bar = ui->text->verticalScrollBar();
+ bar->setValue(bar->maximum());
+}
+
+void ConsoleWindow::write(QString data, WriteMode mode)
+{
+ if (data.endsWith('\n'))
+ data = data.left(data.length()-1);
+ QStringList paragraphs = data.split('\n');
+ QListIterator<QString> iter(paragraphs);
+ if (mode == MULTIMC)
+ while(iter.hasNext())
+ writeColor(iter.next(), "blue");
+ else if (mode == ERROR)
+ while(iter.hasNext())
+ writeColor(iter.next(), "red");
+ else
+ while(iter.hasNext())
+ writeColor(iter.next());
+}
+
+void ConsoleWindow::clear()
+{
+ ui->text->clear();
+}
+
+void ConsoleWindow::on_closeButton_clicked()
+{
+ close();
+}
+
+void ConsoleWindow::setMayClose(bool mayclose)
+{
+ m_mayclose = mayclose;
+ if (mayclose)
+ ui->closeButton->setEnabled(true);
+ else
+ ui->closeButton->setEnabled(false);
+}
+
+void ConsoleWindow::closeEvent(QCloseEvent * event)
+{
+ if(!m_mayclose)
+ event->ignore();
+ else
+ QDialog::closeEvent(event);
+}