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
// ----------------------------------------------------------------------------
ParameterContainerItem::ParameterContainerItem() : SessionItem(M_TYPE)
ParameterContainerItem::ParameterContainerItem()
{
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));
......@@ -157,7 +157,7 @@ void ParameterContainerItem::writeNonSessionItems(QXmlStreamWriter* writer) cons
writer->writeEndElement();
}
void ParameterContainerItem::readNonSessionItems(QXmlStreamReader* reader)
void ParameterContainerItem::readContentFrom(QXmlStreamReader* reader)
{
m_backupValues.clear();
const int version = reader->attributes().value(GUI::Session::XML::Version).toInt();
......@@ -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)
{
m_backupValues[link] = d;
}
void ParameterContainerItem::restoreBackupValue(SessionItem* item)
void ParameterContainerItem::restoreBackupValue(QObject* item)
{
ASSERT(item);
if (auto* parameter = dynamic_cast<ParameterItem*>(item))
......@@ -207,7 +201,7 @@ void ParameterContainerItem::restoreBackupValue(SessionItem* item)
void ParameterContainerItem::restoreBackupValues()
{
for (auto* child : children())
for (auto* child : m_parameterTreeRoot->children())
restoreBackupValue(child);
}
......
......@@ -77,15 +77,12 @@ private:
//! The ParameterContainerItem is a top item to hold all ParameterItem, represents an entry
//! point to parameter tuning tree. Part of JobItem.
class ParameterContainerItem : public SessionItem {
class ParameterContainerItem {
public:
static constexpr auto M_TYPE{"Parameter Container"};
ParameterContainerItem();
void writeNonSessionItems(QXmlStreamWriter* writer) const override;
void readNonSessionItems(QXmlStreamReader* reader) override;
bool allowWritingChildToXml(SessionItem* child) const override;
void writeContentTo(QXmlStreamWriter* writer) const;
void readContentFrom(QXmlStreamReader* reader);
void setBackupValue(const QString& link, double d);
void restoreBackupValues();
......@@ -95,7 +92,7 @@ public:
QObject* parameterTreeRoot();
private:
void restoreBackupValue(SessionItem* item);
void restoreBackupValue(QObject* item);
QMap<QString, double> m_backupValues;
std::unique_ptr<QObject> m_parameterTreeRoot;
......
......@@ -292,7 +292,6 @@ ItemCatalog::ItemCatalog()
addItem<GroupItem>();
addItem<ParameterContainerItem>();
addItem<FitParameterContainerItem>();
addItem<FitParameterItem>();
addItem<FitParameterLinkItem>();
......
......@@ -33,10 +33,13 @@
using namespace GUI::Session::XML;
namespace {
namespace Tags {
const QString SimulationOptionsTag("SimulationOptions");
const QString MaterialsTag("Materials");
const QString SimulationOptions("SimulationOptions");
const QString Materials("Materials");
const QString ParameterContainer("ParameterContainer");
} // namespace Tags
} // namespace
......@@ -64,7 +67,6 @@ JobItem::JobItem() : SessionItem(M_TYPE)
registerTag(T_OUTPUT, 1, 1, {IntensityDataItem::M_TYPE, SpecularDataItem::M_TYPE});
registerTag(T_REALDATA, 1, 1, {RealDataItem::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});
......@@ -304,7 +306,7 @@ ParameterContainerItem* JobItem::parameterContainerItem()
const ParameterContainerItem* JobItem::parameterContainerItem() const
{
return dynamic_cast<ParameterContainerItem*>(getItem(T_PARAMETER_TREE));
return &m_parameterContainer;
}
FitParameterContainerItem* JobItem::fitParameterContainerItem()
......@@ -315,11 +317,6 @@ FitParameterContainerItem* JobItem::fitParameterContainerItem()
return nullptr;
}
ParameterContainerItem* JobItem::createParameterContainerItem()
{
return model()->insertItem<ParameterContainerItem>(this, -1, T_PARAMETER_TREE);
}
RealDataItem* JobItem::realDataItem()
{
return dynamic_cast<RealDataItem*>(getItem(JobItem::T_REALDATA));
......@@ -389,13 +386,17 @@ void JobItem::writeNonSessionItems(QXmlStreamWriter* writer) const
{
writeAttribute(writer, GUI::Session::XML::Version, int(1));
writer->writeStartElement(SimulationOptionsTag);
writer->writeStartElement(Tags::SimulationOptions);
m_simulationOptionsItem.writeContentTo(writer);
writer->writeEndElement();
writer->writeStartElement(MaterialsTag);
writer->writeStartElement(Tags::Materials);
m_materials.writeContentTo(writer);
writer->writeEndElement();
writer->writeStartElement(Tags::ParameterContainer);
m_parameterContainer.writeContentTo(writer);
writer->writeEndElement();
}
void JobItem::readNonSessionItems(QXmlStreamReader* reader)
......@@ -409,12 +410,13 @@ void JobItem::readNonSessionItems(QXmlStreamReader* reader)
throw DeserializationException::tooNew();
while (reader->readNextStartElement()) {
if (reader->name() == SimulationOptionsTag) {
if (reader->name() == Tags::SimulationOptions) {
m_simulationOptionsItem.readContentFrom(reader);
reader->skipCurrentElement();
} else if (reader->name() == MaterialsTag) {
} else if (reader->name() == Tags::Materials)
m_materials.readContentFrom(reader);
}
else if (reader->name() == Tags::ParameterContainer)
m_parameterContainer.readContentFrom(reader);
}
}
......
......@@ -15,6 +15,7 @@
#ifndef 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/Material/MaterialModel.h"
#include "GUI/Model/Session/SessionItem.h"
......@@ -55,7 +56,6 @@ private:
static constexpr auto T_OUTPUT{"Output tag"};
static constexpr auto T_REALDATA{"Real Data 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"};
public:
......@@ -123,7 +123,6 @@ public:
ParameterContainerItem* parameterContainerItem();
const ParameterContainerItem* parameterContainerItem() const;
FitParameterContainerItem* fitParameterContainerItem();
ParameterContainerItem* createParameterContainerItem();
RealDataItem* realDataItem();
RealDataItem* copyRealDataIntoJob(const RealDataItem* real_data);
......@@ -155,6 +154,7 @@ private:
SimulationOptionsItem m_simulationOptionsItem;
MaterialModel m_materials;
ParameterContainerItem m_parameterContainer;
};
template <typename T> T* JobItem::setDataType()
......
......@@ -117,8 +117,6 @@ void GUI::Model::ParameterTreeUtils::createParameterTree(JobItem* jobItem,
bool recreateBackupValues)
{
auto* container = jobItem->parameterContainerItem();
if (!container)
container = jobItem->createParameterContainerItem();
// add the job's materials
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