3 #include "../../debug_ui.h"
4 #include "components/3rdparty/imgui/misc/imgui_stdlib.h"
19 bool show_comments =
false;
26 void GenerateConfigurationSettingControl(BlamConfigurationSetting* setting)
28 switch (setting->type)
32 ImGui::Checkbox(setting->id.c_str(), setting->AsBool());
37 ImGui::InputText(setting->id.c_str(), setting->GetRawValue());
42 ImVec4
color = ImVec4(setting->AsColor()->GetRedAsFloat(), setting->AsColor()->GetGreenAsFloat(), setting->AsColor()->GetBlueAsFloat(), setting->AsColor()->GetAlphaAsFloat());
44 ImGui::ColorEdit4(setting->id.c_str(), (
float*)&
color);
46 setting->AsColor()->r =
color.x * 255;
47 setting->AsColor()->g =
color.y * 255;
48 setting->AsColor()->b =
color.z * 255;
49 setting->AsColor()->a =
color.w * 255;
55 ImGui::InputInt(setting->id.c_str(), setting->AsInt());
60 ImGui::InputFloat(setting->id.c_str(), setting->AsFloat());
63 case BlamConfigurationSettingType::Comment:
65 ImGui::TextDisabled(setting->AsString()->c_str());
70 ImGui::TextColored(ImVec4(1, 0, 0, 1), std::string(
"unsupported setting type (" + setting->id +
")").c_str());
80 void GenerateConfigurationSectionControl(BlamConfigurationSection* section)
82 std::vector<BlamConfigurationSetting*> settings_to_show = std::vector<BlamConfigurationSetting*>();
84 std::map<std::string, BlamConfigurationSetting*>::iterator it;
86 for (it = section->settings.begin(); it != section->settings.end(); it++)
88 if (it->second->type == BlamConfigurationSettingType::Comment)
92 settings_to_show.push_back(it->second);
97 settings_to_show.push_back(it->second);
101 if (settings_to_show.size() > 0)
103 if (ImGui::CollapsingHeader(section->name.c_str()))
105 for (
int i = 0; i < settings_to_show.size(); i++)
107 GenerateConfigurationSettingControl(settings_to_show.at(i));
119 if (ImGui::Begin(
"Configuration Editor", &
show))
121 if (ImGui::BeginTabBar(
"config_editor_tabs", ImGuiTabBarFlags_NoTooltip))
125 std::map<std::string, BlamConfigurationFile*>::iterator it;
127 for (it = config_files->begin(); it != config_files->end(); it++)
129 BlamConfigurationFile* config_file = it->second;
131 if (ImGui::BeginTabItem(config_file->filename.c_str()))
133 if (ImGui::Button(
"reload"))
135 config_file->Reload();
140 if (ImGui::Button(
"save"))
147 ImGui::Checkbox(
"show comments", &show_comments);
149 std::map<std::string, BlamConfigurationSection*>::iterator sit;
151 for (sit = config_file->sections.begin(); sit != config_file->sections.end(); sit++)
153 GenerateConfigurationSectionControl(sit->second);