diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index a3a1039308..b507d23f19 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -67,6 +67,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : connect(ui->actionUndo, &QAction::triggered, this, &LammpsGui::undo); connect(ui->actionRedo, &QAction::triggered, this, &LammpsGui::redo); connect(ui->actionRun_Buffer, &QAction::triggered, this, &LammpsGui::run_buffer); + connect(ui->actionStop_LAMMPS, &QAction::triggered, this, &LammpsGui::stop_run); connect(ui->actionAbout_LAMMPS_GUI, &QAction::triggered, this, &LammpsGui::about); #if !QT_CONFIG(clipboard) @@ -237,29 +238,37 @@ void LammpsGui::redo() ui->textEdit->redo(); } +void LammpsGui::stop_run() +{ +#if defined(LAMMPS_GUI_USE_PLUGIN) + ((liblammpsplugin_t *)plugin_handle)->force_timeout(lammps_handle); +#else + lammps_force_timeout(lammps_handle); +#endif +} + void LammpsGui::logupdate() { double t_elapsed, t_remain, t_total; int completed = 1000; - if (is_running) { #if defined(LAMMPS_GUI_USE_PLUGIN) - liblammpsplugin_t *lammps = (liblammpsplugin_t *)plugin_handle; - if (lammps->is_running(lammps_handle)) { - t_elapsed = lammps->get_thermo(lammps_handle, "cpu"); - t_remain = lammps->get_thermo(lammps_handle, "cpuremain"); - t_total = t_elapsed + t_remain + 1.0e-10; - completed = t_elapsed / t_total * 1000.0; - } -#else - if (lammps_is_running(lammps_handle)) { - t_elapsed = lammps_get_thermo(lammps_handle, "cpu"); - t_remain = lammps_get_thermo(lammps_handle, "cpuremain"); - t_total = t_elapsed + t_remain + 1.0e-10; - completed = t_elapsed / t_total * 1000.0; - } -#endif + liblammpsplugin_t *lammps = (liblammpsplugin_t *)plugin_handle; + if (lammps->is_running(lammps_handle)) { + t_elapsed = lammps->get_thermo(lammps_handle, "cpu"); + t_remain = lammps->get_thermo(lammps_handle, "cpuremain"); + t_total = t_elapsed + t_remain + 1.0e-10; + completed = t_elapsed / t_total * 1000.0; } +#else + if (lammps_is_running(lammps_handle)) { + t_elapsed = lammps_get_thermo(lammps_handle, "cpu"); + t_remain = lammps_get_thermo(lammps_handle, "cpuremain"); + t_total = t_elapsed + t_remain + 1.0e-10; + completed = t_elapsed / t_total * 1000.0; + } +#endif + progress->setValue(completed); if (logwindow) { const auto text = capturer->GetChunk(); @@ -283,7 +292,7 @@ void LammpsGui::run_done() logwindow->insertPlainText(log.c_str()); logwindow->moveCursor(QTextCursor::End); - bool success = true; + bool success = true; constexpr int BUFLEN = 1024; char errorbuf[BUFLEN]; @@ -345,6 +354,8 @@ void LammpsGui::run_buffer() logwindow->setMinimumSize(800, 600); QShortcut *shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), logwindow); QObject::connect(shortcut, &QShortcut::activated, logwindow, &QPlainTextEdit::close); + shortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Slash), logwindow); + QObject::connect(shortcut, &QShortcut::activated, this, &LammpsGui::stop_run); logwindow->show(); logupdater = new QTimer(this); diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index c6e768ffed..ebe66f7a8e 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -59,6 +59,7 @@ private slots: void redo(); void clear(); void run_buffer(); + void stop_run(); void about(); void logupdate(); diff --git a/tools/lammps-gui/lammpsgui.ui b/tools/lammps-gui/lammpsgui.ui index b9f4c7deb5..b3f399e3e1 100644 --- a/tools/lammps-gui/lammpsgui.ui +++ b/tools/lammps-gui/lammpsgui.ui @@ -68,15 +68,23 @@ + + + &Run + + + + - + - + + .. &New @@ -93,7 +101,8 @@ - + + .. &Open @@ -110,7 +119,8 @@ - + + .. &Save @@ -127,7 +137,8 @@ - + + .. Save &As @@ -144,7 +155,8 @@ - + + .. &Quit @@ -161,7 +173,8 @@ - + + .. C&ut @@ -175,7 +188,8 @@ - + + .. &Copy @@ -189,7 +203,8 @@ - + + .. &Paste @@ -203,7 +218,8 @@ - + + .. &Undo @@ -217,7 +233,8 @@ - + + .. &Redo @@ -230,6 +247,9 @@ + + + &Run LAMMPS @@ -240,6 +260,20 @@ Ctrl+Return + + + + + + &Stop LAMMPS + + + Stop LAMMPS Process + + + Ctrl+/ + + &About diff --git a/tools/lammps-gui/linenumberarea.h b/tools/lammps-gui/linenumberarea.h index 1d09a82b63..2b8bb3bc55 100644 --- a/tools/lammps-gui/linenumberarea.h +++ b/tools/lammps-gui/linenumberarea.h @@ -21,16 +21,10 @@ class LineNumberArea : public QWidget { public: LineNumberArea(CodeEditor *editor) : QWidget(editor), codeEditor(editor) {} - QSize sizeHint() const override - { - return QSize(codeEditor->lineNumberAreaWidth(), 0); - } + QSize sizeHint() const override { return QSize(codeEditor->lineNumberAreaWidth(), 0); } protected: - void paintEvent(QPaintEvent *event) override - { - codeEditor->lineNumberAreaPaintEvent(event); - } + void paintEvent(QPaintEvent *event) override { codeEditor->lineNumberAreaPaintEvent(event); } private: CodeEditor *codeEditor; diff --git a/tools/lammps-gui/stdcapture.cpp b/tools/lammps-gui/stdcapture.cpp index c1fac5dc3d..053660b050 100644 --- a/tools/lammps-gui/stdcapture.cpp +++ b/tools/lammps-gui/stdcapture.cpp @@ -35,7 +35,7 @@ #include #include -StdCapture::StdCapture() : m_oldStdOut(0), m_capturing(false) +StdCapture::StdCapture() : m_oldStdOut(0), m_capturing(false) { // make stdout unbuffered so that we don't need to flush the stream setvbuf(stdout, NULL, _IONBF, 0); @@ -105,7 +105,7 @@ std::string StdCapture::GetChunk() { if (!m_capturing) return std::string(); int bytesRead = 0; - buf[0] = '\0'; + buf[0] = '\0'; #ifdef _WIN32 if (!eof(m_pipe[READ])) {