void ABCIntervalIntWidget::setValue(const ABCInterval<int> &value) { ABCInterval<int> oldValue = this->value(); if (value != oldValue) { blockSignals(true); if (value.isFixedValue()) { ui->ABC->setChecked(false); ui->stackedWidget->setCurrentWidget(ui->singleValuePage); ui->singleValue->setValue(value.firstBound()); } else { ui->ABC->setChecked(true); ui->stackedWidget->setCurrentWidget(ui->intervalPage); ui->firstBound->setValue(value.firstBound()); ui->secondBound->setValue(value.secondBound()); ui->distribution->setCurrentIndex(value.distribution()); } blockSignals(false); ABCInterval<int> newValue = this->value(); // Signals emmiting if (newValue.isFixedValue()) { emit singleValueChanged(newValue.minimum()); } else { if (newValue.firstBound() != oldValue.firstBound()) { emit firstBoundChanged(newValue.firstBound()); } if (newValue.secondBound() != oldValue.secondBound()) { emit secondBoundChanged(newValue.secondBound()); } if (newValue.distribution() != newValue.distribution()) { emit distributionChanged(newValue.distribution()); } } emit valueChanged(newValue); } }
void ABCIntervalIntWidget::on_distribution_currentIndexChanged(int index) { emit distributionChanged(index); emit valueChanged(this->value()); }
RandomDistributionDialog::RandomDistributionDialog(QWidget *parent) : QDialog(parent), ui_(new Ui_RandomDistributionDialog) { ui_->setupUi(this); setWindowIcon(IconLoader::load("edit-random-dist", IconLoader::LightDark)); ui_->distFormulaLabel->setAlignment(Qt::AlignCenter); setModal(true); // Theaming based pixmap loading (IconLoader::lumen_ < 100) ? distFormulaPath = QString(":icons/dark/distribution/") : distFormulaPath = QString(":icons/light/distribution/"); // Set layout margins ui_->verticalLayout->setContentsMargins(3, 3, 3, 3); ui_->gridLayout->setContentsMargins(0, 0, 0, 0); // Add distributions ui_->distComboBox->addItem(tr("Gaussian Distribution"), Gaussian); // ui_->distComboBox->addItem(tr("Gaussian Tail Distribution")); ui_->distComboBox->addItem(tr("Exponential Distribution"), Exponential); ui_->distComboBox->addItem(tr("Laplace Distribution"), Laplace); ui_->distComboBox->addItem(tr("Exponential Power Distribution"), ExponentialPower); ui_->distComboBox->addItem(tr("Cauchy Distribution"), Cauchy); ui_->distComboBox->addItem(tr("Rayleigh Distribution"), Rayleigh); ui_->distComboBox->addItem(tr("Rayleigh Tail Distribution"), RayleighTail); ui_->distComboBox->addItem(tr("Landau Distribution"), Landau); ui_->distComboBox->addItem(tr("Levy alpha-stable Distribution"), LevyAlphaStable); ui_->distComboBox->addItem(tr("Levy skew alpha-stable Distribution"), LevySkewAlphaStable); ui_->distComboBox->addItem(tr("Gamma Distribution"), Gamma); ui_->distComboBox->addItem(tr("Flat (Uniform) Distribution"), Flat); ui_->distComboBox->addItem(tr("Lognormal Distribution"), Lognormal); ui_->distComboBox->addItem(tr("Chi-squared Distribution"), ChiSquared); /*ui_->distComboBox->addItem(tr("F-distribution"), F); ui_->distComboBox->addItem(tr("t-distribution"), t); ui_->distComboBox->addItem(tr("Beta Distribution"), Beta); ui_->distComboBox->addItem(tr("Logistic Distribution"), Logistic); ui_->distComboBox->addItem(tr("Pareto Distribution"), Pareto); // ui_->distComboBox->addItem(tr("Spherical Vector Distributions")); ui_->distComboBox->addItem(tr("Weibull Distribution"), Weibull); ui_->distComboBox->addItem(tr("Type-1 Gumbel Distribution"), Gumbel1); ui_->distComboBox->addItem(tr("Type-2 Gumbel Distribution"), Gumbel2); // ui_->distComboBox->addItem(tr("Dirichlet Distribution")); // ui_->distComboBox->addItem(tr("General Discrete Distributions")); ui_->distComboBox->addItem(tr("Poisson Distribution"), Poisson); ui_->distComboBox->addItem(tr("Bernoulli Distribution"), Bernoulli); ui_->distComboBox->addItem(tr("Binomial Distribution"), Binomial); // ui_->distComboBox->addItem(tr("Multinomial Distribution")); ui_->distComboBox->addItem(tr("Negative Binomial Distribution"), NegativeBinomial); ui_->distComboBox->addItem(tr("Pascal Distribution"), Pascal); ui_->distComboBox->addItem(tr("Geometric Distribution"), Geometric); ui_->distComboBox->addItem(tr("Hypergeometric Distribution"), Hypergeometric); ui_->distComboBox->addItem(tr("Logarithmic Distribution"), Logarithmic);*/ // Load settings QSettings settings; settings.beginGroup("General"); int distIndex = settings.value("RandomDistribution", 0).toInt(); ui_->distComboBox->setCurrentIndex(distIndex); distributionChanged(distIndex); ui_->parameter1DbleSpinBox->setValue( settings.value("RandomDistributionParam-1").toDouble()); ui_->parameter2DbleSpinBox->setValue( settings.value("RandomDistributionParam-2").toDouble()); ui_->parameter3DbleSpinBox->setValue( settings.value("RandomDistributionParam-3").toDouble()); settings.endGroup(); // set parameter bounds (move to switch case for more control) ui_->parameter1DbleSpinBox->setMinimum(-INFINITY); ui_->parameter1DbleSpinBox->setMaximum(std::numeric_limits<double>::max()); ui_->parameter2DbleSpinBox->setMinimum(-INFINITY); ui_->parameter2DbleSpinBox->setMaximum(std::numeric_limits<double>::max()); ui_->parameter3DbleSpinBox->setMinimum(-INFINITY); ui_->parameter3DbleSpinBox->setMaximum(std::numeric_limits<double>::max()); // Slot connections connect(ui_->distComboBox, SIGNAL(currentIndexChanged(int)), SLOT(distributionChanged(int))); connect(ui_->randomDistributionButtonBox, SIGNAL(accepted()), SLOT(ok())); connect(ui_->randomDistributionButtonBox, SIGNAL(rejected()), SLOT(cancel())); }