From 85fcfea15990f8a5657a368bc44f74712528c4ca Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Wed, 18 May 2016 15:43:14 +0200
Subject: [PATCH] Selection in fit parameter tree is propagated to tuning
 widget

---
 GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp    | 6 +++++-
 GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp | 8 ++++++++
 GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h   | 3 ++-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp b/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp
index 6c18c98f523..7d4a8370871 100644
--- a/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp
+++ b/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp
@@ -139,7 +139,12 @@ void FitParameterWidget::onFitParametersSelectionChanged(const QItemSelection &s
         return;
 
     foreach(QModelIndex index, selection.indexes()) {
+        m_tuningWidget->selectionModel()->clearSelection();
         SessionItem *item = m_fitParameterModel->itemForIndex(index);
+        if(item->parent()->modelType() == Constants::FitParameterLinkType) {
+            QString link = item->parent()->getItemValue(FitParameterLinkItem::P_LINK).toString();
+            m_tuningWidget->makeSelected(FitModelHelper::getParameterItem(m_jobItem->fitParameterContainerItem(), link));
+        }
         qDebug() << "XXX index" << index << item->modelType();
 
     }
@@ -400,7 +405,6 @@ void FitParameterWidget::updateInfoLabel()
 {
     Q_ASSERT(m_jobItem);
     bool is_to_show_label = m_jobItem->fitParameterContainerItem()->isEmpty();
-    qDebug() << "FitParameterWidget::updateInfoLabel()" << m_jobItem->fitParameterContainerItem()->getItems(FitParameterContainerItem::T_FIT_PARAMETERS).size() << is_to_show_label << m_treeView;
     m_infoLabel->setShown(is_to_show_label);
 }
 
diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp
index 2ee0e98a5e2..87a87861f1f 100644
--- a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp
+++ b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp
@@ -201,6 +201,14 @@ void ParameterTuningWidget::restoreModelsOfCurrentJobItem()
     m_jobModel->getJobQueueData()->runJob(m_currentJobItem);
 }
 
+void ParameterTuningWidget::makeSelected(ParameterItem *item)
+{
+    QModelIndex proxyIndex = m_parameterTuningModel->mapFromSource(item->index());
+    if(proxyIndex.isValid()) {
+       selectionModel()->select(proxyIndex, QItemSelectionModel::Select);
+    }
+}
+
 void ParameterTuningWidget::resizeEvent(QResizeEvent *event)
 {
     Q_UNUSED(event);
diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h
index f1b9e010305..e7046052914 100644
--- a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h
+++ b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h
@@ -42,7 +42,7 @@ public:
 
     QItemSelectionModel* selectionModel();
 
-    QVector<ParameterItem *> getSelectedParameters();
+    QVector<ParameterItem *> getSelectedParameters();    
 
 signals:
     void itemContextMenuRequest(const QPoint &point);
@@ -52,6 +52,7 @@ public slots:
     void onSliderValueChanged(double value);
     void onLockZValueChanged(bool value);
     void restoreModelsOfCurrentJobItem();
+    void makeSelected(ParameterItem *item);
 
 protected:
     void resizeEvent(QResizeEvent *event);
-- 
GitLab