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