logWindow.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #include "logWindow.h"
  2. #include <imgui.h>
  3. #include <IconsForkAwesome.h>
  4. #include <pikaImgui/pikaImgui.h>
  5. void pika::LogWindow::init(pika::pikaImgui::ImGuiIdsManager &idManager)
  6. {
  7. imguiId = idManager.getImguiIds();
  8. }
  9. void pika::LogWindow::update(pika::LogManager &logManager, bool &open)
  10. {
  11. ImGui::PushID(imguiId);
  12. if (!ImGui::Begin(ICON_NAME, &open))
  13. {
  14. ImGui::End();
  15. ImGui::PopID();
  16. return;
  17. }
  18. if (ImGui::BeginPopup("Options"))
  19. {
  20. ImGui::Checkbox("Auto-scroll", &autoScroll);
  21. ImGui::EndPopup();
  22. }
  23. if (ImGui::Button("Options"))
  24. ImGui::OpenPopup("Options");
  25. ImGui::SameLine();
  26. if (ImGui::Button("Clear"))
  27. {logManager.internalLogs.clear();}
  28. ImGui::SameLine();
  29. if(ImGui::Button("Copy"))
  30. {ImGui::LogToClipboard();}
  31. ImGui::SameLine();
  32. filter.Draw("Filter", -100.0f);
  33. ImGui::Separator();
  34. ImGui::BeginChild("scrolling", ImVec2(0, 0), false, ImGuiWindowFlags_HorizontalScrollbar);
  35. ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0));
  36. if (filter.IsActive())
  37. {
  38. for (auto i : logManager.internalLogs)
  39. {
  40. if (filter.PassFilter(i.c_str()))
  41. {
  42. ImGui::TextUnformatted(i.c_str());
  43. }
  44. }
  45. }
  46. else
  47. {
  48. for (auto i : logManager.internalLogs)
  49. {
  50. ImGui::TextUnformatted(i.c_str());
  51. }
  52. }
  53. ImGui::PopStyleVar();
  54. if (autoScroll && ImGui::GetScrollY() >= ImGui::GetScrollMaxY())
  55. ImGui::SetScrollHereY(1.0f);
  56. ImGui::EndChild();
  57. ImGui::End();
  58. ImGui::PopID();
  59. }