diff --git a/src/Lib/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc index d907d412141d03e53be3567e4c76759b0e262d17..e525db396df854f4e0fbfe1eb4af21f8b38f8b5d 100644 --- a/src/Lib/Document/VivyDocument.cc +++ b/src/Lib/Document/VivyDocument.cc @@ -79,10 +79,13 @@ VivyDocument::loadSaveJsonDocumentFile_ALPHA(VivyDocument *const self, const QJs if (json[KeyName].toString() != self->documentName) throw std::runtime_error("The document was edited outside of Vivy"); - if (QJsonValue audio = json[KeySubDocuments][KeySubAudio]; !audio.isNull()) - self->loadSubDocument(audio.toString(), Capabilities::AudioAble); - if (QJsonValue video = json[KeySubDocuments][KeySubVideo]; !video.isNull()) - self->loadSubDocument(video.toString(), Capabilities::VideoAble); + if (QJsonValue audio = json[KeySubDocuments][KeySubAudio]; + !audio.isNull() && !self->loadSubDocument(audio.toString(), Capabilities::AudioAble)) + throw std::runtime_error("Failed to load audio sub document"); + + if (QJsonValue video = json[KeySubDocuments][KeySubVideo]; + !video.isNull() && !self->loadSubDocument(video.toString(), Capabilities::VideoAble)) + throw std::runtime_error("Failed to load video sub document"); if (QJsonValue internalAssSource = json[KeySubDocuments][KeyInternalAssSource]; !internalAssSource.isNull() && internalAssSource.toBool()) { @@ -90,7 +93,8 @@ VivyDocument::loadSaveJsonDocumentFile_ALPHA(VivyDocument *const self, const QJs throw std::runtime_error("The internal ASS feature is not supported for now"); } else if (QJsonValue ass = json[KeySubDocuments][KeySubAss]; !ass.isNull()) { // ASS in its own ASS file - self->loadSubDocument(ass.toString(), Capabilities::AssAble); + if (!self->loadSubDocument(ass.toString(), Capabilities::AssAble)) + throw std::runtime_error("Failed to load ASS sub document"); } } @@ -130,7 +134,7 @@ VivyDocument::getSaveJsonDocumentFile() const subDocumentJson.insert(KeySubAudio, audioDocument->getFilePath()); if (documentType & Capabilities::VideoAble) - subDocumentJson.insert(KeySubAudio, videoDocument->getFilePath()); + subDocumentJson.insert(KeySubVideo, videoDocument->getFilePath()); if (documentType & Capabilities::AssAble) { // ASS is inside Vivy document @@ -141,7 +145,7 @@ VivyDocument::getSaveJsonDocumentFile() const // ASS is ints own ASS file else - subDocumentJson.insert(KeySubAudio, assDocument->getFilePath()); + subDocumentJson.insert(KeySubAss, assDocument->getFilePath()); } json.insert(KeySubDocuments, subDocumentJson); diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc index 7430255d9a231291e2e6e37806bff4e83dd0fcec..7194b30f110d0dd690b7851611bcda70dd3d4e69 100644 --- a/src/UI/MainWindow.cc +++ b/src/UI/MainWindow.cc @@ -356,8 +356,7 @@ MainWindow::openDocument() noexcept // Handle the different types here try { - if ((fileType == Utils::DocumentType::Video) || (fileType == Utils::DocumentType::Vivy) || - (fileType == Utils::DocumentType::Audio) || (fileType == Utils::DocumentType::ASS)) + if (fileType == Utils::DocumentType::Vivy) addTab(new VivyDocumentView(vivyApp->documentStore.loadDocument(filename), documents)); else if (fileType == Utils::DocumentType::VivyScript) {