Gui: automatically apply changes made in color gradient dialog
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user