From 58646e45c1b0dc717064327583e7b840d3dac432 Mon Sep 17 00:00:00 2001 From: Piotr Wasilewski Date: Wed, 5 Feb 2025 19:32:44 +0100 Subject: [PATCH] fix: do not allow bar and XY plot in recorder --- src/Gui/GuiPlotEdit.hpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/Gui/GuiPlotEdit.hpp b/src/Gui/GuiPlotEdit.hpp index 51511395..3da249fc 100644 --- a/src/Gui/GuiPlotEdit.hpp +++ b/src/Gui/GuiPlotEdit.hpp @@ -87,12 +87,32 @@ class PlotEditWindow popup.show("Error!", "Plot already exists!", 1.5f); } - const char* plotTypes[] = {"curve", "bar", "table", "XY"}; - int32_t typeCombo = (int32_t)editedPlot->getType(); + const std::array plotTypes = {"curve", "bar", "table", "XY"}; + bool isRecorder = plotGroupHandler->getActiveGroup()->getAcquisitionType() == PlotGroup::AcquisitionType::RECORDER; + const std::array disabledOptions = {false, isRecorder, false, isRecorder}; + + size_t typeCombo = (int32_t)editedPlot->getType(); GuiHelper::drawTextAlignedToSize("type:", alignment); ImGui::SameLine(); - if (ImGui::Combo("##combo", &typeCombo, plotTypes, IM_ARRAYSIZE(plotTypes))) - editedPlot->setType((Plot::Type)typeCombo); + if (ImGui::BeginCombo("##combo", plotTypes[typeCombo].c_str())) + { + for (size_t i = 0; i < plotTypes.size(); i++) + { + if (disabledOptions[i]) + ImGui::BeginDisabled(true); + + if (ImGui::Selectable(plotTypes[i].c_str(), typeCombo == i)) + { + typeCombo = i; + editedPlot->setType((Plot::Type)typeCombo); + break; + } + + if (disabledOptions[i]) + ImGui::EndDisabled(); + } + ImGui::EndCombo(); + } /* XY plot settings section*/