diff --git a/src/dusk/imgui.cpp b/src/dusk/imgui.cpp index 7b96c9529c..61d339e3fe 100644 --- a/src/dusk/imgui.cpp +++ b/src/dusk/imgui.cpp @@ -2,10 +2,7 @@ #include "imgui/imgui.hpp" #include -#include #include -#include -#include #include #include #include @@ -14,10 +11,30 @@ #include "Windows.h" #endif +static bool ImguiHidden = false; + void imgui_main(const AuroraInfo *info) { - DuskImguiDebugOverlay(info); - DuskImguiProcesses(); + if (ImGui::IsKeyPressed(ImGuiKey_F1)) { + ImguiHidden = !ImguiHidden; + } + + if (ImguiHidden) { + return; + } + + if (ImGui::BeginMainMenuBar()) { + if (ImGui::BeginMenu(MenuView)) { + ImGui::MenuItem("Hide UI", "F1", &ImguiHidden); + ImGui::EndMenu(); + } + + DuskImguiDebugOverlay(info); + DuskImguiProcesses(); + + ImGui::EndMainMenuBar(); + } + } class Limiter diff --git a/src/dusk/imgui/debug_overlay.cpp b/src/dusk/imgui/debug_overlay.cpp index 887fe8cb71..5d8332fb41 100644 --- a/src/dusk/imgui/debug_overlay.cpp +++ b/src/dusk/imgui/debug_overlay.cpp @@ -66,7 +66,23 @@ static std::string BytesToString(size_t bytes) return fmt::format(FMT_STRING("{:.1f}{}"), count, suffixes[s]); } +static bool DebugOverlayActive = false; + void DuskImguiDebugOverlay(const AuroraInfo *info) { + if (ImGui::BeginMenu(MenuView)) { + ImGui::MenuItem("Debug overlay", "F3", &DebugOverlayActive); + + ImGui::EndMenu(); + } + + if (ImGui::IsKeyPressed(ImGuiKey_F3)) { + DebugOverlayActive = !DebugOverlayActive; + } + + if (!DebugOverlayActive) { + return; + } + ImGuiIO &io = ImGui::GetIO(); ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoDecoration | ImGuiWindowFlags_AlwaysAutoResize | diff --git a/src/dusk/imgui/imgui.hpp b/src/dusk/imgui/imgui.hpp index 25da0dac15..bd93989d99 100644 --- a/src/dusk/imgui/imgui.hpp +++ b/src/dusk/imgui/imgui.hpp @@ -3,6 +3,8 @@ #include +inline const char* MenuView = "View"; + void DuskImguiDebugOverlay(const AuroraInfo *info); void DuskImguiProcesses(); diff --git a/src/dusk/imgui/processes.cpp b/src/dusk/imgui/processes.cpp index 4950f3341d..016a6141a6 100644 --- a/src/dusk/imgui/processes.cpp +++ b/src/dusk/imgui/processes.cpp @@ -76,7 +76,22 @@ static int ShowCreateRequest(void* p, void*) { return 1; } +static bool Visible = false; + void DuskImguiProcesses() { + if (ImGui::BeginMenu(MenuView)) { + ImGui::MenuItem("Process management", "F2", &Visible); + ImGui::EndMenu(); + } + + if (ImGui::IsKeyPressed(ImGuiKey_F2)) { + Visible = !Visible; + } + + if (!Visible) { + return; + } + if (ImGui::Begin("Processes")) { if (ImGui::BeginTabBar("Tabs")) { showTreeRecursive = true; @@ -102,9 +117,4 @@ void DuskImguiProcesses() { } ImGui::End(); - - /* - bool open = true; - ImGui::ShowDemoWindow(&open); - */ }