1
0
mirror of synced 2024-12-01 02:37:18 +01:00

feat: Added setting to enable colored pattern row backgrounds

This commit is contained in:
WerWolv 2023-11-25 13:42:51 +01:00
parent 88032a85cd
commit 8d20277a62
6 changed files with 22 additions and 14 deletions

View File

@ -35,6 +35,7 @@ namespace hex::plugin::builtin::ui {
void setTreeStyle(TreeStyle style) { this->m_treeStyle = style; } void setTreeStyle(TreeStyle style) { this->m_treeStyle = style; }
void setSelectionCallback(std::function<void(Region)> callback) { this->m_selectionCallback = std::move(callback); } void setSelectionCallback(std::function<void(Region)> callback) { this->m_selectionCallback = std::move(callback); }
void enableRowColoring(bool enabled) { this->m_rowColoring = enabled; }
void reset(); void reset();
private: private:
@ -99,6 +100,7 @@ namespace hex::plugin::builtin::ui {
u64 m_editingPatternOffset = 0; u64 m_editingPatternOffset = 0;
TreeStyle m_treeStyle = TreeStyle::Default; TreeStyle m_treeStyle = TreeStyle::Default;
bool m_rowColoring = false;
pl::ptrn::Pattern *m_currVisualizedPattern = nullptr; pl::ptrn::Pattern *m_currVisualizedPattern = nullptr;
std::set<pl::ptrn::Pattern*> m_visualizedPatterns; std::set<pl::ptrn::Pattern*> m_visualizedPatterns;

View File

@ -564,10 +564,9 @@
"hex.builtin.setting.interface.multi_windows": "Enable Multi Window support", "hex.builtin.setting.interface.multi_windows": "Enable Multi Window support",
"hex.builtin.setting.interface.scaling": "Scaling", "hex.builtin.setting.interface.scaling": "Scaling",
"hex.builtin.setting.interface.scaling.native": "Native", "hex.builtin.setting.interface.scaling.native": "Native",
"hex.builtin.setting.interface.scaling.x0_5": "x0.5", "hex.builtin.setting.interface.style": "Styling",
"hex.builtin.setting.interface.scaling.x1_0": "x1.0", "hex.builtin.setting.interface.window": "Window",
"hex.builtin.setting.interface.scaling.x1_5": "x1.5", "hex.builtin.setting.interface.pattern_data_row_bg": "Enable colored pattern background",
"hex.builtin.setting.interface.scaling.x2_0": "x2.0",
"hex.builtin.setting.interface.wiki_explain_language": "Wikipedia Language", "hex.builtin.setting.interface.wiki_explain_language": "Wikipedia Language",
"hex.builtin.setting.interface.restore_window_pos": "Restore window position", "hex.builtin.setting.interface.restore_window_pos": "Restore window position",
"hex.builtin.setting.proxy": "Proxy", "hex.builtin.setting.proxy": "Proxy",

View File

@ -341,7 +341,7 @@ namespace hex::plugin::builtin {
themeNames.emplace(themeNames.begin(), ThemeManager::NativeTheme); themeNames.emplace(themeNames.begin(), ThemeManager::NativeTheme);
themeJsons.emplace(themeJsons.begin(), ThemeManager::NativeTheme); themeJsons.emplace(themeJsons.begin(), ThemeManager::NativeTheme);
ContentRegistry::Settings::add<Widgets::DropDown>("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.color", ContentRegistry::Settings::add<Widgets::DropDown>("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.color",
themeNames, themeNames,
themeJsons, themeJsons,
"Dark").setChangedCallback([](auto &widget) { "Dark").setChangedCallback([](auto &widget) {
@ -355,7 +355,9 @@ namespace hex::plugin::builtin {
} }
}); });
ContentRegistry::Settings::add<ScalingWidget>("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.scaling").requiresRestart(); ContentRegistry::Settings::add<ScalingWidget>("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.scaling").requiresRestart();
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "hex.builtin.setting.interface.style", "hex.builtin.setting.interface.pattern_data_row_bg", false);
std::vector<std::string> languageNames; std::vector<std::string> languageNames;
std::vector<nlohmann::json> languageCodes; std::vector<nlohmann::json> languageCodes;
@ -365,10 +367,10 @@ namespace hex::plugin::builtin {
languageCodes.emplace_back(languageCode); languageCodes.emplace_back(languageCode);
} }
ContentRegistry::Settings::add<Widgets::DropDown>("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.language", languageNames, languageCodes, "en-US"); ContentRegistry::Settings::add<Widgets::DropDown>("hex.builtin.setting.interface", "hex.builtin.setting.interface.language", "hex.builtin.setting.interface.language", languageNames, languageCodes, "en-US");
ContentRegistry::Settings::add<Widgets::TextBox>("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.wiki_explain_language", "en"); ContentRegistry::Settings::add<Widgets::TextBox>("hex.builtin.setting.interface", "hex.builtin.setting.interface.language", "hex.builtin.setting.interface.wiki_explain_language", "en");
ContentRegistry::Settings::add<FPSWidget>("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.fps"); ContentRegistry::Settings::add<FPSWidget>("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.fps");
#if defined (OS_LINUX) #if defined (OS_LINUX)
constexpr static auto MultiWindowSupportEnabledDefault = 0; constexpr static auto MultiWindowSupportEnabledDefault = 0;
@ -376,8 +378,8 @@ namespace hex::plugin::builtin {
constexpr static auto MultiWindowSupportEnabledDefault = 1; constexpr static auto MultiWindowSupportEnabledDefault = 1;
#endif #endif
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.multi_windows", MultiWindowSupportEnabledDefault).requiresRestart(); ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.multi_windows", MultiWindowSupportEnabledDefault).requiresRestart();
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "", "hex.builtin.setting.interface.restore_window_pos", false); ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.interface", "hex.builtin.setting.interface.window", "hex.builtin.setting.interface.restore_window_pos", false);
ContentRegistry::Settings::add<Widgets::ColorPicker>("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.highlight_color", ImColor(0x80, 0x80, 0xC0, 0x60)); ContentRegistry::Settings::add<Widgets::ColorPicker>("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.highlight_color", ImColor(0x80, 0x80, 0xC0, 0x60));
ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.sync_scrolling", false); ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.hex_editor", "", "hex.builtin.setting.hex_editor.sync_scrolling", false);

View File

@ -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 } 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::NewLine();
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2()); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2());
@ -172,8 +172,7 @@ namespace hex::plugin::builtin {
for (const auto &contributor : Contributors) { for (const auto &contributor : Contributors) {
ImGui::TableNextRow(); ImGui::TableNextRow();
if (contributor.mainContributor) { if (contributor.mainContributor) {
ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, ImGui::GetColorU32(ImGuiCol_PlotHistogram) & 0x0FFFFFFF); ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, ImGui::GetColorU32(ImGuiCol_PlotHistogram) & 0x1FFFFFFF);
ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg1, ImGui::GetColorU32(ImGuiCol_PlotHistogram) & 0x0FFFFFFF);
} }
ImGui::TableNextColumn(); ImGui::TableNextColumn();

View File

@ -15,6 +15,9 @@ namespace hex::plugin::builtin {
EventManager::subscribe<EventSettingsChanged>(this, [this] { EventManager::subscribe<EventSettingsChanged>(this, [this] {
auto patternStyle = ContentRegistry::Settings::read("hex.builtin.setting.interface", "hex.builtin.setting.interface.pattern_tree_style", 0); auto patternStyle = ContentRegistry::Settings::read("hex.builtin.setting.interface", "hex.builtin.setting.interface.pattern_tree_style", 0);
this->m_patternDrawer->setTreeStyle(patternStyle); 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 // Reset the pattern drawer when the provider changes

View File

@ -229,6 +229,9 @@ namespace hex::plugin::builtin::ui {
} }
void PatternDrawer::drawFavoriteColumn(const pl::ptrn::Pattern& pattern) { void PatternDrawer::drawFavoriteColumn(const pl::ptrn::Pattern& pattern) {
if (this->m_rowColoring)
ImGui::TableSetBgColor(ImGuiTableBgTarget_RowBg0, pattern.getColor() & 0x4FFFFFFF);
if (!this->m_showFavoriteStars) { if (!this->m_showFavoriteStars) {
ImGui::TableNextColumn(); ImGui::TableNextColumn();
return; return;