From c1df74681330b82787d45b94bdf6dc72de542249 Mon Sep 17 00:00:00 2001 From: Ammerhai Date: Tue, 18 Nov 2025 17:03:27 +0100 Subject: [PATCH] add legend functionality - edit - delete - add #6 --- src/work-calendar.cpp | 67 +++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/src/work-calendar.cpp b/src/work-calendar.cpp index 1e1bfdc..5ee5c21 100644 --- a/src/work-calendar.cpp +++ b/src/work-calendar.cpp @@ -51,6 +51,15 @@ void init(){ static const char* month_names[] = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"}; +typedef struct { + bool editing = false; + float color[3]; + char name[64] = "New Category"; +} Category; + +size_t num_categories = 0; +Category categories[128]; + void per_frame(){ ImGuiID main_viewport_dock = ImGui::GetID("main_viewport_dock"); if (!ImGui::DockBuilderGetNode(main_viewport_dock)) { @@ -195,40 +204,50 @@ void per_frame(){ // Legende if (ImGui::Begin("Legende", 0)) { - static float col[3] = {}; - static bool editing = false; - static char name[64] = "color"; - if(ImGui::BeginTable("Legend", 4, ImGuiTableFlags_SizingStretchProp)) { ImGui::TableSetupColumn("Color", ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthStretch); ImGui::TableSetupColumn("Edit", ImGuiTableColumnFlags_WidthFixed); ImGui::TableSetupColumn("Delete", ImGuiTableColumnFlags_WidthFixed ); + for (size_t i = 0; i < num_categories; i++) { + auto &category = categories[i]; + ImGui::PushID(i); + ImGui::TableNextRow(); + + ImGui::TableSetColumnIndex(0); + ImGuiColorEditFlags color_edit_flags = ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoOptions; + ImGui::ColorEdit3(category.name, category.color, ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_NoInputs | (category.editing ? 0 : color_edit_flags)); + + ImGui::TableSetColumnIndex(1); + if (category.editing) { + ImGui::SetNextItemWidth(-1); + if(ImGui::InputText("##name", category.name, IM_ARRAYSIZE(category.name), ImGuiInputTextFlags_EnterReturnsTrue)) { + category.editing = false; + } + } else { + ImGui::Text("%s", category.name); + } + + ImGui::TableSetColumnIndex(2); + if (ImGui::Button("e")) + category.editing = !category.editing; + + ImGui::TableSetColumnIndex(3); + if (ImGui::Button("d")) { + num_categories--; + } + + ImGui::PopID(); + } + ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); - - //ImGui::ColorPicker3("colortest", col); - ImGui::ColorEdit3(name, col, ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_NoInputs); - ImGui::TableSetColumnIndex(1); - if (editing) { - ImGui::SetNextItemWidth(-1); - if(ImGui::InputText("##name", name, IM_ARRAYSIZE(name), ImGuiInputTextFlags_EnterReturnsTrue)) { - editing = false; - } - } else { - ImGui::Text("%s", name); + if (ImGui::Button("+")) { + categories[num_categories] = {}; + num_categories++; } - ImGui::TableSetColumnIndex(2); - if(ImGui::Button("e")) { - editing = true; - } - - //TODO - ImGui::TableSetColumnIndex(3); - ImGui::Button("d"); - ImGui::EndTable(); } }