From 8d20277a6201ab85ee7f828481c411dee4b907cb Mon Sep 17 00:00:00 2001 From: WerWolv Date: Sat, 25 Nov 2023 13:42:51 +0100 Subject: [PATCH] feat: Added setting to enable colored pattern row backgrounds --- plugins/builtin/include/ui/pattern_drawer.hpp | 2 ++ plugins/builtin/romfs/lang/en_US.json | 7 +++---- .../builtin/source/content/settings_entries.cpp | 16 +++++++++------- .../builtin/source/content/views/view_about.cpp | 5 ++--- .../source/content/views/view_pattern_data.cpp | 3 +++ plugins/builtin/source/ui/pattern_drawer.cpp | 3 +++ 6 files changed, 22 insertions(+), 14 deletions(-) diff --git a/plugins/builtin/include/ui/pattern_drawer.hpp b/plugins/builtin/include/ui/pattern_drawer.hpp index c62623561..fbb30cd28 100644 --- a/plugins/builtin/include/ui/pattern_drawer.hpp +++ b/plugins/builtin/include/ui/pattern_drawer.hpp @@ -35,6 +35,7 @@ namespace hex::plugin::builtin::ui { void setTreeStyle(TreeStyle style) { this->m_treeStyle = style; } void setSelectionCallback(std::function callback) { this->m_selectionCallback = std::move(callback); } + void enableRowColoring(bool enabled) { this->m_rowColoring = enabled; } void reset(); private: @@ -99,6 +100,7 @@ namespace hex::plugin::builtin::ui { u64 m_editingPatternOffset = 0; TreeStyle m_treeStyle = TreeStyle::Default; + bool m_rowColoring = false; pl::ptrn::Pattern *m_currVisualizedPattern = nullptr; std::set m_visualizedPatterns; diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index fb864051f..ceeadcbec 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -564,10 +564,9 @@ "hex.builtin.setting.interface.multi_windows": "Enable Multi Window support", "hex.builtin.setting.interface.scaling": "Scaling", "hex.builtin.setting.interface.scaling.native": "Native", - "hex.builtin.setting.interface.scaling.x0_5": "x0.5", - "hex.builtin.setting.interface.scaling.x1_0": "x1.0", - "hex.builtin.setting.interface.scaling.x1_5": "x1.5", - "hex.builtin.setting.interface.scaling.x2_0": "x2.0", + "hex.builtin.setting.interface.style": "Styling", + "hex.builtin.setting.interface.window": "Window", + "hex.builtin.setting.interface.pattern_data_row_bg": "Enable colored pattern background", "hex.builtin.setting.interface.wiki_explain_language": "Wikipedia Language", "hex.builtin.setting.interface.restore_window_pos": "Restore window position", "hex.builtin.setting.proxy": "Proxy", diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index 9eb642953..bd8747b78 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -341,7 +341,7 @@ namespace hex::plugin::builtin { themeNames.emplace(themeNames.begin(), ThemeManager::NativeTheme); themeJsons.emplace(themeJsons.begin(), ThemeManager::NativeTheme); - ContentRegistry::Settings::add("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.color", + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.color", themeNames, themeJsons, "Dark").setChangedCallback([](auto &widget) { @@ -355,7 +355,9 @@ namespace hex::plugin::builtin { } }); - ContentRegistry::Settings::add("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.scaling").requiresRestart(); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.scaling").requiresRestart(); + + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.pattern_data_row_bg", false); std::vector languageNames; std::vector languageCodes; @@ -365,10 +367,10 @@ namespace hex::plugin::builtin { languageCodes.emplace_back(languageCode); } - ContentRegistry::Settings::add("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.language", languageNames, languageCodes, "en-US"); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.language", "hex.builtin.setting.interface.language", languageNames, languageCodes, "en-US"); - ContentRegistry::Settings::add("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.wiki_explain_language", "en"); - ContentRegistry::Settings::add("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.fps"); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.language", "hex.builtin.setting.interface.wiki_explain_language", "en"); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.fps"); #if defined (OS_LINUX) constexpr static auto MultiWindowSupportEnabledDefault = 0; @@ -376,8 +378,8 @@ namespace hex::plugin::builtin { constexpr static auto MultiWindowSupportEnabledDefault = 1; #endif - ContentRegistry::Settings::add("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.multi_windows", MultiWindowSupportEnabledDefault).requiresRestart(); - ContentRegistry::Settings::add("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.restore_window_pos", false); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.multi_windows", MultiWindowSupportEnabledDefault).requiresRestart(); + ContentRegistry::Settings::add("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.restore_window_pos", false); ContentRegistry::Settings::add("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.highlight_color", ImColor(0x80, 0x80, 0xC0, 0x60)); ContentRegistry::Settings::add("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.sync_scrolling", false); diff --git a/plugins/builtin/source/content/views/view_about.cpp b/plugins/builtin/source/content/views/view_about.cpp index d96e85d7d..363314cca 100644 --- a/plugins/builtin/source/content/views/view_about.cpp +++ b/plugins/builtin/source/content/views/view_about.cpp @@ -161,7 +161,7 @@ namespace hex::plugin::builtin { Contributor { "All other amazing contributors", "Being part of the community, opening issues, PRs and donating", "https://github.com/WerWolv/ImHex/graphs/contributors", false } }; - ImGuiExt::TextFormattedWrapped("These amazing people have contributed some incredible things to ImHex in the past.\nConsider opening a PR on the Git Repository to become a part of them!"); + ImGuiExt::TextFormattedWrapped("These amazing people have contributed some incredible things to ImHex in the past.\nConsider opening a PR on the Git Repository to take your place among them!"); ImGui::NewLine(); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2()); @@ -172,8 +172,7 @@ namespace hex::plugin::builtin { for (const auto &contributor : Contributors) { ImGui::TableNextRow(); if (contributor.mainContributor) { - ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, ImGui::GetColorU32(ImGuiCol_PlotHistogram) & 0x0FFFFFFF); - ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg1, ImGui::GetColorU32(ImGuiCol_PlotHistogram) & 0x0FFFFFFF); + ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, ImGui::GetColorU32(ImGuiCol_PlotHistogram) & 0x1FFFFFFF); } ImGui::TableNextColumn(); diff --git a/plugins/builtin/source/content/views/view_pattern_data.cpp b/plugins/builtin/source/content/views/view_pattern_data.cpp index 2ddb7a6e8..3f6c5d93a 100644 --- a/plugins/builtin/source/content/views/view_pattern_data.cpp +++ b/plugins/builtin/source/content/views/view_pattern_data.cpp @@ -15,6 +15,9 @@ namespace hex::plugin::builtin { EventManager::subscribe(this, [this] { auto patternStyle = ContentRegistry::Settings::read("hex.builtin.setting.interface", "hex.builtin.setting.interface.pattern_tree_style", 0); this->m_patternDrawer->setTreeStyle(patternStyle); + + auto rowColoring = ContentRegistry::Settings::read("hex.builtin.setting.interface", "hex.builtin.setting.interface.pattern_data_row_bg", false); + this->m_patternDrawer->enableRowColoring(rowColoring); }); // Reset the pattern drawer when the provider changes diff --git a/plugins/builtin/source/ui/pattern_drawer.cpp b/plugins/builtin/source/ui/pattern_drawer.cpp index b2ba443fb..e1ee6938a 100644 --- a/plugins/builtin/source/ui/pattern_drawer.cpp +++ b/plugins/builtin/source/ui/pattern_drawer.cpp @@ -229,6 +229,9 @@ namespace hex::plugin::builtin::ui { } void PatternDrawer::drawFavoriteColumn(const pl::ptrn::Pattern& pattern) { + if (this->m_rowColoring) + ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, pattern.getColor() & 0x4FFFFFFF); + if (!this->m_showFavoriteStars) { ImGui::TableNextColumn(); return;