From cfdc6acf173a7b3d909b454b0b32be3824b8ef3e Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Tue, 14 Mar 2017 15:31:27 +0100
Subject: [PATCH] DetectorContainerItem was fully removed.

---
 GUI/coregui/Models/DetectorItems.cpp          | 31 -----------------
 GUI/coregui/Models/DetectorItems.h            | 20 -----------
 GUI/coregui/Models/InstrumentItem.cpp         | 34 +++++++------------
 GUI/coregui/Models/InstrumentItem.h           |  2 --
 GUI/coregui/Models/ItemFactory.cpp            |  2 --
 GUI/coregui/Models/ModelPath.cpp              |  4 ++-
 GUI/coregui/Models/TransformFromDomain.h      |  1 -
 GUI/coregui/Models/item_constants.h           |  2 +-
 .../LinkInstrumentManager.cpp                 |  6 ++--
 9 files changed, 18 insertions(+), 84 deletions(-)

diff --git a/GUI/coregui/Models/DetectorItems.cpp b/GUI/coregui/Models/DetectorItems.cpp
index 0fd45e7247d..9fddc959741 100644
--- a/GUI/coregui/Models/DetectorItems.cpp
+++ b/GUI/coregui/Models/DetectorItems.cpp
@@ -21,37 +21,6 @@
 #include "IDetector2D.h"
 #include "ResolutionFunctionItems.h"
 
-const QString DetectorContainerItem::P_DETECTOR = "DetectorType";
-
-DetectorContainerItem::DetectorContainerItem() : SessionItem(Constants::DetectorContainerType)
-{
-    addGroupProperty(P_DETECTOR, Constants::DetectorGroup);
-    setGroupProperty(P_DETECTOR, Constants::SphericalDetectorType);
-}
-
-void DetectorContainerItem::clearMasks() { detectorItem()->clearMasks(); }
-
-DetectorItem* DetectorContainerItem::detectorItem() const
-{
-    DetectorItem* detectorItem = dynamic_cast<DetectorItem*>(getGroupItem(P_DETECTOR));
-    Q_ASSERT(detectorItem);
-    return detectorItem;
-}
-
-MaskContainerItem* DetectorContainerItem::maskContainerItem() const
-{
-    return detectorItem()->maskContainerItem();
-}
-
-void DetectorContainerItem::createMaskContainer() { detectorItem()->createMaskContainer(); }
-
-void DetectorContainerItem::importMasks(MaskContainerItem* maskContainer)
-{
-    detectorItem()->importMasks(maskContainer);
-}
-
-// --------------------------------------------------------------------------------------------- //
-
 const QString DetectorItem::T_MASKS = "Mask tag";
 const QString DetectorItem::P_RESOLUTION_FUNCTION = "Type";
 
diff --git a/GUI/coregui/Models/DetectorItems.h b/GUI/coregui/Models/DetectorItems.h
index 63d9b6ac7ab..8af8a958e52 100644
--- a/GUI/coregui/Models/DetectorItems.h
+++ b/GUI/coregui/Models/DetectorItems.h
@@ -24,25 +24,6 @@ class IDetector2D;
 class IResolutionFunction2D;
 class DetectorItem;
 
-//! DetectorItem, holds masks and either rectangular or spherical detector as sub item
-class BA_CORE_API_ DetectorContainerItem : public SessionItem
-{
-public:
-    static const QString P_DETECTOR;
-    DetectorContainerItem();
-
-    void clearMasks();
-
-    DetectorItem *detectorItem() const;
-
-    MaskContainerItem *maskContainerItem() const;
-
-    void createMaskContainer();
-
-    void importMasks(MaskContainerItem* maskContainer);
-
-};
-
 class BA_CORE_API_ DetectorItem : public SessionItem
 {
 public:
@@ -72,5 +53,4 @@ protected:
     void addMasksToDomain(IDetector2D* detector) const;
 };
 
-
 #endif // DETECTORITEMS_H
diff --git a/GUI/coregui/Models/InstrumentItem.cpp b/GUI/coregui/Models/InstrumentItem.cpp
index a01636cb5e8..c5f45d10ec2 100644
--- a/GUI/coregui/Models/InstrumentItem.cpp
+++ b/GUI/coregui/Models/InstrumentItem.cpp
@@ -24,7 +24,7 @@
 
 const QString InstrumentItem::P_IDENTIFIER = "Identifier";
 const QString InstrumentItem::P_BEAM = "Beam";
-const QString InstrumentItem::P_DETECTOR = "Data tag";
+const QString InstrumentItem::P_DETECTOR = "Detector";
 
 InstrumentItem::InstrumentItem()
     : SessionItem(Constants::InstrumentType)
@@ -34,51 +34,41 @@ InstrumentItem::InstrumentItem()
     addProperty(P_IDENTIFIER, GUIHelpers::createUuid())->setVisible(false);
 
     addGroupProperty(P_BEAM, Constants::BeamType);
-    addGroupProperty(P_DETECTOR, Constants::DetectorContainerType);
 
-//    const QString T_DATA = "Data tag";
-//    registerTag(T_DATA, 0, -1, QStringList() << Constants::DetectorContainerType);
+    addGroupProperty(P_DETECTOR, Constants::DetectorGroup);
+    setGroupProperty(P_DETECTOR, Constants::SphericalDetectorType);
+
     setDefaultTag(P_DETECTOR);
 }
 
 BeamItem *InstrumentItem::beamItem() const
 {
-    for(SessionItem *item : childItems())
-        if(item->modelType() == Constants::BeamType)
-            return dynamic_cast<BeamItem *>(item);
-    return 0;
-}
-
-DetectorContainerItem *InstrumentItem::detectorContainerItem() const
-{
-    for(SessionItem *item : childItems())
-        if(item->modelType() == Constants::DetectorContainerType)
-            return dynamic_cast<DetectorContainerItem *>(item);
-    return 0;
+    return &item<BeamItem>(InstrumentItem::P_BEAM);
 }
 
 DetectorItem* InstrumentItem::detectorItem() const
 {
-    return detectorContainerItem()->detectorItem();
+    DetectorItem* result = dynamic_cast<DetectorItem*>(getGroupItem(P_DETECTOR));
+    Q_ASSERT(result);
+    return result;
 }
 
 GroupItem* InstrumentItem::detectorGroup()
 {
-    return &detectorContainerItem()->item<GroupItem>(DetectorContainerItem::P_DETECTOR);
+    return &item<GroupItem>(P_DETECTOR);
 }
 
 void InstrumentItem::setDetectorGroup(const QString& modelType)
 {
-    detectorContainerItem()->setGroupProperty(DetectorContainerItem::P_DETECTOR, modelType);
+    setGroupProperty(P_DETECTOR, modelType);
 }
 
 void InstrumentItem::clearMasks()
 {
-    detectorContainerItem()->clearMasks();
+    detectorItem()->clearMasks();
 }
 
 void InstrumentItem::importMasks(MaskContainerItem* maskContainer)
 {
-    DetectorContainerItem *detectorContainer = detectorContainerItem();
-    detectorContainer->importMasks(maskContainer);
+    detectorItem()->importMasks(maskContainer);
 }
diff --git a/GUI/coregui/Models/InstrumentItem.h b/GUI/coregui/Models/InstrumentItem.h
index 7a251c7d1f3..54fc9777220 100644
--- a/GUI/coregui/Models/InstrumentItem.h
+++ b/GUI/coregui/Models/InstrumentItem.h
@@ -20,7 +20,6 @@
 #include "SessionItem.h"
 
 class BeamItem;
-class DetectorContainerItem;
 class DetectorItem;
 class MaskContainerItem;
 class GroupItem;
@@ -34,7 +33,6 @@ public:
     InstrumentItem();
 
     BeamItem *beamItem() const;
-    DetectorContainerItem *detectorContainerItem() const;
     DetectorItem *detectorItem() const;
     GroupItem* detectorGroup();
 
diff --git a/GUI/coregui/Models/ItemFactory.cpp b/GUI/coregui/Models/ItemFactory.cpp
index e01598ebf22..eccfe4a82d6 100644
--- a/GUI/coregui/Models/ItemFactory.cpp
+++ b/GUI/coregui/Models/ItemFactory.cpp
@@ -112,7 +112,6 @@ ItemFactory::ItemMap_t initializeItemMap() {
     result[Constants::LayerBasicRoughnessType] = &createInstance<LayerBasicRoughnessItem>;
     result[Constants::LayerZeroRoughnessType] = &createInstance<LayerZeroRoughnessItem>;
 
-    result[Constants::DetectorContainerType] = &createInstance<DetectorContainerItem>;
     result[Constants::SphericalDetectorType] = &createInstance<SphericalDetectorItem>;
     result[Constants::RectangularDetectorType] = &createInstance<RectangularDetectorItem>;
 
@@ -162,7 +161,6 @@ ItemFactory::ItemMap_t initializeItemMap() {
     result[Constants::BasicAxisType] = &createInstance<BasicAxisItem>;
     result[Constants::AmplitudeAxisType] = &createInstance<AmplitudeAxisItem>;
 
-//    result[Constants::BeamDistributionType] = &createInstance<BeamDistributionItem>;
     result[Constants::BeamWavelengthType] = &createInstance<BeamWavelengthItem>;
     result[Constants::BeamAzimuthalAngleType] = &createInstance<BeamAzimuthalAngleItem>;
     result[Constants::BeamInclinationAngleType] = &createInstance<BeamInclinationAngleItem>;
diff --git a/GUI/coregui/Models/ModelPath.cpp b/GUI/coregui/Models/ModelPath.cpp
index 5de7f351f53..e2eb683b361 100644
--- a/GUI/coregui/Models/ModelPath.cpp
+++ b/GUI/coregui/Models/ModelPath.cpp
@@ -89,7 +89,9 @@ bool ModelPath::isValidItem(SessionModel* model, SessionItem* item, const QModel
 bool ModelPath::isTranslatable(const SessionItem* item, const QString& par_name)
 {
     Q_UNUSED(item);
-    if (par_name.contains(InstrumentItem::P_DETECTOR))
+    if (par_name.contains(Constants::SphericalDetectorType))
+        return false;
+    if (par_name.contains(Constants::RectangularDetectorType))
         return false;
     if (par_name.contains(Constants::DistributionSigmaFactor))
         return false;
diff --git a/GUI/coregui/Models/TransformFromDomain.h b/GUI/coregui/Models/TransformFromDomain.h
index f760642d173..e07e6c16f84 100644
--- a/GUI/coregui/Models/TransformFromDomain.h
+++ b/GUI/coregui/Models/TransformFromDomain.h
@@ -22,7 +22,6 @@
 
 class BeamDistributionItem;
 class BeamItem;
-class DetectorContainerItem;
 class FormFactorAnisoPyramid;
 class GISASSimulation;
 class InterferenceFunction1DLattice;
diff --git a/GUI/coregui/Models/item_constants.h b/GUI/coregui/Models/item_constants.h
index 668e806d409..d5a6d4eede0 100644
--- a/GUI/coregui/Models/item_constants.h
+++ b/GUI/coregui/Models/item_constants.h
@@ -38,7 +38,7 @@ const ModelType InterferenceFunction2DParaCrystalType = "Interference2DParaCryst
 const ModelType InterferenceFunction1DLatticeType = "Interference1DLattice";
 const ModelType InterferenceFunction2DLatticeType = "Interference2DLattice";
 const ModelType InstrumentType = "Instrument";
-const ModelType DetectorContainerType = "DetectorContainer";
+//const ModelType DetectorContainerType = "DetectorContainer";
 const ModelType BeamType = "Beam";
 
 const ModelType FormFactorType = "FormFactor";
diff --git a/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp b/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp
index f653b4f63e1..af17af2fde6 100644
--- a/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp
+++ b/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp
@@ -171,12 +171,10 @@ void LinkInstrumentManager::onInstrumentChildChange(InstrumentItem *instrument,
     if(child == nullptr)
         return;
 
-    if(child->itemName() == BasicAxisItem::P_NBINS ||
-       child->parent()->itemName() == DetectorContainerItem::P_DETECTOR) {
+    if(child->itemName() == BasicAxisItem::P_NBINS)
         onInstrumentBinningChange(instrument);
-    } else {
+    else
         onInstrumentLayoutChange(instrument);
-    }
 }
 
 //! Updates map of instruments on insert/remove InstrumentItem event.
-- 
GitLab