From b592542a5bd9b00f0beb86a341ccda8955fd56c5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 19 Aug 2023 16:43:24 -0400 Subject: [PATCH] use more consistent way to update checkboxes and labels by assigning names --- tools/lammps-gui/imageviewer.cpp | 64 ++++++++++++++++---------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/tools/lammps-gui/imageviewer.cpp b/tools/lammps-gui/imageviewer.cpp index 2c6885cdbc..4f94f7a3fc 100644 --- a/tools/lammps-gui/imageviewer.cpp +++ b/tools/lammps-gui/imageviewer.cpp @@ -79,11 +79,13 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge QSettings settings; vdwfactor = 0.4; + auto pix = QPixmap(":/emblem-photos.png"); + auto *renderstatus = new QLabel(QString()); - auto pix = QPixmap(":/emblem-photos.png"); renderstatus->setPixmap(pix.scaled(22, 22, Qt::KeepAspectRatio)); renderstatus->setEnabled(false); renderstatus->setToolTip("Render status"); + renderstatus->setObjectName("renderstatus"); settings.beginGroup("snapshot"); auto *xval = new QSpinBox; xval->setRange(100, 10000); @@ -101,21 +103,27 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge connect(xval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); connect(yval, &QAbstractSpinBox::editingFinished, this, &ImageViewer::edit_size); + auto *dummy = new QLabel(QString()); auto *dossao = new QPushButton(QIcon(":/hd-img.png"), ""); dossao->setCheckable(true); dossao->setToolTip("Toggle SSAO rendering"); + dossao->setObjectName("ssao"); auto *doanti = new QPushButton(QIcon(":/antialias.png"), ""); doanti->setCheckable(true); doanti->setToolTip("Toggle anti-aliasing"); + doanti->setObjectName("antialias"); auto *dovdw = new QPushButton(QIcon(":/vdw-style.png"), ""); dovdw->setCheckable(true); dovdw->setToolTip("Toggle VDW style representation"); + dovdw->setObjectName("vdw"); auto *dobox = new QPushButton(QIcon(":/system-box.png"), ""); dobox->setCheckable(true); dobox->setToolTip("Toggle displaying box"); + doanti->setObjectName("box"); auto *doaxes = new QPushButton(QIcon(":/axes-img.png"), ""); doaxes->setCheckable(true); doaxes->setToolTip("Toggle displaying axes"); + doaxes->setObjectName("axes"); auto *zoomin = new QPushButton(QIcon(":/gtk-zoom-in.png"), ""); zoomin->setToolTip("Zoom in by 10 percent"); auto *zoomout = new QPushButton(QIcon(":/gtk-zoom-out.png"), ""); @@ -133,6 +141,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge auto *combo = new QComboBox; combo->setObjectName("group"); combo->setToolTip("Select group to display"); + combo->setObjectName("group"); int ngroup = lammps->id_count("group"); char gname[64]; for (int i = 0; i < ngroup; ++i) { @@ -147,6 +156,7 @@ ImageViewer::ImageViewer(const QString &fileName, LammpsWrapper *_lammps, QWidge menuLayout->addWidget(xval); menuLayout->addWidget(new QLabel(" Height: ")); menuLayout->addWidget(yval); + menuLayout->addWidget(dummy); menuLayout->addWidget(dossao); menuLayout->addWidget(doanti); menuLayout->addWidget(dovdw); @@ -215,32 +225,25 @@ void ImageViewer::reset_view() antialias = settings.value("antialias", false).toBool(); settings.endGroup(); - // reset state of checkable push buttons and combo box (after main layout is set up) - auto *lo = layout(); - if (lo) { - // grab layout manager for the top bar - lo = lo->itemAt(0)->layout(); + // reset state of checkable push buttons and combo box (if accessible) - auto *field = qobject_cast(lo->itemAt(3)->widget()); - field->setValue(xsize); - field = qobject_cast(lo->itemAt(5)->widget()); - field->setValue(ysize); + auto *field = findChild("xsize"); + if (field) field->setValue(xsize); + field = findChild("ysize"); + if (field) field->setValue(ysize); - auto *button = qobject_cast(lo->itemAt(6)->widget()); - button->setChecked(usessao); - button = qobject_cast(lo->itemAt(7)->widget()); - button->setChecked(antialias); - button = qobject_cast(lo->itemAt(8)->widget()); - button->setChecked(vdwfactor > 1.0); - button = qobject_cast(lo->itemAt(9)->widget()); - button->setChecked(showbox); - button = qobject_cast(lo->itemAt(10)->widget()); - button->setChecked(showaxes); - // grab the last entry -> group selector - auto *cb = qobject_cast(lo->itemAt(lo->count() - 1)->widget()); - cb->setCurrentText("all"); - this->repaint(); - } + auto *button = findChild("ssao"); + if (button) button->setChecked(usessao); + button = findChild("antialias"); + if (button) button->setChecked(antialias); + button = findChild("vdw"); + if (button) button->setChecked(vdwfactor > 1.0); + button = findChild("box"); + if (button) button->setChecked(showbox); + button = findChild("axes"); + if (button) button->setChecked(showaxes); + auto *cb = findChild("combo"); + if (cb) cb->setCurrentText("all"); createImage(); } @@ -349,10 +352,9 @@ void ImageViewer::change_group(int idx) void ImageViewer::createImage() { - auto *lo = layout(); - if (lo) lo = lo->itemAt(0)->layout(); - if (lo) qobject_cast(lo->itemAt(1)->widget())->setEnabled(true); - this->repaint(); + QLabel *renderstatus = findChild("renderstatus"); + if (renderstatus) renderstatus->setEnabled(true); + repaint(); QSettings settings; QString dumpcmd = QString("write_dump ") + group + " image "; @@ -428,8 +430,8 @@ void ImageViewer::createImage() image = newImage.scaled(xsize, ysize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); imageLabel->setPixmap(QPixmap::fromImage(image)); imageLabel->adjustSize(); - if (lo) qobject_cast(lo->itemAt(1)->widget())->setEnabled(false); - this->repaint(); + if (renderstatus) renderstatus->setEnabled(false); + repaint(); } void ImageViewer::saveAs()