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 @@
+
-
+
-
+
+ ..
&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])) {