diff --git a/GUI/coregui/Models/DetectorItems.cpp b/GUI/coregui/Models/DetectorItems.cpp index 84ed2d15b76f62b35aa2d69e6288817f0cd32e3b..6f9985078ecceea026a01ac3245d421dfbdf3f2e 100644 --- a/GUI/coregui/Models/DetectorItems.cpp +++ b/GUI/coregui/Models/DetectorItems.cpp @@ -31,7 +31,7 @@ DetectorItem::DetectorItem(ParameterizedItem *parent) addToValidChildren(Constants::MaskContainerType); } -MaskContainerItem *DetectorItem::getMaskContainerItem() +MaskContainerItem *DetectorItem::getMaskContainerItem() const { foreach(ParameterizedItem *item, childItems()) { if(MaskContainerItem *container = dynamic_cast<MaskContainerItem *>(item)) { diff --git a/GUI/coregui/Models/DetectorItems.h b/GUI/coregui/Models/DetectorItems.h index 69ba85d25ee18a719aa8857bbcb527d616c0f705..a118b5ff955e41edcc1871519398f2cf33aa1cd4 100644 --- a/GUI/coregui/Models/DetectorItems.h +++ b/GUI/coregui/Models/DetectorItems.h @@ -28,7 +28,7 @@ public: explicit DetectorItem(ParameterizedItem *parent=0); ~DetectorItem(){} - MaskContainerItem *getMaskContainerItem(); + MaskContainerItem *getMaskContainerItem() const; }; class PhiAlphaDetectorItem : public ParameterizedItem diff --git a/GUI/coregui/Models/DomainSimulationBuilder.cpp b/GUI/coregui/Models/DomainSimulationBuilder.cpp index 8cc55919ae51ca2d804f0b75a506ad9aca6a39e4..3fda5c25c3f2b433824072f1ab4438fe4e10e01f 100644 --- a/GUI/coregui/Models/DomainSimulationBuilder.cpp +++ b/GUI/coregui/Models/DomainSimulationBuilder.cpp @@ -21,6 +21,7 @@ #include "MultiLayer.h" #include "MultiLayerItem.h" #include "BeamItem.h" +#include "DetectorItems.h" #include "DomainObjectBuilder.h" #include "TransformToDomain.h" #include "GUIHelpers.h" @@ -69,5 +70,8 @@ GISASSimulation *DomainSimulationBuilder::getSimulation(MultiLayerItem *sampleIt TransformToDomain::addDistributionParametersToSimulation(*instrumentItem->getBeamItem(), result); + + TransformToDomain::addMasksToSimulation(*instrumentItem->getDetectorItem(), + result); return result; } diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp index 0ba5565ba2f719c968d58b6954c4ac2e568ec136..693d071af19c4d855afb28dc1cc38175e9c7a068 100644 --- a/GUI/coregui/Models/TransformToDomain.cpp +++ b/GUI/coregui/Models/TransformToDomain.cpp @@ -383,13 +383,33 @@ void TransformToDomain::addMasksToSimulation(const ParameterizedItem &detector_i { Q_ASSERT(detector_item.modelType() == Constants::DetectorType); -// if(const DetectorItem *detectorItem = dynamic_cast<const DetectorItem *>(&detector_item)) { -// if(auto maskContainerItem = detectorItem->getMaskContainerItem()) { -// foreach(auto child, maskContainerItem->childItems()) { + if(auto detectorItem = dynamic_cast<const DetectorItem *>(&detector_item)) { + if(auto maskContainerItem = detectorItem->getMaskContainerItem()) { + for(int i_row = maskContainerItem->childItems().size(); i_row>0; --i_row) { + if(auto maskItem = dynamic_cast<MaskItem *>(maskContainerItem->childItems().at(i_row-1))) { + std::unique_ptr<Geometry::IShape2D > shape(maskItem->createShape()); + bool mask_value = maskItem->getRegisteredProperty(MaskItem::P_MASK_VALUE).toBool(); + simulation->addMask(*shape, mask_value); + } + } + } + } + +} -// } + +//for (int i_row = m_maskModel->rowCount(m_maskContainerIndex); i_row > 0; --i_row) { +// QModelIndex itemIndex = m_maskModel->index(i_row - 1, 0, m_maskContainerIndex); +// if (MaskItem *item = dynamic_cast<MaskItem *>(m_maskModel->itemForIndex(itemIndex))) { +// Geometry::IShape2D *shape = item->createShape(); +// if (shape) { +// detectorMask.addMask(*shape, +// item->getRegisteredProperty(MaskItem::P_MASK_VALUE).toBool()); // } +// delete shape; // } +//} + + -} diff --git a/GUI/coregui/mainwindow/mainwindow.cpp b/GUI/coregui/mainwindow/mainwindow.cpp index 00f4beee348f1cae6177ec33d8b7cafc2b0e1c22..d63eb4706761e5f4ac168d3c7f6bc41454d04f89 100644 --- a/GUI/coregui/mainwindow/mainwindow.cpp +++ b/GUI/coregui/mainwindow/mainwindow.cpp @@ -151,7 +151,7 @@ MainWindow::MainWindow(QWidget *parent) m_projectManager->createNewProject(); - //testGUIObjectBuilder(); + testGUIObjectBuilder(); } MainWindow::~MainWindow() @@ -317,7 +317,7 @@ void MainWindow::resetModels() void MainWindow::testGUIObjectBuilder() { SampleBuilderFactory factory; - boost::scoped_ptr<ISample> P_sample(factory.createSample("isgisaxs01")); + boost::scoped_ptr<ISample> P_sample(factory.createSample("CylindersAndPrismsBuilder")); GUIObjectBuilder guiBuilder; guiBuilder.populateSampleModel(m_sampleModel, *P_sample);