0.2.0
Loading...
Searching...
No Matches
EnumComboWithTooltip.hpp
Go to the documentation of this file.
1// This file is part of INSTINCT, the INS Toolkit for Integrated
2// Navigation Concepts and Training by the Institute of Navigation of
3// the University of Stuttgart, Germany.
4//
5// This Source Code Form is subject to the terms of the Mozilla Public
6// License, v. 2.0. If a copy of the MPL was not distributed with this
7// file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
13
14#pragma once
15
16#include <imgui.h>
17#include <fmt/core.h>
18
19namespace NAV::gui::widgets
20{
21
29template<typename T>
30bool EnumComboWithToolTip(const char* label, T& enumeration, size_t startIdx = 0)
31{
32 bool clicked = false;
33 if (ImGui::BeginCombo(label, NAV::to_string(enumeration)))
34 {
35 for (size_t i = startIdx; i < static_cast<size_t>(T::COUNT); i++)
36 {
37 const bool is_selected = (static_cast<size_t>(enumeration) == i);
38 if (ImGui::Selectable(NAV::to_string(static_cast<T>(i)), is_selected))
39 {
40 enumeration = static_cast<T>(i);
41 clicked = true;
42 }
43 if (ImGui::IsItemHovered())
44 {
45 ImGui::SetTooltip("%s", NAV::tooltip(static_cast<T>(i)));
46 }
47
48 // Set the initial focus when opening the combo (scrolling + keyboard navigation focus)
49 if (is_selected)
50 {
51 ImGui::SetItemDefaultFocus();
52 }
53 }
54
55 ImGui::EndCombo();
56 }
57 return clicked;
58}
59
60} // namespace NAV::gui::widgets
bool EnumComboWithToolTip(const char *label, T &enumeration, size_t startIdx=0)
Combo representing an enumeration.
Definition EnumComboWithTooltip.hpp:30
const char * to_string(gui::widgets::PositionWithFrame::ReferenceFrame refFrame)
Converts the enum to a string.
const char * tooltip(vendor::RINEX::ObsHeader::MarkerTypes markerType)
Converts the enum to a string tooltip.