From 2d0c1916119af101113119d0fc164c3e4ba18b8c Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Fri, 26 Aug 2022 13:27:50 +0200 Subject: [PATCH] MinimizerSettingsWidget: doing tooltips --- GUI/Model/Job/MinimizerItem.cpp | 13 +++++++--- GUI/View/Fit/MinimizerSettingsWidget.cpp | 30 ++++++++++++++---------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/GUI/Model/Job/MinimizerItem.cpp b/GUI/Model/Job/MinimizerItem.cpp index b74a8f9da85..8b401e18112 100644 --- a/GUI/Model/Job/MinimizerItem.cpp +++ b/GUI/Model/Job/MinimizerItem.cpp @@ -34,13 +34,16 @@ const QString default_minimizer = minimizer_names_map.key(MinuitMinimizerItem::M #ifdef ALGORITHM_LIST QMap<QString /*algorithm*/, QString /*minimizer*/> algorithm_minimizer_map; -QStringList create_algorithm_minimizer_map() +QStringList create_algorithm_list_and_map(QString& default_common_algorithm) { QString name, shift = " "; QStringList common_algorithms_list; + // group 1 + // group header. Can't be selected and have no mapped minimizer common_algorithms_list.append("ROOT Minuit2"); + // algorithms in group. Should have mapped minimizer QStringList minuit2Algorithms = MinimizerItemCatalog::algorithmNames(MinuitMinimizerItem::M_TYPE); for (QString algorithm : minuit2Algorithms) { @@ -49,12 +52,14 @@ QStringList create_algorithm_minimizer_map() algorithm_minimizer_map.insert(name, minimizer_names_map.key(MinuitMinimizerItem::M_TYPE)); } + // group 2 common_algorithms_list.append("ROOT TMVA"); name = shift + "Genetic"; common_algorithms_list.append(name); algorithm_minimizer_map.insert(name, minimizer_names_map.key(GeneticMinimizerItem::M_TYPE)); + // group 3 common_algorithms_list.append("GSL Multimin"); QStringList multiMinAlgorithms = @@ -66,6 +71,7 @@ QStringList create_algorithm_minimizer_map() minimizer_names_map.key(GSLMultiMinimizerItem::M_TYPE)); } + // group 4 common_algorithms_list.append("GSL"); name = shift + "Simulated Annealing"; @@ -76,6 +82,7 @@ QStringList create_algorithm_minimizer_map() common_algorithms_list.append(name); algorithm_minimizer_map.insert(name, minimizer_names_map.key(GSLLMAMinimizerItem::M_TYPE)); + default_common_algorithm = shift + minuit2Algorithms.first(); return common_algorithms_list; } #endif @@ -100,8 +107,8 @@ MinimizerContainerItem::MinimizerContainerItem() addProperty<GSLLMAMinimizerItem>(GSLLMAMinimizerItem::M_TYPE); #ifdef ALGORITHM_LIST - const QStringList common_algorithms_list = create_algorithm_minimizer_map(); - const QString default_common_algorithm = common_algorithms_list[1]; + QString default_common_algorithm; + const QStringList common_algorithms_list = create_algorithm_list_and_map(default_common_algorithm); ComboProperty common_algorithm_combo = ComboProperty::fromList(common_algorithms_list, default_common_algorithm); addProperty(P_COMMON_ALGORITHMS, common_algorithm_combo.variant()); diff --git a/GUI/View/Fit/MinimizerSettingsWidget.cpp b/GUI/View/Fit/MinimizerSettingsWidget.cpp index 768b4c9b697..aa515e7eb0e 100644 --- a/GUI/View/Fit/MinimizerSettingsWidget.cpp +++ b/GUI/View/Fit/MinimizerSettingsWidget.cpp @@ -101,26 +101,26 @@ void MinimizerSettingsWidget::createGroupedAlgorithmsCombo() for(QString algorithm : list) { comboBox->addItem(algorithm); if(!m_currentItem->algorithmHasMinimizer(algorithm)) { + comboBox->insertSeparator(comboBox->count()-1); qsizetype header_index = comboBox->count()-1; header_indices.append(header_index); + QStandardItemModel* model = qobject_cast<QStandardItemModel*>(comboBox->model()); + QStandardItem* header_item = model->item(header_index); + header_item->setSelectable(false); + QFont font(comboBox->font()); font.setBold(true); - - QStandardItemModel* model = qobject_cast<QStandardItemModel*>(comboBox->model()); - QStandardItem* firstItem = model->item(header_index); - firstItem->setSelectable(false); - firstItem->setFont(font); + header_item->setFont(font); comboBox->insertSeparator(comboBox->count()); } } - -// comboBox->setToolTip(tooltip); comboBox->setCurrentText(m_currentItem->commonAlgorithmCombo().currentValue()); + qInfo() << "TOOLTIPS:\n" << m_currentItem->commonAlgorithmCombo().toolTips(); // if (comboFunction().toolTips().size() == combo->count()) // for (int index = 0; index < combo->count(); index++) // combo->setItemData(index, comboFunction().toolTips().at(index), Qt::ToolTipRole); @@ -131,13 +131,17 @@ void MinimizerSettingsWidget::createGroupedAlgorithmsCombo() // skip headers while scrolling if(header_indices.contains(comboBox->currentIndex())) { - int previous = comboBox->property("previous").toInt(); - if(previous<comboBox->currentIndex() && comboBox->currentIndex()+2 < comboBox->count()) - comboBox->setCurrentIndex(comboBox->currentIndex()+2); - else if(previous>comboBox->currentIndex() && comboBox->currentIndex()-3 >= 0) - comboBox->setCurrentIndex(comboBox->currentIndex()-3); + int previous_state = comboBox->property("previous").toInt(); + + int prev = comboBox->currentIndex()-2; + int next = comboBox->currentIndex()+2; + + if(previous_state<comboBox->currentIndex() && next < comboBox->count()) + comboBox->setCurrentIndex(next); + else if(previous_state>comboBox->currentIndex() && prev >= 0) + comboBox->setCurrentIndex(prev); else - comboBox->setCurrentIndex(previous); + comboBox->setCurrentIndex(previous_state); } comboBox->setProperty("previous", comboBox->currentIndex()); -- GitLab