diff --git a/tools/lammps-gui/antialias.png b/tools/lammps-gui/antialias.png new file mode 100644 index 0000000000..1a7403e11c Binary files /dev/null and b/tools/lammps-gui/antialias.png differ diff --git a/tools/lammps-gui/axes-img.png b/tools/lammps-gui/axes-img.png new file mode 100644 index 0000000000..29ede4787e Binary files /dev/null and b/tools/lammps-gui/axes-img.png differ diff --git a/tools/lammps-gui/chartviewer.cpp b/tools/lammps-gui/chartviewer.cpp index 94a89c565d..6d9bb02302 100644 --- a/tools/lammps-gui/chartviewer.cpp +++ b/tools/lammps-gui/chartviewer.cpp @@ -31,14 +31,14 @@ ChartWindow::ChartWindow(const QString &_filename, QWidget *parent) : columns = new QComboBox; top->addWidget(menu); top->addWidget(columns); - saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); + saveAsAct = file->addAction("&Save Graph As...", this, &ChartWindow::saveAs); saveAsAct->setIcon(QIcon(":/document-save-as.png")); exportCsvAct = file->addAction("&Export data to CSV...", this, &ChartWindow::exportCsv); exportCsvAct->setIcon(QIcon(":/application-calc.png")); exportDatAct = file->addAction("Export data to &Gnuplot...", this, &ChartWindow::exportDat); exportDatAct->setIcon(QIcon(":/application-plot.png")); file->addSeparator(); - closeAct = file->addAction("&Close", this, &QWidget::close); + closeAct = file->addAction("&Close", this, &QWidget::close); closeAct->setIcon(QIcon(":/window-close.png")); auto *layout = new QVBoxLayout; layout->addLayout(top); diff --git a/tools/lammps-gui/hd-img.png b/tools/lammps-gui/hd-img.png new file mode 100644 index 0000000000..906e4d605d Binary files /dev/null and b/tools/lammps-gui/hd-img.png differ diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 737c117360..3f8c5da1d9 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -58,6 +58,14 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QVBoxLayout *mainLayout = new QVBoxLayout; + auto *dossao = new QPushButton(QIcon(":/hd-img.png"), ""); + dossao->setCheckable(true); + auto *doanti = new QPushButton(QIcon(":/antialias.png"), ""); + doanti->setCheckable(true); + auto *dobox = new QPushButton(QIcon(":/system-box.png"), ""); + dobox->setCheckable(true); + auto *doaxes = new QPushButton(QIcon(":/axes-img.png"), ""); + doaxes->setCheckable(true); auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); auto *rotleft = new QPushButton(QIcon(":/object-rotate-left.png"), ""); @@ -75,6 +83,10 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QHBoxLayout *menuLayout = new QHBoxLayout; menuLayout->addWidget(menuBar); + menuLayout->addWidget(dossao); + menuLayout->addWidget(doanti); + menuLayout->addWidget(dobox); + menuLayout->addWidget(doaxes); menuLayout->addWidget(zoomin); menuLayout->addWidget(zoomout); menuLayout->addWidget(rotleft); @@ -84,6 +96,10 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(new QLabel(" Group: ")); menuLayout->addWidget(combo); + connect(dossao, &QPushButton::released, this, &ImageViewer::toggle_ssao); + connect(doanti, &QPushButton::released, this, &ImageViewer::toggle_anti); + connect(dobox, &QPushButton::released, this, &ImageViewer::toggle_box); + connect(doaxes, &QPushButton::released, this, &ImageViewer::toggle_axes); connect(zoomin, &QPushButton::released, this, &ImageViewer::do_zoom_in); connect(zoomout, &QPushButton::released, this, &ImageViewer::do_zoom_out); connect(rotleft, &QPushButton::released, this, &ImageViewer::do_rot_left); @@ -99,9 +115,13 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QSettings settings; settings.beginGroup("snapshot"); - zoom = settings.value("zoom", 1.0).toDouble(); - hrot = settings.value("hrot", 60).toInt(); - vrot = settings.value("vrot", 30).toInt(); + zoom = settings.value("zoom", 1.0).toDouble(); + hrot = settings.value("hrot", 60).toInt(); + vrot = settings.value("vrot", 30).toInt(); + showbox = settings.value("box", true).toBool(); + dobox->setChecked(showbox); + showaxes = settings.value("axes", false).toBool(); + doaxes->setChecked(showaxes); settings.endGroup(); createActions(); @@ -117,6 +137,38 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge setLayout(mainLayout); } +void ImageViewer::toggle_ssao() +{ + QPushButton *button = qobject_cast(sender()); + usessao = !usessao; + button->setChecked(usessao); + createImage(); +} + +void ImageViewer::toggle_anti() +{ + QPushButton *button = qobject_cast(sender()); + antialias = !antialias; + button->setChecked(antialias); + createImage(); +} + +void ImageViewer::toggle_box() +{ + QPushButton *button = qobject_cast(sender()); + showbox = !showbox; + button->setChecked(showbox); + createImage(); +} + +void ImageViewer::toggle_axes() +{ + QPushButton *button = qobject_cast(sender()); + showaxes = !showaxes; + button->setChecked(showaxes); + createImage(); +} + void ImageViewer::do_zoom_in() { zoom = zoom * 1.1; @@ -175,7 +227,7 @@ void ImageViewer::createImage() dumpcmd += dumpfile.fileName(); settings.beginGroup("snapshot"); - int aa = settings.value("antialias", 0).toInt() + 1; + int aa = antialias ? 2 : 1; int xsize = settings.value("xsize", 800).toInt() * aa; int ysize = settings.value("ysize", 600).toInt() * aa; int hhrot = (hrot > 180) ? 360 - hrot : hrot; @@ -188,16 +240,18 @@ void ImageViewer::createImage() if (lammps->extract_setting("dimension") == 3) { dumpcmd += QString(" view ") + QString::number(hhrot) + blank + QString::number(vrot); } - if (settings.value("ssao", false).toBool()) dumpcmd += QString(" ssao yes 453983 0.6"); - if (settings.value("box", true).toBool()) - dumpcmd += QString(" box yes 0.02"); + if (usessao) dumpcmd += QString(" ssao yes 453983 0.75"); + if (showbox) + dumpcmd += QString(" box yes 0.025"); else dumpcmd += QString(" box no 0.0"); - if (settings.value("axes", true).toBool()) - dumpcmd += QString(" axes yes 0.2 0.02"); + + if (showaxes) + dumpcmd += QString(" axes yes 0.2 0.025"); else dumpcmd += QString(" axes no 0.0 0.0"); + dumpcmd += " modify boxcolor silver"; settings.endGroup(); lammps->command(dumpcmd.toLocal8Bit()); diff --git a/tools/lammps-gui/imageviewer.h b/tools/lammps-gui/imageviewer.h index 5319ffc6b2..1a4327561b 100644 --- a/tools/lammps-gui/imageviewer.h +++ b/tools/lammps-gui/imageviewer.h @@ -45,6 +45,10 @@ private slots: void normalSize(); void fitToWindow(); + void toggle_ssao(); + void toggle_anti(); + void toggle_box(); + void toggle_axes(); void do_zoom_in(); void do_zoom_out(); void do_rot_left(); @@ -83,6 +87,7 @@ private: QString filename; int hrot, vrot; double zoom; + bool showbox, showaxes, antialias, usessao; }; #endif diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index ebbd563d7e..1a27b7c743 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -179,8 +179,8 @@ LammpsGui::LammpsGui(QWidget *parent, const char *filename) : #endif lammpsstatus = new QLabel(QString()); - auto pix = QPixmap(":/lammps-icon-128x128.png"); - lammpsstatus->setPixmap(pix.scaled(22,22,Qt::KeepAspectRatio)); + auto pix = QPixmap(":/lammps-icon-128x128.png"); + lammpsstatus->setPixmap(pix.scaled(22, 22, Qt::KeepAspectRatio)); ui->statusbar->addWidget(lammpsstatus); lammpsstatus->hide(); status = new QLabel("Ready."); @@ -935,9 +935,10 @@ void LammpsGui::preferences() if ((oldaccel != settings.value("accelerator", AcceleratorTab::None).toInt()) || (oldthreads != settings.value("nthreads", 1).toInt()) || (oldecho != settings.value("echo", 0).toInt()) || - (oldcite != settings.value("cite", 0).toInt())) + (oldcite != settings.value("cite", 0).toInt())) { lammps.close(); lammpsstatus->hide(); + } if (imagewindow) imagewindow->createImage(); } } diff --git a/tools/lammps-gui/lammpsgui.qrc b/tools/lammps-gui/lammpsgui.qrc index 818d24bb87..d718634452 100644 --- a/tools/lammps-gui/lammpsgui.qrc +++ b/tools/lammps-gui/lammpsgui.qrc @@ -37,5 +37,9 @@ window-close.png application-plot.png application-calc.png + system-box.png + axes-img.png + hd-img.png + antialias.png diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index a35d8713e4..f003545764 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -112,9 +112,9 @@ void Preferences::accept() field = tabWidget->findChild("zoom"); if (field) if (field->hasAcceptableInput()) settings->setValue("zoom", field->text()); - QComboBox *combo = tabWidget->findChild("anti"); - if (combo) settings->setValue("antialias", combo->currentIndex()); - QCheckBox *box = tabWidget->findChild("ssao"); + QCheckBox *box = tabWidget->findChild("anti"); + if (box) settings->setValue("antialias", box->isChecked()); + box = tabWidget->findChild("ssao"); if (box) settings->setValue("ssao", box->isChecked()); box = tabWidget->findChild("box"); if (box) settings->setValue("box", box->isChecked()); @@ -371,17 +371,13 @@ SnapshotTab::SnapshotTab(QSettings *_settings, QWidget *parent) : auto *xval = new QLineEdit(settings->value("xsize", "800").toString()); auto *yval = new QLineEdit(settings->value("ysize", "600").toString()); auto *zval = new QLineEdit(settings->value("zoom", "1.0").toString()); - auto *aval = new QComboBox; + auto *aval = new QCheckBox; auto *sval = new QCheckBox; auto *bval = new QCheckBox; auto *eval = new QCheckBox; sval->setCheckState(settings->value("ssao", false).toBool() ? Qt::Checked : Qt::Unchecked); sval->setObjectName("ssao"); - aval->addItem("1x", 1); - aval->addItem("2x", 2); - aval->addItem("3x", 3); - aval->addItem("4x", 4); - aval->setCurrentIndex(settings->value("antialias", "0").toInt()); + aval->setCheckState(settings->value("antialias", false).toBool() ? Qt::Checked : Qt::Unchecked); aval->setObjectName("anti"); bval->setCheckState(settings->value("box", true).toBool() ? Qt::Checked : Qt::Unchecked); bval->setObjectName("box"); diff --git a/tools/lammps-gui/system-box.png b/tools/lammps-gui/system-box.png new file mode 100644 index 0000000000..baa5595d27 Binary files /dev/null and b/tools/lammps-gui/system-box.png differ