diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 08851da4ca..cdfb9ab850 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -1021,7 +1021,7 @@ void LammpsGui::do_run(bool use_buffer) // if configured, delete old log window before opening new one if (settings.value("logreplace", true).toBool()) delete logwindow; - logwindow = new LogWindow(); + logwindow = new LogWindow(current_file); logwindow->setReadOnly(true); logwindow->setCenterOnScroll(true); logwindow->moveCursor(QTextCursor::End); diff --git a/tools/lammps-gui/logwindow.cpp b/tools/lammps-gui/logwindow.cpp index 4b008ce5ca..9667950be5 100644 --- a/tools/lammps-gui/logwindow.cpp +++ b/tools/lammps-gui/logwindow.cpp @@ -18,13 +18,15 @@ #include #include #include +#include #include #include #include #include #include -LogWindow::LogWindow(QWidget *parent) : QPlainTextEdit(parent) +LogWindow::LogWindow(const QString &_filename, QWidget *parent) : + QPlainTextEdit(parent), filename(_filename) { QSettings settings; resize(settings.value("logx", 500).toInt(), settings.value("logy", 320).toInt()); @@ -42,10 +44,13 @@ void LogWindow::closeEvent(QCloseEvent *event) void LogWindow::save_as() { - QString fileName = QFileDialog::getSaveFileName(this, "Save Log to File"); - if (fileName.isEmpty()) return; + QString defaultname = filename + ".log"; + if (filename.isEmpty()) defaultname = "lammps.log"; + QString logFileName = QFileDialog::getSaveFileName(this, "Save Log to File", defaultname, + "Log files (*.log *.out *.txt)"); + if (logFileName.isEmpty()) return; - QFileInfo path(fileName); + QFileInfo path(logFileName); QFile file(path.absoluteFilePath()); if (!file.open(QIODevice::WriteOnly | QFile::Text)) { @@ -68,6 +73,9 @@ void LogWindow::contextMenuEvent(QContextMenuEvent *event) auto action = menu->addAction(QString("Save Log to File ...")); action->setIcon(QIcon(":/icons/document-save-as.png")); connect(action, &QAction::triggered, this, &LogWindow::save_as); + action = menu->addAction("&Close Window", this, &QWidget::close); + action->setIcon(QIcon(":/icons/window-close.png")); + action->setShortcut(QKeySequence::fromString("Ctrl+W")); menu->exec(event->globalPos()); delete menu; } diff --git a/tools/lammps-gui/logwindow.h b/tools/lammps-gui/logwindow.h index 4765b2faa7..5f43850655 100644 --- a/tools/lammps-gui/logwindow.h +++ b/tools/lammps-gui/logwindow.h @@ -20,7 +20,7 @@ class LogWindow : public QPlainTextEdit { Q_OBJECT public: - LogWindow(QWidget *parent = nullptr); + LogWindow(const QString &filename, QWidget *parent = nullptr); private slots: void save_as(); @@ -28,6 +28,9 @@ private slots: protected: void closeEvent(QCloseEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override; + +private: + QString filename; }; #endif