diff --git a/BrainATUMtome/eventlog.cpp b/BrainATUMtome/eventlog.cpp index fafcc2e..48b38d6 100644 --- a/BrainATUMtome/eventlog.cpp +++ b/BrainATUMtome/eventlog.cpp @@ -1,11 +1,19 @@ #include "eventlog.h" EventLog::EventLog(QWidget *parent) : QPlainTextEdit (parent), - m_useTimestamp(true) + m_useTimestamp(true), + m_logFile(nullptr), + m_logStream(nullptr) { } +EventLog::~EventLog() +{ + if (m_logFile != nullptr) + m_logFile->close(); +} + void EventLog::setTimestamp(bool state) { @@ -13,6 +21,23 @@ void EventLog::setTimestamp(bool state) } +void EventLog::open(const QString &pathExport) +{ + QString fileName = "EventLog_" + QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss") + "_BrainATUMtome.txt"; + QString pathWrite = QDir(pathExport).filePath("logs"); + + // check path + QDir path(pathWrite); + if (!path.exists()) + path.mkdir(pathWrite); + + // open file for writing + m_logFile = new QFile(QDir(pathWrite).filePath(fileName)); + m_logFile->open(QIODevice::WriteOnly | QIODevice::Text); + m_logStream = new QTextStream(m_logFile); +} + + void EventLog::addMessageToBoard(const QString &message, QBrush brush) { QTextCharFormat textFormat = this->currentCharFormat(); @@ -36,4 +61,7 @@ void EventLog::on_log(const Qt::GlobalColor &color, const QString &message) } addMessageToBoard(logMessage, brush); + + // write to fle + *m_logStream << logMessage << "\n"; } diff --git a/BrainATUMtome/eventlog.h b/BrainATUMtome/eventlog.h index 1ba4068..dade3e4 100644 --- a/BrainATUMtome/eventlog.h +++ b/BrainATUMtome/eventlog.h @@ -7,6 +7,10 @@ #include #include +#include +#include +#include + #include class EventLog : public QPlainTextEdit @@ -15,10 +19,15 @@ class EventLog : public QPlainTextEdit public: explicit EventLog(QWidget *parent = nullptr); + ~EventLog(); + void setTimestamp(bool state); + void open(const QString &fileName); private: bool m_useTimestamp; + QFile *m_logFile; + QTextStream *m_logStream; void addMessageToBoard(const QString &message, QBrush brush); public slots: diff --git a/BrainATUMtome/mainwindow.cpp b/BrainATUMtome/mainwindow.cpp index 3717acd..f48bb1b 100644 --- a/BrainATUMtome/mainwindow.cpp +++ b/BrainATUMtome/mainwindow.cpp @@ -24,6 +24,7 @@ MainWindow::MainWindow(QWidget *parent) : ui->widget_board->on_log(Qt::red, "MainWindow :: provided INI file " + fileIni + " is not valid."); m_settings = new QSettings(fileIni, QSettings::IniFormat); + configure_logs(); configure_epos(); configure_microtome(); configure_syringe(); @@ -38,6 +39,21 @@ MainWindow::~MainWindow() } +void MainWindow::configure_logs() +{ + QString pathExport; + if (m_settings->value("export/path").isNull()) { + ui->widget_board->on_log(Qt::red, "Logs :: export is falling back to default location"); + pathExport = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation); + } + else { + pathExport = m_settings->value("export/path").toString(); + } + + ui->widget_board->open(pathExport); +} + + void MainWindow::configure_epos() { if (m_settings->value("epos/deviceName").isNull()) { diff --git a/BrainATUMtome/mainwindow.h b/BrainATUMtome/mainwindow.h index 118fd0d..c8ce540 100644 --- a/BrainATUMtome/mainwindow.h +++ b/BrainATUMtome/mainwindow.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -40,6 +41,7 @@ class MainWindow : public QMainWindow int m_microtome_advanceRemaining; void drive_epos_motor(int motorid, int velocity); + void configure_logs(); void configure_epos(); void configure_microtome(); void configure_syringe(); diff --git a/config/settings.ini b/config/settings.ini index 8406467..7329ab0 100644 --- a/config/settings.ini +++ b/config/settings.ini @@ -1,3 +1,6 @@ +[export] +path=/Users/tushevg/Desktop/export + [microtome] #deviceName=LeicaEMUC7 #port=COM2