AbstractMicrostructurePresetFactory::Pointer RegisterPresetFactory(QComboBox* microstructurePresetCombo) { AbstractMicrostructurePresetFactory::Pointer presetFactory = T::New(); MicrostructurePresetManager::registerFactory(presetFactory); QString displayString = (presetFactory->displayName()); microstructurePresetCombo->addItem(displayString); return presetFactory; }
// ----------------------------------------------------------------------------- // Static Method // ----------------------------------------------------------------------------- void MicrostructurePresetManager::registerFactory(AbstractMicrostructurePresetFactory::Pointer importer) { if (NULL != importer.get() ) { // Instantiate the Instance Manager for import delegates MicrostructurePresetManager::Pointer idManager = MicrostructurePresetManager::instance(); idManager->addFactory( importer ); } }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void PrecipitatePhaseWidget::setupGui() { distributionTypeCombo->addItem(SIMPL::StringConstants::BetaDistribution.toLatin1().data()); distributionTypeCombo->addItem(SIMPL::StringConstants::LogNormalDistribution.toLatin1().data()); distributionTypeCombo->addItem(SIMPL::StringConstants::PowerLawDistribution.toLatin1().data()); distributionTypeCombo->setCurrentIndex(SIMPL::DistributionType::LogNormal); // Turn off all the plot widgets setTabsPlotTabsEnabled(false); microstructurePresetCombo->blockSignals(true); // Register all of our Microstructure Preset Factories AbstractMicrostructurePresetFactory::Pointer presetFactory = AbstractMicrostructurePresetFactory::NullPointer(); //Register the Equiaxed Preset presetFactory = RegisterPresetFactory<PrecipitateEquiaxedPresetFactory>(microstructurePresetCombo); QString presetName = (presetFactory->displayName()); MicrostructurePresetManager::Pointer manager = MicrostructurePresetManager::instance(); m_MicroPreset = manager->createNewPreset(presetName); // Register the Rolled Preset presetFactory = RegisterPresetFactory<PrecipitateRolledPresetFactory>(microstructurePresetCombo); // Select the first Preset in the list microstructurePresetCombo->setCurrentIndex(0); microstructurePresetCombo->blockSignals(false); float mu = 1.0f; float sigma = 0.1f; float minCutOff = 5.0f; float maxCutOff = 5.0f; float binStepSize = 0.5f; StatsGenPlotWidget* w = m_Omega3Plot; w->setPlotTitle(QString("Size Vs. Omega 3")); w->setXAxisName(QString("Omega 3")); w->setYAxisName(QString("Frequency")); w->setDistributionType(SIMPL::DistributionType::Beta); w->setStatisticsType(SIMPL::StatisticsType::Feature_SizeVOmega3); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_Omega3Plot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); connect(m_Omega3Plot, SIGNAL(userEditedData()), this, SIGNAL(phaseParametersChanged())); w = m_BOverAPlot; w->setPlotTitle(QString("B/A Shape Distribution")); w->setXAxisName(QString("B/A")); w->setYAxisName(QString("Frequency")); w->setDistributionType(SIMPL::DistributionType::Beta); w->setStatisticsType(SIMPL::StatisticsType::Feature_SizeVBoverA); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_BOverAPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); connect(m_BOverAPlot, SIGNAL(userEditedData()), this, SIGNAL(phaseParametersChanged())); w = m_COverAPlot; w->setPlotTitle(QString("C/A Shape Distribution")); w->setXAxisName(QString("C/A")); w->setYAxisName(QString("Frequency")); w->setDistributionType(SIMPL::DistributionType::Beta); w->setStatisticsType(SIMPL::StatisticsType::Feature_SizeVCoverA); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_COverAPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); connect(m_COverAPlot, SIGNAL(userEditedData()), this, SIGNAL(phaseParametersChanged())); m_SizeDistributionPlot->setCanvasBackground(QColor(Qt::white)); m_SizeDistributionPlot->setTitle("Size Distribution"); m_grid = new QwtPlotGrid; m_grid->enableXMin(true); m_grid->enableYMin(true); #if (QWT_VERSION > 0x060000) m_grid->setMajorPen(QPen(Qt::gray, 0, Qt::SolidLine)); m_grid->setMinorPen(QPen(Qt::lightGray, 0, Qt::DotLine)); #else m_grid->setMajPen(QPen(Qt::gray, 0, Qt::SolidLine)); m_grid->setMinPen(QPen(Qt::lightGray, 0, Qt::DotLine)); #endif m_grid->attach(m_SizeDistributionPlot); // For the ODF Tab we want the MDF functionality m_ODFWidget->enableMDFTab(true); // Remove any Axis Decorations. The plots are explicitly know to have a -1 to 1 axis min/max m_ODFWidget->setEnableAxisDecorations(false); // Remove any Axis Decorations. The plots are explicitly know to have a -1 to 1 axis min/max m_AxisODFWidget->setEnableAxisDecorations(false); connect(m_ODFWidget, SIGNAL(odfParametersChanged()), this, SIGNAL(phaseParametersChanged())); connect(m_ODFWidget, SIGNAL(bulkLoadEvent(bool)), this, SLOT(bulkLoadEvent(bool))); connect(m_AxisODFWidget, SIGNAL(axisODFParametersChanged()), this, SIGNAL(phaseParametersChanged())); connect(m_RdfPlot, SIGNAL(rdfParametersChanged()), this, SIGNAL(phaseParametersChanged())); updateSizeDistributionPlot(); calculateNumberOfBins(); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void TransformationPhaseWidget::setupGui() { distributionTypeCombo->addItem(DREAM3D::HDF5::BetaDistribution.c_str()); distributionTypeCombo->addItem(DREAM3D::HDF5::LogNormalDistribution.c_str()); distributionTypeCombo->addItem(DREAM3D::HDF5::PowerLawDistribution.c_str()); distributionTypeCombo->setCurrentIndex(DREAM3D::DistributionType::LogNormal); // Turn off all the plot widgets setTabsPlotTabsEnabled(false); microstructurePresetCombo->blockSignals(true); // Register all of our Microstructure Preset Factories AbstractMicrostructurePresetFactory::Pointer presetFactory = AbstractMicrostructurePresetFactory::NullPointer(); //Register the Equiaxed Preset presetFactory = RegisterPresetFactory<EquiaxedPresetFactory>(microstructurePresetCombo); QString presetName = QString::fromStdString(presetFactory->displayName()); MicrostructurePresetManager::Pointer manager = MicrostructurePresetManager::instance(); m_MicroPreset = manager->createNewPreset(presetName.toStdString()); // Register the Rolled Preset presetFactory = RegisterPresetFactory<RolledPresetFactory>(microstructurePresetCombo); // Select the first Preset in the list microstructurePresetCombo->setCurrentIndex(0); microstructurePresetCombo->blockSignals(false); float mu = 1.0f; float sigma = 0.1f; float minCutOff = 5.0f; float maxCutOff = 5.0f; float binStepSize = 0.5f; StatsGenPlotWidget* w = m_Omega3Plot; w->setPlotTitle(QString("Size Vs. Omega 3")); w->setXAxisName(QString("Omega 3")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::Beta); w->setStatisticsType(DREAM3D::StatisticsType::Grain_SizeVOmega3); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_Omega3Plot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); w = m_BOverAPlot; w->setPlotTitle(QString("B/A Shape Distribution")); w->setXAxisName(QString("B/A")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::Beta); w->setStatisticsType(DREAM3D::StatisticsType::Grain_SizeVBoverA); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_BOverAPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); w = m_COverAPlot; w->setPlotTitle(QString("C/A Shape Distribution")); w->setXAxisName(QString("C/A")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::Beta); w->setStatisticsType(DREAM3D::StatisticsType::Grain_SizeVCoverA); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_COverAPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); w = m_NeighborPlot; w->setPlotTitle(QString("Neighbors Distributions")); w->setXAxisName(QString("Number of Grains (within 1 diameter)")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::LogNormal); w->setStatisticsType(DREAM3D::StatisticsType::Grain_SizeVNeighbors); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_NeighborPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); m_SizeDistributionPlot->setCanvasBackground(QColor(Qt::white)); m_SizeDistributionPlot->setTitle("Size Distribution"); m_grid = new QwtPlotGrid; m_grid->enableXMin(true); m_grid->enableYMin(true); m_grid->setMajPen(QPen(Qt::gray, 0, Qt::SolidLine)); m_grid->setMinPen(QPen(Qt::lightGray, 0, Qt::DotLine)); m_grid->attach(m_SizeDistributionPlot); // For the ODF Tab we want the MDF functionality m_ODFWidget->enableMDFTab(true); // Remove any Axis Decorations. The plots are explicitly know to have a -1 to 1 axis min/max m_ODFWidget->setEnableAxisDecorations(false); // Remove any Axis Decorations. The plots are explicitly know to have a -1 to 1 axis min/max m_AxisODFWidget->setEnableAxisDecorations(false); updateSizeDistributionPlot(); calculateNumberOfBins(); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void PrimaryPhaseWidget::setupGui() { distributionTypeCombo->addItem(DREAM3D::StringConstants::BetaDistribution.toLatin1().data()); distributionTypeCombo->addItem(DREAM3D::StringConstants::LogNormalDistribution.toLatin1().data()); distributionTypeCombo->addItem(DREAM3D::StringConstants::PowerLawDistribution.toLatin1().data()); distributionTypeCombo->setCurrentIndex(DREAM3D::DistributionType::LogNormal); // Turn off all the plot widgets setTabsPlotTabsEnabled(false); QLocale loc = QLocale::system(); microstructurePresetCombo->blockSignals(true); // Register all of our Microstructure Preset Factories AbstractMicrostructurePresetFactory::Pointer presetFactory = AbstractMicrostructurePresetFactory::NullPointer(); //Register the Equiaxed Preset presetFactory = RegisterPresetFactory<PrimaryEquiaxedPresetFactory>(microstructurePresetCombo); QString presetName = (presetFactory->displayName()); MicrostructurePresetManager::Pointer manager = MicrostructurePresetManager::instance(); m_MicroPreset = manager->createNewPreset(presetName); // Register the Rolled Preset presetFactory = RegisterPresetFactory<PrimaryRolledPresetFactory>(microstructurePresetCombo); m_MuValidator = new QDoubleValidator(m_Mu_SizeDistribution); m_MuValidator->setLocale(loc); m_MuValidator->setRange(0.0001, 10.0, 4); m_Mu_SizeDistribution->setValidator(m_MuValidator); m_SigmaValidator = new QDoubleValidator(m_Sigma_SizeDistribution); m_SigmaValidator->setLocale(loc); m_SigmaValidator->setRange(0.0000, 1.0, 4); m_Sigma_SizeDistribution->setValidator(m_SigmaValidator); QDoubleValidator* minVal = new QDoubleValidator(0.000, std::numeric_limits<double>::infinity(), 4, m_MinSigmaCutOff); minVal->setLocale(loc); m_MinSigmaCutOff->setValidator(minVal); QDoubleValidator* maxVal = new QDoubleValidator(0.000, std::numeric_limits<double>::infinity(), 4, m_MinSigmaCutOff); maxVal->setLocale(loc); m_MaxSigmaCutOff->setValidator(maxVal); // Select the first Preset in the list microstructurePresetCombo->setCurrentIndex(0); microstructurePresetCombo->blockSignals(false); float mu = 1.0f; float sigma = 0.1f; float minCutOff = 5.0f; float maxCutOff = 5.0f; float binStepSize = 0.5f; StatsGenPlotWidget* w = m_Omega3Plot; w->setPlotTitle(QString("Size Vs. Omega 3")); w->setXAxisName(QString("Omega 3")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::Beta); w->setStatisticsType(DREAM3D::StatisticsType::Feature_SizeVOmega3); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_Omega3Plot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); w = m_BOverAPlot; w->setPlotTitle(QString("B/A Shape Distribution")); w->setXAxisName(QString("B/A")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::Beta); w->setStatisticsType(DREAM3D::StatisticsType::Feature_SizeVBoverA); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_BOverAPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); w = m_COverAPlot; w->setPlotTitle(QString("C/A Shape Distribution")); w->setXAxisName(QString("C/A")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::Beta); w->setStatisticsType(DREAM3D::StatisticsType::Feature_SizeVCoverA); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_COverAPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); w = m_NeighborPlot; w->setPlotTitle(QString("Neighbors Distributions")); w->setXAxisName(QString("Number of Features (within 1 diameter)")); w->setYAxisName(QString("Frequency")); w->setDistributionType(DREAM3D::DistributionType::LogNormal); w->setStatisticsType(DREAM3D::StatisticsType::Feature_SizeVNeighbors); w->blockDistributionTypeChanges(true); w->setRowOperationEnabled(false); w->setMu(mu); w->setSigma(sigma); w->setMinCutOff(minCutOff); w->setMaxCutOff(maxCutOff); w->setBinStep(binStepSize); connect(m_NeighborPlot, SIGNAL(userEditedData()), this, SLOT(dataWasEdited())); m_SizeDistributionPlot->setCanvasBackground(QColor(Qt::white)); m_SizeDistributionPlot->setTitle("Size Distribution"); m_grid = new QwtPlotGrid; m_grid->enableXMin(true); m_grid->enableYMin(true); #if (QWT_VERSION > 0x060000) m_grid->setMajorPen(QPen(Qt::gray, 0, Qt::SolidLine)); m_grid->setMinorPen(QPen(Qt::lightGray, 0, Qt::DotLine)); #else m_grid->setMajPen(QPen(Qt::gray, 0, Qt::SolidLine)); m_grid->setMinPen(QPen(Qt::lightGray, 0, Qt::DotLine)); #endif m_grid->attach(m_SizeDistributionPlot); // For the ODF Tab we want the MDF functionality m_ODFWidget->enableMDFTab(true); // Remove any Axis Decorations. The plots are explicitly know to have a -1 to 1 axis min/max m_ODFWidget->setEnableAxisDecorations(false); // Remove any Axis Decorations. The plots are explicitly know to have a -1 to 1 axis min/max m_AxisODFWidget->setEnableAxisDecorations(false); updateSizeDistributionPlot(); calculateNumberOfBins(); }