aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template/Template_Main.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2021-06-05 19:44:54 -0700
committerrtk0c <[email protected]>2021-06-05 19:44:54 -0700
commita180e1b56025c6b7d81d2e587ad90531d29de44c (patch)
tree1c88361320371b508c81b52a28ae0579fcdd1fd7 /core/src/Model/Template/Template_Main.cpp
parentd3fa128d5408673b0ea8d3ba3435c38b258a5e7a (diff)
Initial work on asset system (does not compile)
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;
}