From 423f9ffd8fe94ab9a3d124f2cfc01557a73867eb Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Mon, 26 Jul 2021 18:45:35 +0200 Subject: [PATCH] Comments and separators -> GUIDomainSampleVisitor --- GUI/Models/GUIDomainSampleVisitor.cpp | 19 ++++++++++++++++++- GUI/Models/GUIDomainSampleVisitor.h | 1 + GUI/Models/GUIObjectBuilder.cpp | 4 +--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/GUI/Models/GUIDomainSampleVisitor.cpp b/GUI/Models/GUIDomainSampleVisitor.cpp index 3b274635e14..63e8c479147 100644 --- a/GUI/Models/GUIDomainSampleVisitor.cpp +++ b/GUI/Models/GUIDomainSampleVisitor.cpp @@ -61,6 +61,10 @@ template <typename T> T* AddFormFactorItem(SessionItem* parent) } } // namespace +// ************************************************************************************************ +// class implementation +// ************************************************************************************************ + GUIDomainSampleVisitor::GUIDomainSampleVisitor() : m_sampleModel(nullptr), m_materialModel(nullptr) { } @@ -82,7 +86,7 @@ SessionItem* GUIDomainSampleVisitor::populateSampleModel(SampleModel* sampleMode for (const auto& [child, depth, parent] : NodeUtils::progenyPlus(&sample)) { setDepth(depth + 1); - child->accept(this); + child->accept(this); // will call back one of the visit functions defined below } SessionItem* result = m_levelToParentItem[1]; @@ -90,6 +94,10 @@ SessionItem* GUIDomainSampleVisitor::populateSampleModel(SampleModel* sampleMode return result; } +// ------------------------------------------------------------------------------------------------ +// visit functions +// ------------------------------------------------------------------------------------------------ + void GUIDomainSampleVisitor::visit(const ParticleLayout* sample) { SessionItem* parent = m_levelToParentItem[depth() - 1]; @@ -543,6 +551,10 @@ void GUIDomainSampleVisitor::visit(const RotationEuler* sample) m_levelToParentItem[depth()] = transformation_item; } +// ------------------------------------------------------------------------------------------------ +// private functions for use in the above visit functions +// ------------------------------------------------------------------------------------------------ + ExternalProperty GUIDomainSampleVisitor::createMaterialFromDomain(const Material* material) { QString materialName = m_topSampleName + QString("_") + QString(material->getName().c_str()); @@ -567,12 +579,16 @@ ExternalProperty GUIDomainSampleVisitor::createMaterialFromDomain(const Material return GUI::Model::MaterialItemUtils::materialProperty(*materialItem); } +// Function CreateIParticle, used only by GUIDomainSampleVisitor::InsertIParticle + +// Default definition for any T, except if overwritten below template <typename T> T* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent, const IParticle*) { return m_sampleModel->insertItem<T>(parent, -1); } +// Special definition for T=ParticleItem template <> ParticleItem* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent, const IParticle* particle) @@ -594,6 +610,7 @@ ParticleItem* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent, return m_sampleModel->insertItem<ParticleItem>(parent, -1); } +// Used only in this file template <typename T> T* GUIDomainSampleVisitor::InsertIParticle(const IParticle* particle) { auto parent = m_levelToParentItem[depth() - 1]; diff --git a/GUI/Models/GUIDomainSampleVisitor.h b/GUI/Models/GUIDomainSampleVisitor.h index 90e27a6ca7e..599f1220a9e 100644 --- a/GUI/Models/GUIDomainSampleVisitor.h +++ b/GUI/Models/GUIDomainSampleVisitor.h @@ -26,6 +26,7 @@ class ExternalProperty; class Material; //! Visits domain sample tree to build GUI presentation. +//! Used from ObjectBuilder::populateSampleModel class GUIDomainSampleVisitor : public INodeVisitor { public: diff --git a/GUI/Models/GUIObjectBuilder.cpp b/GUI/Models/GUIObjectBuilder.cpp index 0ff919040ef..9a37944a2f7 100644 --- a/GUI/Models/GUIObjectBuilder.cpp +++ b/GUI/Models/GUIObjectBuilder.cpp @@ -99,9 +99,7 @@ SessionItem* GUI::Model::ObjectBuilder::populateInstrumentModel(InstrumentModel* return createOffSpecularInstrumentItem(p_instrument_model, *offSpecSimulation, name); if (auto spec_simulation = dynamic_cast<const SpecularSimulation*>(&simulation)) return createSpecularInstrumentItem(p_instrument_model, *spec_simulation, name); - - throw Error("GUI::Model::ObjectBuilder::populateInstrumentModel() -> Error. ISimulation is " - "not yet supported"); + ASSERT(0); } SessionItem* GUI::Model::ObjectBuilder::populateDocumentModel(DocumentModel* p_document_model, -- GitLab