provide default file name when writing log window text to file

This commit is contained in:
Axel Kohlmeyer
2023-10-03 14:15:23 -04:00
parent 918705ce2f
commit bb01afc498
3 changed files with 17 additions and 6 deletions

View File

@ -1021,7 +1021,7 @@ void LammpsGui::do_run(bool use_buffer)
// if configured, delete old log window before opening new one // if configured, delete old log window before opening new one
if (settings.value("logreplace", true).toBool()) delete logwindow; if (settings.value("logreplace", true).toBool()) delete logwindow;
logwindow = new LogWindow(); logwindow = new LogWindow(current_file);
logwindow->setReadOnly(true); logwindow->setReadOnly(true);
logwindow->setCenterOnScroll(true); logwindow->setCenterOnScroll(true);
logwindow->moveCursor(QTextCursor::End); logwindow->moveCursor(QTextCursor::End);

View File

@ -18,13 +18,15 @@
#include <QFile> #include <QFile>
#include <QFileDialog> #include <QFileDialog>
#include <QIcon> #include <QIcon>
#include <QKeySequence>
#include <QMenu> #include <QMenu>
#include <QMessageBox> #include <QMessageBox>
#include <QSettings> #include <QSettings>
#include <QString> #include <QString>
#include <QTextStream> #include <QTextStream>
LogWindow::LogWindow(QWidget *parent) : QPlainTextEdit(parent) LogWindow::LogWindow(const QString &_filename, QWidget *parent) :
QPlainTextEdit(parent), filename(_filename)
{ {
QSettings settings; QSettings settings;
resize(settings.value("logx", 500).toInt(), settings.value("logy", 320).toInt()); resize(settings.value("logx", 500).toInt(), settings.value("logy", 320).toInt());
@ -42,10 +44,13 @@ void LogWindow::closeEvent(QCloseEvent *event)
void LogWindow::save_as() void LogWindow::save_as()
{ {
QString fileName = QFileDialog::getSaveFileName(this, "Save Log to File"); QString defaultname = filename + ".log";
if (fileName.isEmpty()) return; 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()); QFile file(path.absoluteFilePath());
if (!file.open(QIODevice::WriteOnly | QFile::Text)) { 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 ...")); auto action = menu->addAction(QString("Save Log to File ..."));
action->setIcon(QIcon(":/icons/document-save-as.png")); action->setIcon(QIcon(":/icons/document-save-as.png"));
connect(action, &QAction::triggered, this, &LogWindow::save_as); 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()); menu->exec(event->globalPos());
delete menu; delete menu;
} }

View File

@ -20,7 +20,7 @@ class LogWindow : public QPlainTextEdit {
Q_OBJECT Q_OBJECT
public: public:
LogWindow(QWidget *parent = nullptr); LogWindow(const QString &filename, QWidget *parent = nullptr);
private slots: private slots:
void save_as(); void save_as();
@ -28,6 +28,9 @@ private slots:
protected: protected:
void closeEvent(QCloseEvent *event) override; void closeEvent(QCloseEvent *event) override;
void contextMenuEvent(QContextMenuEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override;
private:
QString filename;
}; };
#endif #endif