From 64a6dbcfdb89a5f57d93d47a2be0c741dda4662d Mon Sep 17 00:00:00 2001 From: rtk0c Date: Sun, 15 Aug 2021 09:17:02 -0700 Subject: Fix issues and cleanup - Fix compile error on MSVC where is not included properly - Fix creating a workflow actually saves to the templates/ directory - Fix renaming assets are not saved to disk - TODO ser/deser still not working - Cleanup AssetList::* pure virtual setup (fewer splits) --- core/src/Model/Template/Template_Main.cpp | 90 ++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 31 deletions(-) (limited to 'core/src/Model/Template/Template_Main.cpp') diff --git a/core/src/Model/Template/Template_Main.cpp b/core/src/Model/Template/Template_Main.cpp index a681c4a..19803aa 100644 --- a/core/src/Model/Template/Template_Main.cpp +++ b/core/src/Model/Template/Template_Main.cpp @@ -2,8 +2,8 @@ #include "Model/GlobalStates.hpp" #include "Model/Project.hpp" -#include "Utils/I18n.hpp" #include "UI/UI.hpp" +#include "Utils/I18n.hpp" #include "Utils/UUID.hpp" #include @@ -57,28 +57,33 @@ fs::path TemplateAssetList::RetrievePathFromAsset(const SavedAsset& asset) const return GetConnectedProject().GetTemplatePath(fileName); } -void TemplateAssetList::SaveEmptyInstance(const SavedAsset& asset) const +bool TemplateAssetList::SaveInstance(const SavedAsset& assetInfo, const Asset* asset) const { - auto path = RetrievePathFromAsset(asset); + auto path = RetrievePathFromAsset(assetInfo); - std::ofstream ofs(path); - if (!ofs) return; - ofs << (uint64_t)asset.Name.size(); - ofs << asset.Name; - ofs << static_cast(asset.Payload); -} + std::ofstream ofs(path, std::ios::binary); + if (!ofs) return false; + ofs << (uint64_t)assetInfo.Name.size(); + ofs << assetInfo.Name; + ofs << static_cast(assetInfo.Payload); -Template* TemplateAssetList::CreateEmptyInstance(const SavedAsset& asset) const -{ - auto kind = static_cast(asset.Payload); - return Template::CreateByKind(kind).release(); + if (auto tmpl = static_cast(asset)) { + tmpl->WriteTo(ofs); + } + + return true; } -Template* TemplateAssetList::LoadImpl(const SavedAsset& asset) const +static std::unique_ptr