mainwindow/project: implemented saving/restoring panel state to project file

This commit is contained in:
itsmattkc
2020-04-19 02:25:02 +10:00
parent 8a26e14efa
commit d232e035f5
10 changed files with 131 additions and 20 deletions
+6 -2
View File
@@ -51,6 +51,8 @@ void Folder::Load(QXmlStreamReader *reader, XMLNodeData& xml_node_data, const QA
if (attr.name() == QStringLiteral("name")) {
set_name(attr.value().toString());
} else if (attr.name() == QStringLiteral("ptr")) {
xml_node_data.item_ptrs.insert(attr.value().toULongLong(), this);
}
}
@@ -79,9 +81,11 @@ void Folder::Load(QXmlStreamReader *reader, XMLNodeData& xml_node_data, const QA
void Folder::Save(QXmlStreamWriter *writer) const
{
writer->writeStartElement("folder");
writer->writeStartElement(QStringLiteral("folder"));
writer->writeAttribute("name", name());
writer->writeAttribute(QStringLiteral("name"), name());
writer->writeAttribute(QStringLiteral("ptr"), QString::number(reinterpret_cast<quintptr>(this)));
foreach (ItemPtr child, children()) {
child->Save(writer);
+15 -13
View File
@@ -51,10 +51,10 @@ void Sequence::Load(QXmlStreamReader *reader, XMLNodeData& xml_node_data, const
return;
}
if (attr.name() == "name") {
if (attr.name() == QStringLiteral("name")) {
set_name(attr.value().toString());
// Currently the only thing we care about
} else if (attr.name() == QStringLiteral("ptr")) {
xml_node_data.item_ptrs.insert(attr.value().toULongLong(), this);
}
}
@@ -137,22 +137,24 @@ void Sequence::Load(QXmlStreamReader *reader, XMLNodeData& xml_node_data, const
void Sequence::Save(QXmlStreamWriter *writer) const
{
writer->writeStartElement("sequence");
writer->writeStartElement(QStringLiteral("sequence"));
writer->writeAttribute("name", name());
writer->writeAttribute(QStringLiteral("name"), name());
writer->writeStartElement("video");
writer->writeAttribute(QStringLiteral("ptr"), QString::number(reinterpret_cast<quintptr>(viewer_output_)));
writer->writeTextElement("width", QString::number(video_params().width()));
writer->writeTextElement("height", QString::number(video_params().height()));
writer->writeTextElement("timebase", video_params().time_base().toString());
writer->writeStartElement(QStringLiteral("video"));
writer->writeTextElement(QStringLiteral("width"), QString::number(video_params().width()));
writer->writeTextElement(QStringLiteral("height"), QString::number(video_params().height()));
writer->writeTextElement(QStringLiteral("timebase"), video_params().time_base().toString());
writer->writeEndElement(); // video
writer->writeStartElement("audio");
writer->writeStartElement(QStringLiteral("audio"));
writer->writeTextElement("rate", QString::number(audio_params().sample_rate()));
writer->writeTextElement("layout", QString::number(audio_params().channel_layout()));
writer->writeTextElement(QStringLiteral("rate"), QString::number(audio_params().sample_rate()));
writer->writeTextElement(QStringLiteral("layout"), QString::number(audio_params().channel_layout()));
writer->writeEndElement(); // audio
@@ -165,7 +167,7 @@ void Sequence::Save(QXmlStreamWriter *writer) const
}
}
viewer_output_->Save(writer, "viewer");
viewer_output_->Save(writer, QStringLiteral("viewer"));
writer->writeEndElement(); // sequence
}
+7
View File
@@ -60,6 +60,10 @@ void Project::Load(QXmlStreamReader *reader, const QAtomicInt* cancelled)
}
}
} else if (reader->name() == QStringLiteral("layout")) {
Core::instance()->main_window()->LoadLayout(reader, xml_node_data);
} else {
reader->skipCurrentElement();
}
@@ -88,6 +92,9 @@ void Project::Save(QXmlStreamWriter *writer) const
writer->writeEndElement(); // colormanagement
// Save main window project layout
Core::instance()->main_window()->SaveLayout(writer);
writer->writeEndElement(); // project
}