45 if (lhsSatSys == rhsSatSys)
47 auto lhsSatNum = std::stoi(lhs.substr(lhs.size() - 2, 2));
48 auto rhsSatNum = std::stoi(rhs.substr(rhs.size() - 2, 2));
49 if (lhsSatNum == rhsSatNum)
52 return lhs.substr(1, 2) < rhs.substr(1, 2);
54 return lhsSatNum < rhsSatNum;
56 return lhsSatSys < rhsSatSys;
87 bool valueChanged =
false;
89 if (displayOnlyNumber)
91 for (
size_t i = 0; i < satellites.size(); i++)
93 if (i != 0) { preview +=
" | "; }
94 preview += std::to_string(satellites.at(i).satNum);
97 else { preview = fmt::format(
"{}", fmt::join(satellites,
", ")); }
99 if (ImGui::BeginCombo(label, preview.c_str()))
101 if (ImGui::BeginTable(fmt::format(
"{} Table", label).c_str(), 7, ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_ScrollY))
103 ImGui::TableSetupScrollFreeze(0, 1);
104 for (uint64_t satSys = 0xFF; satSys < 0xFFUL << (7 * 8); satSys = satSys << 8UL)
108 ImGui::TableHeadersRow();
110 ImGui::TableNextRow();
111 for (uint64_t satSys = 0xFF; satSys < 0xFFUL << (7 * 8); satSys = satSys << 8UL)
115 ImGui::TableNextColumn();
116 for (
const auto& num : satSystem.getSatellites())
118 SatId satId{ satSystem, num };
119 auto iter = std::ranges::find(satellites, satId);
120 bool isExcluded = iter != satellites.end();
121 if (!
SatelliteSystem_(satSystem & filterSys) || satId.isGeo()) { ImGui::BeginDisabled(); }
123 auto satInfo = satSystem.getSatelliteInfo(num);
125 if (ImGui::Checkbox(fmt::format(
"{}{}##{} {}",
127 satInfo ? fmt::format(
" ({})", *satInfo) :
"",
135 satellites.push_back(satId);
136 std::sort(satellites.begin(), satellites.end());
140 satellites.erase(iter);
144 if (!
SatelliteSystem_(satSystem & filterSys) || satId.isGeo()) { ImGui::EndDisabled(); }
bool ShowSatelliteSelector(const char *label, std::vector< SatId > &satellites, SatelliteSystem filterSys, bool displayOnlyNumber)
Shows a ComboBox to select satellites.