From 7cf5576531177f292543229d7b74282bc6660dcb Mon Sep 17 00:00:00 2001 From: Jonathan Bauer Date: Wed, 1 Feb 2012 15:30:46 +0100 Subject: new abstract class agui for common gui functions, new console class for debug console --- src/fbgui/console.cpp | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/fbgui/console.cpp (limited to 'src/fbgui/console.cpp') diff --git a/src/fbgui/console.cpp b/src/fbgui/console.cpp new file mode 100644 index 0000000..ffd425f --- /dev/null +++ b/src/fbgui/console.cpp @@ -0,0 +1,60 @@ +/* + * console.cpp + * + * Created on: Jan 31, 2012 + * Author: joe + */ + +#include "console.h" + +console::console(QMainWindow* parent) : + QTextEdit(parent) { + + setWindowFlags(Qt::FramelessWindowHint); + + // fanciness + QPalette pal; + pal.setColor(QPalette::Base, Qt::black); + setPalette(pal); + setTextColor(Qt::white); + + // CTRL + D toggles debug window + QAction* _toggle = new QAction(tr("&toggleDebug"), parentWidget()); + _toggle->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D)); + parentWidget()->addAction(_toggle); + connect(_toggle, SIGNAL(triggered()), this, SLOT(toggle())); + + // watcher to detect file change + QFileSystemWatcher* _watcher = new QFileSystemWatcher(this); + // read from log file + _logFile = new QFile(logFilePath); + _logFileIn = new QTextStream(_logFile); + + if (!_logFile->open(QFile::ReadOnly | QFile::Text)) { + } else { + // watch log file + _watcher->addPath(logFilePath); + connect(_watcher, SIGNAL(fileChanged(const QString&)), this, + SLOT(refresh(const QString&))); + } +} + +console::~console() { + delete _logFile; + delete _logFileIn; +} + +void console::refresh(const QString& fileName) { + if (fileName == logFilePath) { + while (!_logFileIn->atEnd()) { + QString line = _logFileIn->readLine(); + if (!line.isEmpty()) + this->append(line); + } + this->moveCursor(QTextCursor::End); + } +} + +void console::toggle() { + (this->isVisible()) ? this->hide() : this->show(); +} -- cgit v1.2.3-55-g7522