37 if (diagnostics.empty()) {
38 ImGui::TextDisabled(tr(
"No diagnostics"));
43 int errors = 0, warnings = 0, notes = 0;
44 for (
const auto& d : diagnostics) {
59 ImGui::Text(tr(
"%d error(s), %d warning(s), %d note(s)"), errors, warnings,
62 ImGui::Text(tr(
"%d error(s), %d warning(s)"), errors, warnings);
66 if (ImGui::BeginTable(
"##diagnostics", 3,
67 ImGuiTableFlags_RowBg | ImGuiTableFlags_Resizable |
68 ImGuiTableFlags_ScrollY)) {
69 ImGui::TableSetupColumn(
"Severity", ImGuiTableColumnFlags_WidthFixed,
71 ImGui::TableSetupColumn(
"Location", ImGuiTableColumnFlags_WidthFixed,
73 ImGui::TableSetupColumn(
"Message", ImGuiTableColumnFlags_WidthStretch);
74 ImGui::TableHeadersRow();
76 for (std::size_t i = 0; i < diagnostics.size(); ++i) {
77 const auto& d = diagnostics[i];
78 const auto style = StyleFor(d.severity);
80 ImGui::PushID(
static_cast<int>(i));
81 ImGui::TableNextRow();
83 ImGui::TableSetColumnIndex(0);
86 ImGui::Text(
"%s %s", style.icon, style.label);
89 ImGui::TableSetColumnIndex(1);
90 if (!d.file.empty()) {
91 std::string label = d.file +
":" + std::to_string(d.line);
93 label +=
":" + std::to_string(d.column);
94 if (ImGui::Selectable(label.c_str(),
false,
95 ImGuiSelectableFlags_SpanAllColumns)) {
101 ImGui::TextDisabled(tr(
"<unknown>"));
104 ImGui::TableSetColumnIndex(2);
105 ImGui::TextWrapped(
"%s", d.message.c_str());