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

improve project reading/writing

parent 8ad4d93e
No related branches found
No related tags found
1 merge request!494Remove SessionModel/SessionItem from MaterialModel/MaterialItem
...@@ -339,9 +339,10 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device, ...@@ -339,9 +339,10 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device,
else if (reader.name() == SimulationOptionsTag) { else if (reader.name() == SimulationOptionsTag) {
m_simulationOptionsItem.readContentFrom(&reader); m_simulationOptionsItem.readContentFrom(&reader);
reader.skipCurrentElement(); reader.skipCurrentElement();
ASSERT(reader.name() == SimulationOptionsTag);
} else if (reader.name() == MaterialsTag) { } else if (reader.name() == MaterialsTag) {
m_materials.readContentFrom(&reader); m_materials.readContentFrom(&reader);
reader.skipCurrentElement(); ASSERT(reader.name() == MaterialsTag);
} else } else
m_applicationModels.readFrom(&reader, &messageService); m_applicationModels.readFrom(&reader, &messageService);
} }
...@@ -353,6 +354,16 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device, ...@@ -353,6 +354,16 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device,
for (auto itemWithMaterial : multiLayerItem->itemsWithMaterial()) for (auto itemWithMaterial : multiLayerItem->itemsWithMaterial())
itemWithMaterial->setMaterialModel(materialModel()); itemWithMaterial->setMaterialModel(materialModel());
// make a sanity check whether all materials are present
for (auto multiLayerItem : m_applicationModels.sampleModel()->multiLayerItems())
for (auto itemWithMaterial : multiLayerItem->itemsWithMaterial())
if (itemWithMaterial->materialItem() == nullptr) {
QString message = QString("Material link is broken (id: '%1')")
.arg(itemWithMaterial->materialIdentifier());
messageService.addError(this, message);
return ReadResult::error;
}
if (reader.hasError()) { if (reader.hasError()) {
QString message = QString("Format error '%1'").arg(reader.errorString()); QString message = QString("Format error '%1'").arg(reader.errorString());
messageService.addError(this, message); messageService.addError(this, message);
......
...@@ -157,7 +157,7 @@ void GUI::Session::XML::writeAttribute(QXmlStreamWriter* writer, const QString& ...@@ -157,7 +157,7 @@ void GUI::Session::XML::writeAttribute(QXmlStreamWriter* writer, const QString&
void GUI::Session::XML::writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, void GUI::Session::XML::writeAttribute(QXmlStreamWriter* writer, const QString& attributeName,
double d) double d)
{ {
writer->writeAttribute(attributeName, QString::number(d, 'e', 12)); writer->writeAttribute(attributeName, d == 0.0 ? "0" : QString::number(d, 'e', 12));
} }
void GUI::Session::XML::writeAttribute(QXmlStreamWriter* writer, const QString& attributeName, void GUI::Session::XML::writeAttribute(QXmlStreamWriter* writer, const QString& attributeName,
......
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