GuiUtils.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #pragma once
  2. #define IMGUI_DEFINE_MATH_OPERATORS
  3. #include <Windows.h>
  4. #include "../GUI/GuiDefinitions.h"
  5. #include "../api/imgui/ImGui/imgui.h"
  6. #include "../api/imgui/ImGui/imgui_internal.h"
  7. #include "../api/imgui/ImGui/imgui_stdlib.h"
  8. //#include "Utils.hpp"
  9. #include "../config/ConfigManager.h"
  10. #include "Logger.h"
  11. void HelpMarker(const char* desc);
  12. #define END_WIDGET() \
  13. if (description != nullptr) { \
  14. ImGui::SameLine(); \
  15. HelpMarker(description); \
  16. }
  17. template <typename T>
  18. bool ConfigCheckbox(const char* name, ConfigField<T>& field, const char* description = nullptr) {
  19. T& value = field.getValue();
  20. if (ImGui::Checkbox(name, &value)) {
  21. field.setValue(value);
  22. config::setValue(field, value);
  23. return value;
  24. }
  25. END_WIDGET();
  26. return false;
  27. }
  28. bool BeginGroupPanel(const char* label, bool node = false, const ImVec2& size = ImVec2(-1.0f, 0.0f));
  29. void EndGroupPanel();
  30. template <typename T>
  31. bool ConfigInputText(const char* name, ConfigField<T>& field, const char* description = nullptr) {
  32. T& value = field.getValue();
  33. if (ImGui::InputText(name, &value)) {
  34. field.setValue(value);
  35. config::setValue(field, value);
  36. return true;
  37. }
  38. END_WIDGET();
  39. return false;
  40. }
  41. template <typename T>
  42. bool ConfigSliderInt(const char* name, ConfigField<T>& field, const int min, const int max, const char* description = nullptr) {
  43. T& value = field.getValue();
  44. if (ImGui::SliderInt(name, &value, min, max)) {
  45. field.setValue(value);
  46. config::setValue(field, value);
  47. return true;
  48. }
  49. END_WIDGET();
  50. return false;
  51. }
  52. template <typename T>
  53. bool ConfigDragInt(const char* name, ConfigField<T>& field, const int step, const int min, const int max, const char* description = nullptr) {
  54. T& value = field.getValue();
  55. if (ImGui::DragInt(name, &value, (float) step, min, max, nullptr, ImGuiSliderFlags_AlwaysClamp)) {
  56. field.setValue(value);
  57. config::setValue(field, value);
  58. return true;
  59. }
  60. END_WIDGET();
  61. return false;
  62. }
  63. template <typename T>
  64. bool ConfigSliderFloat(const char* name, ConfigField<T>& field, const float min, const float max, const char* description = nullptr) {
  65. T& value = field.getValue();
  66. if (ImGui::SliderFloat(name, &value, min, max)) {
  67. field.setValue(value);
  68. config::setValue(field, value);
  69. return true;
  70. }
  71. END_WIDGET();
  72. return false;
  73. }
  74. void ConfigComboLanguage(ConfigField<int>& f_Language);
  75. void AddUnderLine(ImColor col_);
  76. void TextURL(const char* name_, const char* URL_, bool SameLineBefore_, bool SameLineAfter_);