From b612a27004e1d40bfaaf4692b87f363d4000062d Mon Sep 17 00:00:00 2001 From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de> Date: Mon, 11 Nov 2024 13:24:41 +0100 Subject: [PATCH] instrument is PolyPtr --- GUI/Model/Job/JobItem.cpp | 8 +++++--- GUI/Model/Job/JobItem.h | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp index 6075634983b..95b2d9bf6b4 100644 --- a/GUI/Model/Job/JobItem.cpp +++ b/GUI/Model/Job/JobItem.cpp @@ -29,6 +29,7 @@ #include "GUI/Model/Mask/MasksSet.h" #include "GUI/Model/Par/ParameterTreeItems.h" #include "GUI/Model/Sample/SampleItem.h" +#include "GUI/Model/Sim/InstrumentCatalog.h" #include "GUI/Model/Sim/InstrumentItems.h" #include "GUI/Model/Sim/SimulationOptionsItem.h" #include "GUI/Model/ToCore/SimulationToCore.h" @@ -78,13 +79,14 @@ JobItem::JobItem(const SampleItem* sampleItem, const InstrumentItem* instrumentI : m_simulation_options_item(std::make_unique<SimulationOptionsItem>(*optionItem)) , m_parameter_container(std::make_unique<ParameterContainerItem>()) , m_sample_item(sampleItem->clone()) - , m_instrument(instrumentItem->clone()) , m_batch_info(std::make_unique<BatchInfo>()) , m_fit_suite_item(std::make_unique<FitSuiteItem>()) { ASSERT(sampleItem); ASSERT(instrumentItem); + m_instrument.setCertainItem(instrumentItem->clone()); + batchInfo()->setIdentifier(QUuid::createUuid().toString()); createParameterTree(); @@ -206,7 +208,7 @@ void JobItem::cropRealData() void JobItem::writeTo(QXmlStreamWriter* w) const { XML::writeTaggedElement(w, Tag::SimulationOptions, *m_simulation_options_item); - XML::writeTaggedElement(w, Tag::Instrument, *m_instrument); + XML::writeTaggedElement(w, Tag::Instrument, m_instrument); XML::writeTaggedElement(w, Tag::Sample, *m_sample_item); XML::writeTaggedElement(w, Tag::ParameterContainer, *m_parameter_container); XML::writeTaggedElement(w, Tag::BatchInfo, *m_batch_info); @@ -235,7 +237,7 @@ void JobItem::readFrom(QXmlStreamReader* r) if (tag == Tag::SimulationOptions) XML::readTaggedElement(r, tag, *m_simulation_options_item); else if (tag == Tag::Instrument) - XML::readTaggedElement(r, tag, *m_instrument); + XML::readTaggedElement(r, tag, m_instrument); else if (tag == Tag::ParameterContainer) { createParameterTree(); XML::readTaggedElement(r, tag, *m_parameter_container); diff --git a/GUI/Model/Job/JobItem.h b/GUI/Model/Job/JobItem.h index d2efe753f3d..8cffd2be7a6 100644 --- a/GUI/Model/Job/JobItem.h +++ b/GUI/Model/Job/JobItem.h @@ -15,6 +15,7 @@ #ifndef BORNAGAIN_GUI_MODEL_JOB_JOBITEM_H #define BORNAGAIN_GUI_MODEL_JOB_JOBITEM_H +#include "GUI/Model/Descriptor/PolyPtr.h" #include "GUI/Model/Sim/InstrumentCatalog.h" #include <QThread> #include <QXmlStreamReader> @@ -26,7 +27,6 @@ class DataItem; class Datafield; class DatafileItem; class FitSuiteItem; -class InstrumentItem; class JobWorker; class ParameterContainerItem; class ParameterTreeItems; @@ -64,7 +64,7 @@ public: //... instrument - InstrumentItem* instrumentItem() const { return m_instrument.get(); } + InstrumentItem* instrumentItem() const { return m_instrument.certainItem(); } //... simulation options @@ -129,7 +129,8 @@ private: std::unique_ptr<SimulationOptionsItem> m_simulation_options_item; std::unique_ptr<ParameterContainerItem> m_parameter_container; std::unique_ptr<SampleItem> m_sample_item; - std::unique_ptr<InstrumentItem> m_instrument; + PolyPtr<InstrumentItem, InstrumentCatalog> m_instrument; + std::unique_ptr<BatchInfo> m_batch_info; QString m_activity; std::unique_ptr<DataItem> m_simulated_data_item; -- GitLab