From 342f447456df9da14b574e32f6fa0020b566c3fa Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Tue, 14 Mar 2017 08:28:03 +0100 Subject: [PATCH] DetectorContainerItem now created in constructor of InstrumentItem --- GUI/coregui/Models/ApplicationModels.cpp | 1 - GUI/coregui/Models/GUIObjectBuilder.cpp | 9 ++++----- GUI/coregui/Models/InstrumentItem.cpp | 9 +++++---- GUI/coregui/Models/ModelPath.cpp | 3 ++- GUI/coregui/Views/InstrumentView.cpp | 2 -- Tests/UnitTests/GUI/TestSessionModel.h | 6 ------ 6 files changed, 11 insertions(+), 19 deletions(-) diff --git a/GUI/coregui/Models/ApplicationModels.cpp b/GUI/coregui/Models/ApplicationModels.cpp index 0ab0eb5275a..b06e57f6642 100644 --- a/GUI/coregui/Models/ApplicationModels.cpp +++ b/GUI/coregui/Models/ApplicationModels.cpp @@ -118,7 +118,6 @@ void ApplicationModels::resetModels() m_instrumentModel->clear(); SessionItem *instrument = m_instrumentModel->insertNewItem(Constants::InstrumentType); instrument->setItemName("Default GISAS"); - m_instrumentModel->insertNewItem(Constants::DetectorContainerType, m_instrumentModel->indexOfItem(instrument)); // m_realDataModel->insertNewItem(Constants::RealDataType); // m_realDataModel->insertNewItem(Constants::RealDataType); diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp index 144d5d4e6c5..74f23ef483e 100644 --- a/GUI/coregui/Models/GUIObjectBuilder.cpp +++ b/GUI/coregui/Models/GUIObjectBuilder.cpp @@ -50,6 +50,7 @@ #include "TransformFromDomain.h" #include "TransformationItem.h" #include "InstrumentItem.h" +#include "DetectorItems.h" #include "Units.h" #include "VectorItem.h" @@ -111,13 +112,11 @@ SessionItem* GUIObjectBuilder::populateInstrumentModel( TransformFromDomain::setItemFromSample(&beamItem, simulation); // detector - DetectorContainerItem* detectorItem = dynamic_cast<DetectorContainerItem*>(instrumentModel->insertNewItem( - Constants::DetectorContainerType, instrumentModel->indexOfItem(instrumentItem))); - TransformFromDomain::setItemFromSample(detectorItem, simulation); + auto& detectorItem = instrumentItem->item<DetectorContainerItem>(InstrumentItem::P_DETECTOR); + TransformFromDomain::setItemFromSample(&detectorItem, simulation); // detector masks - TransformFromDomain::setDetectorMasks(detectorItem, simulation); - + TransformFromDomain::setDetectorMasks(&detectorItem, simulation); return instrumentItem; } diff --git a/GUI/coregui/Models/InstrumentItem.cpp b/GUI/coregui/Models/InstrumentItem.cpp index 826b9c8b2f9..09f4aa69f99 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 = "DetectorType"; +const QString InstrumentItem::P_DETECTOR = "Data tag"; InstrumentItem::InstrumentItem() : SessionItem(Constants::InstrumentType) @@ -34,10 +34,11 @@ 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); - setDefaultTag(T_DATA); +// const QString T_DATA = "Data tag"; +// registerTag(T_DATA, 0, -1, QStringList() << Constants::DetectorContainerType); + setDefaultTag(P_DETECTOR); } BeamItem *InstrumentItem::beamItem() const diff --git a/GUI/coregui/Models/ModelPath.cpp b/GUI/coregui/Models/ModelPath.cpp index 66cdba8dae4..5de7f351f53 100644 --- a/GUI/coregui/Models/ModelPath.cpp +++ b/GUI/coregui/Models/ModelPath.cpp @@ -17,6 +17,7 @@ #include "ModelPath.h" #include "SessionModel.h" #include "JobItem.h" +#include "InstrumentItem.h" QString ModelPath::getPathFromIndex(const QModelIndex& index) { @@ -88,7 +89,7 @@ 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(Constants::DetectorContainerType)) + if (par_name.contains(InstrumentItem::P_DETECTOR)) return false; if (par_name.contains(Constants::DistributionSigmaFactor)) return false; diff --git a/GUI/coregui/Views/InstrumentView.cpp b/GUI/coregui/Views/InstrumentView.cpp index 11c2d3c8729..62714ee7d9d 100644 --- a/GUI/coregui/Views/InstrumentView.cpp +++ b/GUI/coregui/Views/InstrumentView.cpp @@ -111,8 +111,6 @@ void InstrumentView::onAddInstrument() { SessionItem *instrument = m_instrumentModel->insertNewItem(Constants::InstrumentType); instrument->setItemName(getNewInstrumentName("Default GISAS")); - m_instrumentModel->insertNewItem( - Constants::DetectorContainerType, m_instrumentModel->indexOfItem(instrument)); QModelIndex itemIndex = m_instrumentModel->indexOfItem(instrument); m_instrumentSelector->getSelectionModel()->clearSelection(); m_instrumentSelector->getSelectionModel()->select(itemIndex, QItemSelectionModel::Select); diff --git a/Tests/UnitTests/GUI/TestSessionModel.h b/Tests/UnitTests/GUI/TestSessionModel.h index 11e0d2b45ea..f6c0113689f 100644 --- a/Tests/UnitTests/GUI/TestSessionModel.h +++ b/Tests/UnitTests/GUI/TestSessionModel.h @@ -75,11 +75,9 @@ inline void TestSessionModel::test_InstrumentModel_CreateCopy() InstrumentModel *model1 = new InstrumentModel(); SessionItem *instrument1 = model1->insertNewItem(Constants::InstrumentType); instrument1->setItemName("instrument1"); - model1->insertNewItem(Constants::DetectorContainerType, model1->indexOfItem(instrument1)); SessionItem *instrument2 = model1->insertNewItem(Constants::InstrumentType); instrument2->setItemName("instrument2"); - model1->insertNewItem(Constants::DetectorContainerType, model1->indexOfItem(instrument2)); QString buffer1; QXmlStreamWriter writer1(&buffer1); @@ -101,11 +99,9 @@ inline void TestSessionModel::test_InstrumentModel_CreatePartialCopy() InstrumentModel *model1 = new InstrumentModel(); SessionItem *instrument1 = model1->insertNewItem(Constants::InstrumentType); instrument1->setItemName("instrument1"); - model1->insertNewItem(Constants::DetectorContainerType, model1->indexOfItem(instrument1)); SessionItem *instrument2 = model1->insertNewItem(Constants::InstrumentType); instrument2->setItemName("instrument2"); - model1->insertNewItem(Constants::DetectorContainerType, model1->indexOfItem(instrument2)); // QString buffer1; // QXmlStreamWriter writer1(&buffer1); @@ -142,8 +138,6 @@ inline void TestSessionModel::test_copyParameterizedItem() InstrumentModel *instrumentModel = new InstrumentModel(); SessionItem *instrument1 = instrumentModel->insertNewItem(Constants::InstrumentType); instrument1->setItemName("instrument1"); - instrumentModel->insertNewItem(Constants::DetectorContainerType, instrumentModel->indexOfItem(instrument1)); - instrumentModel->insertNewItem(Constants::BeamType, instrumentModel->indexOfItem(instrument1)); JobModel *jobModel = new JobModel(); SessionItem *jobItem = jobModel->insertNewItem(Constants::JobItemType); -- GitLab