aboutsummaryrefslogtreecommitdiff
path: root/core/src/Model/Template/Template_Main.cpp
blob: 9efbeae2e9016faed5e92097051e20983f25177e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#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 }
{
}

Template::Kind Template::GetKind() const
{
	return mKind;
}

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
}