diff --git a/src/dialogs/CMakeLists.txt b/src/dialogs/CMakeLists.txt --- a/src/dialogs/CMakeLists.txt +++ b/src/dialogs/CMakeLists.txt @@ -1,7 +1,6 @@ set(dialogs_SRCS generalsettingsdialog.cpp connectsettingsdialog.cpp - logdialog.cpp ) add_library(AtelierDialogs STATIC ${dialogs_SRCS}) target_link_libraries(AtelierDialogs Qt5::Widgets Qt5::SerialPort KF5::Solid KF5::I18n) diff --git a/src/mainwindow.h b/src/mainwindow.h --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -23,8 +23,7 @@ #include #include #include -#include - +#include namespace Ui { class MainWindow; @@ -45,7 +44,7 @@ QUrl fileName; GeneralSettingsDialog *generalSettingsDialog; ConnectSettingsDialog *connectSettingsDialog; - LogDialog *logDialog; + LogWidget *logWidget; QAction *_connect; void initConnectsToAtCore(); void initWidgets(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -29,10 +29,10 @@ KXmlGuiWindow(parent), ui(new Ui::MainWindow), generalSettingsDialog(new GeneralSettingsDialog(this)), - connectSettingsDialog(new ConnectSettingsDialog(this)), - logDialog(new LogDialog(this)) + connectSettingsDialog(new ConnectSettingsDialog(this)) { ui->setupUi(this); + logWidget = new LogWidget; setupActions(); initConnectsToAtCore(); initWidgets(); @@ -87,7 +87,7 @@ }); connect(ui->pushGCodeWidget, &PushGCodeWidget::push, [ = ](QString command) { - logDialog->addLog("Push " + command); + logWidget->addLog("Push " + command); core.pushCommand(command); }); @@ -106,12 +106,15 @@ // This dock is of Printing Progress. It only need to be show while printing ui->printProgressDockWidget->setVisible(false); + ui->logDockWidget->setWidget(logWidget); + // When a new profile is added on the Profile Dialog it needs to update the profiles on connection dialog connect(generalSettingsDialog, &GeneralSettingsDialog::updateProfiles, connectSettingsDialog, &ConnectSettingsDialog::updateProfiles); connectSettingsDialog->setFirmwareList(core.availablePlugins()); generalSettingsDialog->setBaudRates(core.serial()->validBaudRates()); + } void MainWindow::setupActions() @@ -179,10 +182,8 @@ action = actionCollection()->addAction(QStringLiteral("toolbox"), ui->toolboxDockWidget->toggleViewAction()); action->setText(i18n("Toolbox")); - // Actions for the Dialogs - action = actionCollection()->addAction(QStringLiteral("log")); - action->setText(i18n("Log Dialog")); - connect(action, &QAction::triggered, logDialog, &LogDialog::show); + action = actionCollection()->addAction(QStringLiteral("log"), ui->logDockWidget->toggleViewAction()); + action->setText(i18n("Log")); setupGUI(Default, "atelierui.rc"); } @@ -226,14 +227,14 @@ case AtCore::IDLE: { ui->toolboxTabWidget->setEnabled(true); emit extruderCountChanged(core.extruderCount()); - logDialog->addLog(i18n("Serial connected")); + logWidget->addLog(i18n("Serial connected")); _connect->setText(i18n("&Disconnect")); } break; case AtCore::DISCONNECTED: { ui->toolboxTabWidget->setEnabled(false); disconnect(core.serial(), &SerialLayer::receivedCommand, this, &MainWindow::checkReceivedCommand); disconnect(core.serial(), &SerialLayer::pushedCommand, this, &MainWindow::checkPushedCommands); - logDialog->addLog(i18n("Serial disconnected")); + logWidget->addLog(i18n("Serial disconnected")); } break; case AtCore::STARTPRINT: { @@ -283,12 +284,12 @@ msg = msg.arg(QString::number(number)) .arg(QString::number(temp)); - logDialog->addRLog(msg); + logWidget->addRLog(msg); } void MainWindow::checkReceivedCommand() { - logDialog->addRLog(QString::fromUtf8(core.popCommand())); + logWidget->addRLog(QString::fromUtf8(core.popCommand())); } void MainWindow::checkPushedCommands(QByteArray bmsg) @@ -298,5 +299,5 @@ QRegExp _return(QChar::fromLatin1('\r')); msg.replace(_newLine, QStringLiteral("\\n")); msg.replace(_return, QStringLiteral("\\r")); - logDialog->addSLog(msg); + logWidget->addSLog(msg); } diff --git a/src/mainwindow.ui b/src/mainwindow.ui --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -160,6 +160,19 @@ + + + Log + + + true + + + + 1 + + + diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -6,6 +6,7 @@ pushgcodewidget.cpp ratescontrolwidget.cpp printprogresswidget.cpp + logwidget.cpp ) add_library(AtelierWidgets STATIC ${widgets_SRCS}) diff --git a/src/dialogs/logdialog.h b/src/widgets/logwidget.h rename from src/dialogs/logdialog.h rename to src/widgets/logwidget.h --- a/src/dialogs/logdialog.h +++ b/src/widgets/logwidget.h @@ -1,6 +1,7 @@ /* Atelier KDE Printer Host for 3D Printing Copyright (C) <2017> Author: Lays Rodrigues - laysrodrigues@gmail.com + Chris Rizzitello - rizzitello@kde.org This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,24 +17,24 @@ along with this program. If not, see . */ #pragma once -#include +#include #include #include -#include +#include -class LogDialog : public QDialog +class LogWidget : public QWidget { public: - LogDialog(QWidget *parent = nullptr); + explicit LogWidget(QWidget *parent = nullptr); void addLog(QString msg); void addRLog(QString msg); void addSLog(QString msg); private: void saveLog(); QTemporaryFile *logFile; QPlainTextEdit *log; - QDialogButtonBox *buttonGroup; + QPushButton *btnSave; QString logHeader(); QString rLogHeader(); QString sLogHeader(); diff --git a/src/dialogs/logdialog.cpp b/src/widgets/logwidget.cpp rename from src/dialogs/logdialog.cpp rename to src/widgets/logwidget.cpp --- a/src/dialogs/logdialog.cpp +++ b/src/widgets/logwidget.cpp @@ -1,6 +1,7 @@ /* Atelier KDE Printer Host for 3D Printing Copyright (C) <2017> Author: Lays Rodrigues - laysrodrigues@gmail.com + Chris Rizzitello - rizzitello@kde.org This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,57 +16,54 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include "logdialog.h" +#include "logwidget.h" #include - #include #include #include #include -LogDialog::LogDialog(QWidget *parent) : QDialog(parent), +LogWidget::LogWidget(QWidget *parent) : QWidget(parent), logFile(new QTemporaryFile(QDir::tempPath() + QStringLiteral("/Atelier_"))) { - this->setWindowTitle(i18n("Log Dialog")); QVBoxLayout *layout = new QVBoxLayout(); - buttonGroup = new QDialogButtonBox(QDialogButtonBox::Save | QDialogButtonBox::Close); + btnSave = new QPushButton(i18n("Save Logfile")); log = new QPlainTextEdit(); log->setReadOnly(true); log->setMaximumBlockCount(1000); layout->addWidget(log); - layout->addWidget(buttonGroup); + layout->addWidget(btnSave); this->setLayout(layout); - connect(buttonGroup, &QDialogButtonBox::rejected, this, &LogDialog::reject); - connect(buttonGroup, &QDialogButtonBox::accepted, this, &LogDialog::saveLog); + connect(btnSave, &QPushButton::clicked, this, &LogWidget::saveLog); } -void LogDialog::saveLog() +void LogWidget::saveLog() { QString fileName = QDir::homePath() + QChar::fromLatin1('/') + QFileInfo(logFile->fileName()).fileName(); QString saveFileName = QFileDialog::getSaveFileName(this, i18n("Save Log to file"), fileName); QFile::copy(logFile->fileName(), saveFileName); logFile->close(); } -QString LogDialog::logHeader() +QString LogWidget::logHeader() { return QStringLiteral("[%1] ").arg(getTime()); } -QString LogDialog::rLogHeader() +QString LogWidget::rLogHeader() { return QStringLiteral("[%1]< ").arg(getTime()); } -QString LogDialog::sLogHeader() +QString LogWidget::sLogHeader() { return QStringLiteral("[%1]> ").arg(getTime()); } -void LogDialog::writeTempFile(QString text) +void LogWidget::writeTempFile(QString text) { /* A QTemporaryFile will always be opened in QIODevice::ReadWrite mode, @@ -80,28 +78,28 @@ logFile->close(); } -void LogDialog::addLog(QString msg) +void LogWidget::addLog(QString msg) { QString message(logHeader() + msg); log->appendPlainText(message); writeTempFile(message); } -void LogDialog::addRLog(QString msg) +void LogWidget::addRLog(QString msg) { QString message(rLogHeader() + msg); log->appendPlainText(message); writeTempFile(message); } -void LogDialog::addSLog(QString msg) +void LogWidget::addSLog(QString msg) { QString message(sLogHeader() + msg); log->appendPlainText(message); writeTempFile(message); } -QString LogDialog::getTime() +QString LogWidget::getTime() { return QTime::currentTime().toString(QStringLiteral("hh:mm:ss:zzz")); }