Skip to content
Snippets Groups Projects
Commit 19512212 authored by Matthias Puchner's avatar Matthias Puchner
Browse files

free parameterContainerItem from SessionItem/-Model

parent cf36d859
No related branches found
No related tags found
1 merge request!570remove SessionModel/Item from SampleModel and all related items
...@@ -138,12 +138,12 @@ QString ParameterItem::titleForFitItem() const ...@@ -138,12 +138,12 @@ QString ParameterItem::titleForFitItem() const
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
ParameterContainerItem::ParameterContainerItem() : SessionItem(M_TYPE) ParameterContainerItem::ParameterContainerItem()
{ {
m_parameterTreeRoot.reset(new QObject()); m_parameterTreeRoot.reset(new QObject());
} }
void ParameterContainerItem::writeNonSessionItems(QXmlStreamWriter* writer) const void ParameterContainerItem::writeContentTo(QXmlStreamWriter* writer) const
{ {
writeAttribute(writer, GUI::Session::XML::Version, int(1)); writeAttribute(writer, GUI::Session::XML::Version, int(1));
...@@ -157,7 +157,7 @@ void ParameterContainerItem::writeNonSessionItems(QXmlStreamWriter* writer) cons ...@@ -157,7 +157,7 @@ void ParameterContainerItem::writeNonSessionItems(QXmlStreamWriter* writer) cons
writer->writeEndElement(); writer->writeEndElement();
} }
void ParameterContainerItem::readNonSessionItems(QXmlStreamReader* reader) void ParameterContainerItem::readContentFrom(QXmlStreamReader* reader)
{ {
m_backupValues.clear(); m_backupValues.clear();
const int version = reader->attributes().value(GUI::Session::XML::Version).toInt(); const int version = reader->attributes().value(GUI::Session::XML::Version).toInt();
...@@ -183,18 +183,12 @@ void ParameterContainerItem::readNonSessionItems(QXmlStreamReader* reader) ...@@ -183,18 +183,12 @@ void ParameterContainerItem::readNonSessionItems(QXmlStreamReader* reader)
} }
} }
bool ParameterContainerItem::allowWritingChildToXml(SessionItem* /*child*/) const
{
// no children are written. The contained tree is always generated
return false;
}
void ParameterContainerItem::setBackupValue(const QString& link, double d) void ParameterContainerItem::setBackupValue(const QString& link, double d)
{ {
m_backupValues[link] = d; m_backupValues[link] = d;
} }
void ParameterContainerItem::restoreBackupValue(SessionItem* item) void ParameterContainerItem::restoreBackupValue(QObject* item)
{ {
ASSERT(item); ASSERT(item);
if (auto* parameter = dynamic_cast<ParameterItem*>(item)) if (auto* parameter = dynamic_cast<ParameterItem*>(item))
...@@ -207,7 +201,7 @@ void ParameterContainerItem::restoreBackupValue(SessionItem* item) ...@@ -207,7 +201,7 @@ void ParameterContainerItem::restoreBackupValue(SessionItem* item)
void ParameterContainerItem::restoreBackupValues() void ParameterContainerItem::restoreBackupValues()
{ {
for (auto* child : children()) for (auto* child : m_parameterTreeRoot->children())
restoreBackupValue(child); restoreBackupValue(child);
} }
......
...@@ -77,15 +77,12 @@ private: ...@@ -77,15 +77,12 @@ private:
//! The ParameterContainerItem is a top item to hold all ParameterItem, represents an entry //! The ParameterContainerItem is a top item to hold all ParameterItem, represents an entry
//! point to parameter tuning tree. Part of JobItem. //! point to parameter tuning tree. Part of JobItem.
class ParameterContainerItem : public SessionItem { class ParameterContainerItem {
public: public:
static constexpr auto M_TYPE{"Parameter Container"};
ParameterContainerItem(); ParameterContainerItem();
void writeNonSessionItems(QXmlStreamWriter* writer) const override; void writeContentTo(QXmlStreamWriter* writer) const;
void readNonSessionItems(QXmlStreamReader* reader) override; void readContentFrom(QXmlStreamReader* reader);
bool allowWritingChildToXml(SessionItem* child) const override;
void setBackupValue(const QString& link, double d); void setBackupValue(const QString& link, double d);
void restoreBackupValues(); void restoreBackupValues();
...@@ -95,7 +92,7 @@ public: ...@@ -95,7 +92,7 @@ public:
QObject* parameterTreeRoot(); QObject* parameterTreeRoot();
private: private:
void restoreBackupValue(SessionItem* item); void restoreBackupValue(QObject* item);
QMap<QString, double> m_backupValues; QMap<QString, double> m_backupValues;
std::unique_ptr<QObject> m_parameterTreeRoot; std::unique_ptr<QObject> m_parameterTreeRoot;
......
...@@ -292,7 +292,6 @@ ItemCatalog::ItemCatalog() ...@@ -292,7 +292,6 @@ ItemCatalog::ItemCatalog()
addItem<GroupItem>(); addItem<GroupItem>();
addItem<ParameterContainerItem>();
addItem<FitParameterContainerItem>(); addItem<FitParameterContainerItem>();
addItem<FitParameterItem>(); addItem<FitParameterItem>();
addItem<FitParameterLinkItem>(); addItem<FitParameterLinkItem>();
......
...@@ -33,10 +33,13 @@ ...@@ -33,10 +33,13 @@
using namespace GUI::Session::XML; using namespace GUI::Session::XML;
namespace { namespace {
namespace Tags {
const QString SimulationOptionsTag("SimulationOptions"); const QString SimulationOptions("SimulationOptions");
const QString MaterialsTag("Materials"); const QString Materials("Materials");
const QString ParameterContainer("ParameterContainer");
} // namespace Tags
} // namespace } // namespace
...@@ -64,7 +67,6 @@ JobItem::JobItem() : SessionItem(M_TYPE) ...@@ -64,7 +67,6 @@ JobItem::JobItem() : SessionItem(M_TYPE)
registerTag(T_OUTPUT, 1, 1, {IntensityDataItem::M_TYPE, SpecularDataItem::M_TYPE}); registerTag(T_OUTPUT, 1, 1, {IntensityDataItem::M_TYPE, SpecularDataItem::M_TYPE});
registerTag(T_REALDATA, 1, 1, {RealDataItem::M_TYPE}); registerTag(T_REALDATA, 1, 1, {RealDataItem::M_TYPE});
registerTag(T_DATAVIEW, 1, 1, {Data1DViewItem::M_TYPE}); registerTag(T_DATAVIEW, 1, 1, {Data1DViewItem::M_TYPE});
registerTag(T_PARAMETER_TREE, 0, -1, {ParameterContainerItem::M_TYPE});
registerTag(T_FIT_SUITE, 1, 1, {FitSuiteItem::M_TYPE}); registerTag(T_FIT_SUITE, 1, 1, {FitSuiteItem::M_TYPE});
...@@ -304,7 +306,7 @@ ParameterContainerItem* JobItem::parameterContainerItem() ...@@ -304,7 +306,7 @@ ParameterContainerItem* JobItem::parameterContainerItem()
const ParameterContainerItem* JobItem::parameterContainerItem() const const ParameterContainerItem* JobItem::parameterContainerItem() const
{ {
return dynamic_cast<ParameterContainerItem*>(getItem(T_PARAMETER_TREE)); return &m_parameterContainer;
} }
FitParameterContainerItem* JobItem::fitParameterContainerItem() FitParameterContainerItem* JobItem::fitParameterContainerItem()
...@@ -315,11 +317,6 @@ FitParameterContainerItem* JobItem::fitParameterContainerItem() ...@@ -315,11 +317,6 @@ FitParameterContainerItem* JobItem::fitParameterContainerItem()
return nullptr; return nullptr;
} }
ParameterContainerItem* JobItem::createParameterContainerItem()
{
return model()->insertItem<ParameterContainerItem>(this, -1, T_PARAMETER_TREE);
}
RealDataItem* JobItem::realDataItem() RealDataItem* JobItem::realDataItem()
{ {
return dynamic_cast<RealDataItem*>(getItem(JobItem::T_REALDATA)); return dynamic_cast<RealDataItem*>(getItem(JobItem::T_REALDATA));
...@@ -389,13 +386,17 @@ void JobItem::writeNonSessionItems(QXmlStreamWriter* writer) const ...@@ -389,13 +386,17 @@ void JobItem::writeNonSessionItems(QXmlStreamWriter* writer) const
{ {
writeAttribute(writer, GUI::Session::XML::Version, int(1)); writeAttribute(writer, GUI::Session::XML::Version, int(1));
writer->writeStartElement(SimulationOptionsTag); writer->writeStartElement(Tags::SimulationOptions);
m_simulationOptionsItem.writeContentTo(writer); m_simulationOptionsItem.writeContentTo(writer);
writer->writeEndElement(); writer->writeEndElement();
writer->writeStartElement(MaterialsTag); writer->writeStartElement(Tags::Materials);
m_materials.writeContentTo(writer); m_materials.writeContentTo(writer);
writer->writeEndElement(); writer->writeEndElement();
writer->writeStartElement(Tags::ParameterContainer);
m_parameterContainer.writeContentTo(writer);
writer->writeEndElement();
} }
void JobItem::readNonSessionItems(QXmlStreamReader* reader) void JobItem::readNonSessionItems(QXmlStreamReader* reader)
...@@ -409,12 +410,13 @@ void JobItem::readNonSessionItems(QXmlStreamReader* reader) ...@@ -409,12 +410,13 @@ void JobItem::readNonSessionItems(QXmlStreamReader* reader)
throw DeserializationException::tooNew(); throw DeserializationException::tooNew();
while (reader->readNextStartElement()) { while (reader->readNextStartElement()) {
if (reader->name() == SimulationOptionsTag) { if (reader->name() == Tags::SimulationOptions) {
m_simulationOptionsItem.readContentFrom(reader); m_simulationOptionsItem.readContentFrom(reader);
reader->skipCurrentElement(); reader->skipCurrentElement();
} else if (reader->name() == MaterialsTag) { } else if (reader->name() == Tags::Materials)
m_materials.readContentFrom(reader); m_materials.readContentFrom(reader);
} else if (reader->name() == Tags::ParameterContainer)
m_parameterContainer.readContentFrom(reader);
} }
} }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#ifndef BORNAGAIN_GUI_MODEL_JOB_JOBITEM_H #ifndef BORNAGAIN_GUI_MODEL_JOB_JOBITEM_H
#define BORNAGAIN_GUI_MODEL_JOB_JOBITEM_H #define BORNAGAIN_GUI_MODEL_JOB_JOBITEM_H
#include "GUI/Model/Fit/ParameterTreeItems.h"
#include "GUI/Model/Job/JobStatus.h" // enum cannot be forward declared #include "GUI/Model/Job/JobStatus.h" // enum cannot be forward declared
#include "GUI/Model/Material/MaterialModel.h" #include "GUI/Model/Material/MaterialModel.h"
#include "GUI/Model/Session/SessionItem.h" #include "GUI/Model/Session/SessionItem.h"
...@@ -55,7 +56,6 @@ private: ...@@ -55,7 +56,6 @@ private:
static constexpr auto T_OUTPUT{"Output tag"}; static constexpr auto T_OUTPUT{"Output tag"};
static constexpr auto T_REALDATA{"Real Data tag"}; static constexpr auto T_REALDATA{"Real Data tag"};
static constexpr auto T_DATAVIEW{"Data View tag"}; static constexpr auto T_DATAVIEW{"Data View tag"};
static constexpr auto T_PARAMETER_TREE{"Parameter tree tag"};
static constexpr auto T_FIT_SUITE{"Fit suite tag"}; static constexpr auto T_FIT_SUITE{"Fit suite tag"};
public: public:
...@@ -123,7 +123,6 @@ public: ...@@ -123,7 +123,6 @@ public:
ParameterContainerItem* parameterContainerItem(); ParameterContainerItem* parameterContainerItem();
const ParameterContainerItem* parameterContainerItem() const; const ParameterContainerItem* parameterContainerItem() const;
FitParameterContainerItem* fitParameterContainerItem(); FitParameterContainerItem* fitParameterContainerItem();
ParameterContainerItem* createParameterContainerItem();
RealDataItem* realDataItem(); RealDataItem* realDataItem();
RealDataItem* copyRealDataIntoJob(const RealDataItem* real_data); RealDataItem* copyRealDataIntoJob(const RealDataItem* real_data);
...@@ -155,6 +154,7 @@ private: ...@@ -155,6 +154,7 @@ private:
SimulationOptionsItem m_simulationOptionsItem; SimulationOptionsItem m_simulationOptionsItem;
MaterialModel m_materials; MaterialModel m_materials;
ParameterContainerItem m_parameterContainer;
}; };
template <typename T> T* JobItem::setDataType() template <typename T> T* JobItem::setDataType()
......
...@@ -117,8 +117,6 @@ void GUI::Model::ParameterTreeUtils::createParameterTree(JobItem* jobItem, ...@@ -117,8 +117,6 @@ void GUI::Model::ParameterTreeUtils::createParameterTree(JobItem* jobItem,
bool recreateBackupValues) bool recreateBackupValues)
{ {
auto* container = jobItem->parameterContainerItem(); auto* container = jobItem->parameterContainerItem();
if (!container)
container = jobItem->createParameterContainerItem();
// add the job's materials // add the job's materials
auto* materialTopLabel = new ParameterLabelItem(container->parameterTreeRoot()); auto* materialTopLabel = new ParameterLabelItem(container->parameterTreeRoot());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment