From dfcd3f945e94627a4c77d4ec3644ebad12b559b0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 2 Aug 2023 07:02:20 -0400 Subject: [PATCH] first pieces of preferences dialog --- tools/lammps-gui/lammpsgui.cpp | 5 +- tools/lammps-gui/lammpswrapper.cpp | 11 ++--- tools/lammps-gui/preferences.cpp | 78 +++++++++++++++++++++++++++++- tools/lammps-gui/preferences.h | 38 ++++++++++++++- 4 files changed, 119 insertions(+), 13 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 19d4c13dbf..d5f5af16c3 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -69,7 +69,6 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : ui->setupUi(this); this->setCentralWidget(ui->textEdit); highlighter = new Highlighter(ui->textEdit->document()); - prefdialog = new Preferences(this); capturer = new StdCapture; current_file.clear(); current_dir = QDir(".").absolutePath(); @@ -619,8 +618,8 @@ void LammpsGui::manual() void LammpsGui::preferences() { - QString helpmsg = "This is LAMMPS-GUI version " LAMMPS_GUI_VERSION; - QMessageBox::information(this, "LAMMPS-GUI Help", helpmsg); + Preferences prefs(&lammps); + prefs.exec(); } void LammpsGui::start_lammps() diff --git a/tools/lammps-gui/lammpswrapper.cpp b/tools/lammps-gui/lammpswrapper.cpp index a03b47de1f..361a69c784 100644 --- a/tools/lammps-gui/lammpswrapper.cpp +++ b/tools/lammps-gui/lammpswrapper.cpp @@ -19,10 +19,7 @@ #include "library.h" #endif -LammpsWrapper::LammpsWrapper() : - lammps_handle(nullptr), plugin_handle(nullptr) -{ -} +LammpsWrapper::LammpsWrapper() : lammps_handle(nullptr), plugin_handle(nullptr) {} void LammpsWrapper::open(int narg, char **args) { @@ -42,7 +39,7 @@ int LammpsWrapper::extract_setting(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->extract_setting(lammps_handle, keyword); #else - val = lammps_extract_setting(lammps_handle, keyword); + val = lammps_extract_setting(lammps_handle, keyword); #endif } return val; @@ -55,7 +52,7 @@ double LammpsWrapper::get_thermo(const char *keyword) #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->get_thermo(lammps_handle, keyword); #else - val = lammps_get_thermo(lammps_handle, keyword); + val = lammps_get_thermo(lammps_handle, keyword); #endif } return val; @@ -68,7 +65,7 @@ bool LammpsWrapper::is_running() #if defined(LAMMPS_GUI_USE_PLUGIN) val = ((liblammpsplugin_t *)plugin_handle)->is_running(lammps_handle); #else - val = lammps_is_running(lammps_handle); + val = lammps_is_running(lammps_handle); #endif } return val != 0; diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index d29fcd6d1b..9992937052 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -14,6 +14,82 @@ #include "preferences.h" #include +#include +#include +#include +#include +#include #include +#include -Preferences::Preferences(QWidget *parent) : QDialog(parent) {} +#include "lammpswrapper.h" + +Preferences::Preferences(LammpsWrapper *_lammps, QWidget *parent) : + QDialog(parent), tabWidget(new QTabWidget), + buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok)), settings(new QSettings), lammps(_lammps) +{ + tabWidget->addTab(new AcceleratorTab(settings, lammps), "Accelerators"); + tabWidget->addTab(new SnapshotTab(settings), "Snapshot Image"); + + connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); + + auto *layout = new QVBoxLayout; + layout->addWidget(tabWidget); + layout->addWidget(buttonBox); + setLayout(layout); + setWindowTitle("LAMMPS-GUI - Preferences"); + resize(400, 320); +} + +Preferences::~Preferences() +{ + delete buttonBox; + delete tabWidget; + delete settings; +} + +AcceleratorTab::AcceleratorTab(QSettings *_settings, LammpsWrapper *_lammps, QWidget *parent) : + QWidget(parent), settings(_settings), lammps(_lammps) +{ + QGroupBox *accelerator = new QGroupBox("Choose Accelerator"); + QRadioButton *none = new QRadioButton("&None"); + QRadioButton *kokkos = new QRadioButton("&Kokkos"); + QRadioButton *intel = new QRadioButton("&Intel"); + QRadioButton *openmp = new QRadioButton("&OpenMP"); + QRadioButton *opt = new QRadioButton("O&pt"); + + none->setChecked(true); + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(none); + layout->addWidget(kokkos); + layout->addWidget(intel); + layout->addWidget(openmp); + layout->addWidget(opt); + layout->addStretch(1); + setLayout(layout); +} + +SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : + QWidget(parent), settings(_settings) +{ + QGridLayout *grid = new QGridLayout; + + QLabel *xsize = new QLabel("Image width:"); + QLabel *ysize = new QLabel("Image height:"); + QLabel *zoom = new QLabel("Zoom factor:"); + QLineEdit *xval = new QLineEdit(settings->value("xsize", "800").toString()); + QLineEdit *yval = new QLineEdit(settings->value("ysize", "600").toString()); + QLineEdit *zval = new QLineEdit(settings->value("zoom", "1.0").toString()); + + grid->addWidget(xsize, 0, 0); + grid->addWidget(ysize, 1, 0); + grid->addWidget(zoom, 2, 0); + grid->addWidget(xval, 0, 1); + grid->addWidget(yval, 1, 1); + grid->addWidget(zval, 2, 1); + setLayout(grid); +} + +// Local Variables: +// c-basic-offset: 4 +// End: diff --git a/tools/lammps-gui/preferences.h b/tools/lammps-gui/preferences.h index cc15d62ded..4e9117b791 100644 --- a/tools/lammps-gui/preferences.h +++ b/tools/lammps-gui/preferences.h @@ -16,17 +16,51 @@ #include -class QTabWidget; class QDialogButtonBox; +class QSettings; +class QTabWidget; +class LammpsWrapper; class Preferences : public QDialog { Q_OBJECT public: - explicit Preferences(QWidget *parent = nullptr); + explicit Preferences(LammpsWrapper *lammps, QWidget *parent = nullptr); + ~Preferences() override; private: QTabWidget *tabWidget; QDialogButtonBox *buttonBox; + QSettings *settings; + LammpsWrapper *lammps; }; + +// individual tabs + +class AcceleratorTab : public QWidget { + Q_OBJECT + +public: + explicit AcceleratorTab(QSettings *settings, LammpsWrapper *lammps, QWidget *parent = nullptr); + enum { None, Intel, Kokkos, OpenMP, Opt }; + +private: + QSettings *settings; + LammpsWrapper *lammps; +}; + +class SnapshotTab : public QWidget { + Q_OBJECT + +public: + explicit SnapshotTab(QSettings *settings, QWidget *parent = nullptr); + +private: + QSettings *settings; +}; + #endif + +// Local Variables: +// c-basic-offset: 4 +// End: