diff --git a/tools/lammps-gui/TODO.md b/tools/lammps-gui/TODO.md index bef30c1309..0ebb24eac1 100644 --- a/tools/lammps-gui/TODO.md +++ b/tools/lammps-gui/TODO.md @@ -4,6 +4,7 @@ LAMMPS-GUI TODO list: - figure out how widgets can be resized to fraction of available screen size. - figure out stacking order of frames and whether it can be more flexible +- figure out how to avoid corrupted cached thermo data while reading it. - bundle LAMMPS tutorial input files - implement indenting regions for (nested) loops? diff --git a/tools/lammps-gui/codeeditor.cpp b/tools/lammps-gui/codeeditor.cpp index 36a811b92d..10d829d34c 100644 --- a/tools/lammps-gui/codeeditor.cpp +++ b/tools/lammps-gui/codeeditor.cpp @@ -14,6 +14,7 @@ #include "codeeditor.h" #include "fileviewer.h" #include "lammpsgui.h" +#include "lammpswrapper.h" #include "linenumberarea.h" #include @@ -146,6 +147,7 @@ CodeEditor::CodeEditor(QWidget *parent) : { help_action = new QShortcut(QKeySequence::fromString("Ctrl+?"), parent); connect(help_action, &QShortcut::activated, this, &CodeEditor::get_help); + docver = ""; // set up completer class (without a model currently) #define COMPLETER_SETUP(completer) \ @@ -1159,12 +1161,30 @@ void CodeEditor::insertCompletedCommand(const QString &completion) setTextCursor(cursor); } +void CodeEditor::setDocver() +{ + LammpsWrapper *lammps = &qobject_cast(parent())->lammps; + docver = "/"; + if (lammps) { + QString git_branch = (const char *)lammps->extract_global("git_branch"); + if ((git_branch == "stable") || (git_branch == "maintenance")) { + docver = "/stable/"; + } else if (git_branch == "release") { + docver = "/"; + } else { + docver = "/latest/"; + } + } +} + void CodeEditor::get_help() { QString page, help; find_help(page, help); + if (docver.isEmpty()) setDocver(); if (!page.isEmpty()) - QDesktopServices::openUrl(QUrl(QString("https://docs.lammps.org/%1").arg(page))); + QDesktopServices::openUrl( + QUrl(QString("https://docs.lammps.org%1%2").arg(docver).arg(page))); } void CodeEditor::find_help(QString &page, QString &help) @@ -1215,8 +1235,9 @@ void CodeEditor::find_help(QString &page, QString &help) void CodeEditor::open_help() { auto *act = qobject_cast(sender()); + if (docver.isEmpty()) setDocver(); QDesktopServices::openUrl( - QUrl(QString("https://docs.lammps.org/%1").arg(act->data().toString()))); + QUrl(QString("https://docs.lammps.org%1%2").arg(docver).arg(act->data().toString()))); } void CodeEditor::open_url() diff --git a/tools/lammps-gui/codeeditor.h b/tools/lammps-gui/codeeditor.h index 873b13e302..17236e3252 100644 --- a/tools/lammps-gui/codeeditor.h +++ b/tools/lammps-gui/codeeditor.h @@ -79,6 +79,7 @@ protected: void dropEvent(QDropEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override; void keyPressEvent(QKeyEvent *event) override; + void setDocver(); private slots: void updateLineNumberAreaWidth(int newBlockCount); @@ -107,6 +108,7 @@ private: int highlight; bool reformat_on_return; bool automatic_completion; + QString docver; QMap cmd_map; QMap fix_map; diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 1d29e60222..0eb24b81f7 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -75,6 +75,7 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : qRegisterMetaTypeStreamOperators>("QList"); #endif + docver = ""; ui->setupUi(this); this->setCentralWidget(ui->textEdit); highlighter = new Highlighter(ui->textEdit->document()); @@ -1218,6 +1219,18 @@ void LammpsGui::view_variables() } } +void LammpsGui::setDocver() +{ + QString git_branch = (const char *)lammps.extract_global("git_branch"); + if ((git_branch == "stable") || (git_branch == "maintenance")) { + docver = "/stable/"; + } else if (git_branch == "release") { + docver = "/"; + } else { + docver = "/latest/"; + } +} + void LammpsGui::about() { std::string version = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; @@ -1329,7 +1342,8 @@ void LammpsGui::help() void LammpsGui::manual() { - QDesktopServices::openUrl(QUrl("https://docs.lammps.org/")); + if (docver.isEmpty()) setDocver(); + QDesktopServices::openUrl(QUrl(QString("https://docs.lammps.org%1").arg(docver))); } void LammpsGui::tutorial() @@ -1339,7 +1353,9 @@ void LammpsGui::tutorial() void LammpsGui::howto() { - QDesktopServices::openUrl(QUrl("https://docs.lammps.org/Howto_lammps_gui.html")); + if (docver.isEmpty()) setDocver(); + QDesktopServices::openUrl( + QUrl(QString("https://docs.lammps.org%1Howto_lammps_gui.html").arg(docver))); } void LammpsGui::defaults() diff --git a/tools/lammps-gui/lammpsgui.h b/tools/lammps-gui/lammpsgui.h index 29372efc1c..77f0e60366 100644 --- a/tools/lammps-gui/lammpsgui.h +++ b/tools/lammps-gui/lammpsgui.h @@ -69,6 +69,7 @@ protected: void do_run(bool use_buffer); void start_lammps(); void run_done(); + void setDocver(); public slots: void quit(); @@ -132,6 +133,7 @@ private: LammpsWrapper lammps; LammpsRunner *runner; + QString docver; std::string plugin_path; bool is_running; int run_counter;