From 041330247066227bad7ed65acd93fb09964602d7 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sun, 18 Feb 2024 11:38:22 +0100 Subject: [PATCH] feat: Added setting to disable command palette button --- plugins/builtin/romfs/lang/de_DE.json | 1 + plugins/builtin/romfs/lang/en_US.json | 1 + .../source/content/settings_entries.cpp | 1 + .../source/content/window_decoration.cpp | 68 +++++++++++-------- 4 files changed, 44 insertions(+), 27 deletions(-) diff --git a/plugins/builtin/romfs/lang/de_DE.json b/plugins/builtin/romfs/lang/de_DE.json index 596cae8ce..b208ac2ec 100644 --- a/plugins/builtin/romfs/lang/de_DE.json +++ b/plugins/builtin/romfs/lang/de_DE.json @@ -494,6 +494,7 @@ "hex.builtin.setting.interface.restore_window_pos": "Fensterposition und Grösse wiederherstellen", "hex.builtin.setting.interface.scaling.native": "Nativ", "hex.builtin.setting.interface.scaling_factor": "Skalierung", + "hex.builtin.setting.interface.show_header_command_palette": "Befehlspalette in Titelbar anzeigen", "hex.builtin.setting.interface.style": "Stil", "hex.builtin.setting.interface.wiki_explain_language": "Wikipedia Sprache", "hex.builtin.setting.interface.window": "Fenster", diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index 0b947094b..9d618cd3c 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -479,6 +479,7 @@ "hex.builtin.setting.interface.multi_windows": "Enable Multi Window support", "hex.builtin.setting.interface.scaling_factor": "Scaling", "hex.builtin.setting.interface.scaling.native": "Native", + "hex.builtin.setting.interface.show_header_command_palette": "Show Command Palette in Window Header", "hex.builtin.setting.interface.style": "Styling", "hex.builtin.setting.interface.window": "Window", "hex.builtin.setting.interface.pattern_data_row_bg": "Enable colored pattern background", diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index cc2eb676b..83a0b367c 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -689,6 +689,7 @@ namespace hex::plugin::builtin { ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.pattern_data_row_bg", false); ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.always_show_provider_tabs", false); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "", true); std::vector languageNames; std::vector languageCodes; diff --git a/plugins/builtin/source/content/window_decoration.cpp b/plugins/builtin/source/content/window_decoration.cpp index af23573f1..e69866557 100644 --- a/plugins/builtin/source/content/window_decoration.cpp +++ b/plugins/builtin/source/content/window_decoration.cpp @@ -22,6 +22,7 @@ namespace hex::plugin::builtin { std::string s_windowTitle, s_windowTitleFull; u32 s_searchBarPosition = 0; ImGuiExt::Texture s_logoTexture; + bool s_showSearchBar = true; void createNestedMenu(std::span menuItems, const char *icon, const Shortcut &shortcut, const ContentRegistry::Interface::impl::MenuCallback &callback, const ContentRegistry::Interface::impl::EnabledCallback &enabledCallback, const ContentRegistry::Interface::impl::SelectedCallback &selectedCallback) { const auto &name = menuItems.front(); @@ -133,7 +134,7 @@ namespace hex::plugin::builtin { ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImGui::GetColorU32(ImGuiCol_ScrollbarGrabHovered)); const auto windowSize = ImHexApi::System::getMainWindowSize(); - auto searchBoxSize = ImVec2(windowSize.x / 2.5, titleBarHeight); + auto searchBoxSize = ImVec2(s_showSearchBar ? windowSize.x / 2.5 : ImGui::CalcTextSize(s_windowTitle.c_str()).x, titleBarHeight); auto searchBoxPos = ImVec2((windowSize / 2 - searchBoxSize / 2).x, 0); auto titleBarButtonPosY = 0.0F; @@ -142,8 +143,11 @@ namespace hex::plugin::builtin { titleBarButtonPosY = searchBoxPos.y; #else titleBarButtonPosY = 0; - searchBoxPos.y = 3_scaled; - searchBoxSize.y -= 3_scaled; + + if (s_showSearchBar) { + searchBoxPos.y = 3_scaled; + searchBoxSize.y -= 3_scaled; + } #endif s_searchBarPosition = searchBoxPos.x; @@ -201,32 +205,38 @@ namespace hex::plugin::builtin { ImGui::PopStyleVar(); { - const auto buttonColor = [](float alpha) { - return ImU32(ImColor(ImGui::GetStyleColorVec4(ImGuiCol_DockingEmptyBg) * ImVec4(1, 1, 1, alpha))); - }; - - ImGui::PushStyleColor(ImGuiCol_Button, buttonColor(0.5F)); - ImGui::PushStyleColor(ImGuiCol_ButtonHovered, buttonColor(0.7F)); - ImGui::PushStyleColor(ImGuiCol_ButtonActive, buttonColor(0.9F)); - ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0_scaled); - ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 4_scaled); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, scaled({ 1, 1 })); - ImGui::SetCursorPos(searchBoxPos); - if (ImGui::Button(s_windowTitle.c_str(), searchBoxSize)) { - EventSearchBoxClicked::post(ImGuiMouseButton_Left); + + if (s_showSearchBar) { + const auto buttonColor = [](float alpha) { + return ImU32(ImColor(ImGui::GetStyleColorVec4(ImGuiCol_DockingEmptyBg) * ImVec4(1, 1, 1, alpha))); + }; + + ImGui::PushStyleColor(ImGuiCol_Button, buttonColor(0.5F)); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, buttonColor(0.7F)); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, buttonColor(0.9F)); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 1.0_scaled); + ImGui::PushStyleVar(ImGuiStyleVar_FrameRounding, 4_scaled); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, scaled({ 1, 1 })); + + + if (ImGui::Button(s_windowTitle.c_str(), searchBoxSize)) { + EventSearchBoxClicked::post(ImGuiMouseButton_Left); + } + + if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) + EventSearchBoxClicked::post(ImGuiMouseButton_Right); + + ImGui::PushTextWrapPos(300_scaled); + if (!s_windowTitleFull.empty()) + ImGui::SetItemTooltip("%s", s_windowTitleFull.c_str()); + ImGui::PopTextWrapPos(); + + ImGui::PopStyleVar(3); + ImGui::PopStyleColor(3); + } else { + ImGui::TextUnformatted(s_windowTitle.c_str()); } - - if (ImGui::IsItemClicked(ImGuiMouseButton_Right)) - EventSearchBoxClicked::post(ImGuiMouseButton_Right); - - ImGui::PushTextWrapPos(300_scaled); - if (!s_windowTitleFull.empty()) - ImGui::SetItemTooltip("%s", s_windowTitleFull.c_str()); - ImGui::PopTextWrapPos(); - - ImGui::PopStyleVar(3); - ImGui::PopStyleColor(3); } } @@ -477,6 +487,10 @@ namespace hex::plugin::builtin { glfwSetWindowTitle(window, title.c_str()); } }); + + ContentRegistry::Settings::onChange("hex.builtin.setting.interface", "hex.builtin.setting.interface.show_header_command_palette", [](const ContentRegistry::Settings::SettingsValue &value) { + s_showSearchBar = value.get(true); + }); }