aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template/Template_Main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/Model/Template/Template_Main.cpp')
-rw-r--r--core/src/Model/Template/Template_Main.cpp66
1 files changed, 64 insertions, 2 deletions
diff --git a/core/src/Model/Template/Template_Main.cpp b/core/src/Model/Template/Template_Main.cpp
index 35da52b..9efbeae 100644
--- a/core/src/Model/Template/Template_Main.cpp
+++ b/core/src/Model/Template/Template_Main.cpp
@@ -1,5 +1,15 @@
#include "Template.hpp"
+#include "Model/GlobalStates.hpp"
+#include "Model/Project.hpp"
+
+#include <imgui.h>
+#include <fstream>
+
+using namespace std::literals::string_view_literals;
+
+constinit const TemplateAssetCategory Template::Category{};
+
Template::Template(Kind kind)
: mKind{ kind }
{
@@ -10,8 +20,60 @@ Template::Kind Template::GetKind() const
return mKind;
}
-std::unique_ptr<Template> TemplateInfo::LoadFromDisk() const
+void TemplateAssetCategory::DiscoverFiles(const std::function<void(SavedAsset)>& callback) const
{
+ auto& gs = GlobalStates::GetInstance();
+ DiscoverFilesByExtension(callback, gs.GetCurrentProject()->GetTemplatesDirectory(), ".cplt-template"sv);
+}
+
+Template* TemplateAssetCategory::CreateEmpty(const SavedAsset& diskForm) const
+{
+ // TODO
+}
+
+Template* TemplateAssetCategory::Load(const SavedAsset& diskForm) const
+{
+ std::ifstream ifs(diskForm.Path);
+ if (!ifs) return nullptr;
+
+ uint32_t iKind;
+ ifs >> iKind;
+
+ auto kind = (Template::Kind)iKind;
+ auto tmpl = Template::CreateByKind(kind);
+
+ auto res = tmpl->ReadFrom(ifs);
+ if (res != Template::RR_Success) {
+ return nullptr;
+ }
+
+ return tmpl.release();
+}
+
+void TemplateAssetCategory::SetupDetailsTable(const char* tableId) const
+{
+ ImGui::BeginTable(tableId, 3);
+
+ ImGui::TableSetupColumn("Name");
+ ImGui::TableSetupColumn("Type");
+ ImGui::TableSetupColumn("Modified time");
+ ImGui::TableHeadersRow();
+}
+
+void TemplateAssetCategory::DrawBigIcon(const SavedAsset& asset) const
+{
+ // TODO
+}
+
+void TemplateAssetCategory::DrawDetailsTableRow(const SavedAsset& asset) const
+{
+ ImGui::TableNextColumn();
+ ImGui::TextUnformatted(asset.Name.c_str());
+
+ ImGui::TableNextColumn();
+ // TODO
+ //ImGui::TextUnformatted(Template::FormatKind(asset.));
+
+ ImGui::TableNextColumn();
// TODO
- return nullptr;
}