logWindow.cpp 1.5 KB

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