From de699f81c56d4ebdd2a887a56e2607f31e7f5768 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 2 Apr 2022 12:14:42 +0200 Subject: [PATCH] Gui: automatically apply changes made in color gradient dialog --- src/Gui/DlgSettingsColorGradientImp.cpp | 21 +++++++++++++++++++++ src/Gui/SoFCColorGradient.cpp | 18 +++++++++++++----- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/Gui/DlgSettingsColorGradientImp.cpp b/src/Gui/DlgSettingsColorGradientImp.cpp index ad5e09c77a..28fba63a20 100644 --- a/src/Gui/DlgSettingsColorGradientImp.cpp +++ b/src/Gui/DlgSettingsColorGradientImp.cpp @@ -23,6 +23,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include +# include # include # include # include @@ -76,7 +77,27 @@ DlgSettingsColorGradientImp::~DlgSettingsColorGradientImp() void DlgSettingsColorGradientImp::setupConnections() { + QButtonGroup* group = new QButtonGroup(this); + group->setExclusive(true); + group->addButton(ui->radioButtonFlow); + group->addButton(ui->radioButtonZero); + connect(group, qOverload(&QButtonGroup::buttonClicked), + this, &DlgSettingsColorGradientImp::colorModelChanged); + connect(ui->comboBoxModel, qOverload(&QComboBox::currentIndexChanged), + this, &DlgSettingsColorGradientImp::colorModelChanged); + + connect(ui->checkBoxGrayed, &QCheckBox::toggled, + this, &DlgSettingsColorGradientImp::colorModelChanged); + + connect(ui->checkBoxInvisible, &QCheckBox::toggled, + this, &DlgSettingsColorGradientImp::colorModelChanged); + + connect(ui->floatLineEditMax, &QLineEdit::editingFinished, + this, &DlgSettingsColorGradientImp::colorModelChanged); + + connect(ui->floatLineEditMin, &QLineEdit::editingFinished, + this, &DlgSettingsColorGradientImp::colorModelChanged); } App::ColorGradientProfile DlgSettingsColorGradientImp::getProfile() const diff --git a/src/Gui/SoFCColorGradient.cpp b/src/Gui/SoFCColorGradient.cpp index 0c0c37837e..a976354462 100644 --- a/src/Gui/SoFCColorGradient.cpp +++ b/src/Gui/SoFCColorGradient.cpp @@ -298,20 +298,28 @@ void SoFCColorGradient::customize(SoFCColorBarBase* parentNode) { QWidget* parent = Gui::getMainWindow()->activeWindow(); Gui::Dialog::DlgSettingsColorGradientImp dlg(_cColGrad, parent); - //App::ColorGradientProfile profile = _cColGrad.getProfile(); + App::ColorGradientProfile profile = _cColGrad.getProfile(); dlg.setNumberOfDecimals(_precision); QPoint pos(QCursor::pos()); pos += QPoint(int(-1.1 * dlg.width()), int(-0.1 * dlg.height())); dlg.move(pos); - if (dlg.exec() == QDialog::Accepted) { - App::ColorGradientProfile profileMod = dlg.getProfile(); - _cColGrad.setProfile(profileMod); + auto applyProfile = [&](const App::ColorGradientProfile& pro) { + _cColGrad.setProfile(pro); _precision = dlg.numberOfDecimals(); - setRange(profileMod.fMin, profileMod.fMax, _precision); + setRange(pro.fMin, pro.fMax, _precision); rebuildGradient(); triggerChange(parentNode); + }; + QObject::connect(&dlg, &Gui::Dialog::DlgSettingsColorGradientImp::colorModelChanged, + [&] { + applyProfile(dlg.getProfile()); + }); + + if (dlg.exec() != QDialog::Accepted) { + if (!profile.isEqual(dlg.getProfile())) + applyProfile(profile); } }