Gui: automatically apply changes made in color gradient dialog

This commit is contained in:
wmayer
2022-04-02 12:14:42 +02:00
parent 9500706d6f
commit 027fb07743
2 changed files with 34 additions and 5 deletions

View File

@@ -23,6 +23,7 @@
#include "PreCompiled.h"
#ifndef _PreComp_
# include <cmath>
# include <QButtonGroup>
# include <QDoubleValidator>
# include <QFontMetrics>
# include <QLocale>
@@ -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<int>(&QButtonGroup::buttonClicked),
this, &DlgSettingsColorGradientImp::colorModelChanged);
connect(ui->comboBoxModel, qOverload<int>(&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

View File

@@ -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);
}
}