diff --git a/plugins/builtin/include/content/views/view_find.hpp b/plugins/builtin/include/content/views/view_find.hpp index 8335aec76..25fad52de 100644 --- a/plugins/builtin/include/content/views/view_find.hpp +++ b/plugins/builtin/include/content/views/view_find.hpp @@ -61,6 +61,7 @@ namespace hex::plugin::builtin { struct Regex { std::string pattern; + bool fullMatch = true; } regex; struct BinaryPattern { diff --git a/plugins/builtin/source/content/views/view_find.cpp b/plugins/builtin/source/content/views/view_find.cpp index 9fea731eb..a3bbdeb70 100644 --- a/plugins/builtin/source/content/views/view_find.cpp +++ b/plugins/builtin/source/content/views/view_find.cpp @@ -271,8 +271,13 @@ namespace hex::plugin::builtin { std::string string(occurrence.region.getSize(), '\x00'); provider->read(occurrence.region.getStartAddress(), string.data(), occurrence.region.getSize()); - if (std::regex_match(string, regex)) - result.push_back(occurrence); + if (settings.fullMatch) { + if (std::regex_match(string, regex)) + result.push_back(occurrence); + } else { + if (std::regex_search(string, regex)) + result.push_back(occurrence); + } } return result; @@ -473,7 +478,7 @@ namespace hex::plugin::builtin { mode = SearchSettings::Mode::Regex; - ImGui::InputText("hex.builtin.view.find.regex"_lang, settings.pattern); + ImGui::InputText("hex.builtin.view.find.regex.pattern"_lang, settings.pattern); try { std::regex regex(settings.pattern); @@ -485,6 +490,8 @@ namespace hex::plugin::builtin { if (settings.pattern.empty()) this->m_settingsValid = false; + ImGui::Checkbox("hex.builtin.view.find.regex.full_match"_lang, &settings.fullMatch); + ImGui::EndTabItem(); } if (ImGui::BeginTabItem("hex.builtin.view.find.binary_pattern"_lang)) { diff --git a/plugins/builtin/source/lang/de_DE.cpp b/plugins/builtin/source/lang/de_DE.cpp index 4d8536c04..262f4a8c4 100644 --- a/plugins/builtin/source/lang/de_DE.cpp +++ b/plugins/builtin/source/lang/de_DE.cpp @@ -414,6 +414,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.find.strings.line_feeds", "Line Feeds" }, { "hex.builtin.view.find.sequences", "Sequenzen" }, { "hex.builtin.view.find.regex", "Regex" }, + { "hex.builtin.view.find.regex.pattern", "Pattern" }, + { "hex.builtin.view.find.regex.full_match", "Benötige volle übereinstimmung" }, { "hex.builtin.view.find.binary_pattern", "Binärpattern" }, { "hex.builtin.view.find.search", "Suchen" }, { "hex.builtin.view.find.context.copy", "Wert Kopieren" }, diff --git a/plugins/builtin/source/lang/en_US.cpp b/plugins/builtin/source/lang/en_US.cpp index adade1b00..210d28b7c 100644 --- a/plugins/builtin/source/lang/en_US.cpp +++ b/plugins/builtin/source/lang/en_US.cpp @@ -420,6 +420,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.find.strings.line_feeds", "Line Feeds" }, { "hex.builtin.view.find.sequences", "Sequences" }, { "hex.builtin.view.find.regex", "Regex" }, + { "hex.builtin.view.find.regex.pattern", "Pattern" }, + { "hex.builtin.view.find.regex.full_match", "Require full match" }, { "hex.builtin.view.find.binary_pattern", "Binary Pattern" }, { "hex.builtin.view.find.search", "Search" }, { "hex.builtin.view.find.context.copy", "Copy Value" }, diff --git a/plugins/builtin/source/lang/it_IT.cpp b/plugins/builtin/source/lang/it_IT.cpp index f34913f54..dad96b829 100644 --- a/plugins/builtin/source/lang/it_IT.cpp +++ b/plugins/builtin/source/lang/it_IT.cpp @@ -419,6 +419,8 @@ namespace hex::plugin::builtin { // { "hex.builtin.view.find.strings.line_feeds", "Line Feeds" }, // { "hex.builtin.view.find.sequences", "Sequences" }, // { "hex.builtin.view.find.regex", "Regex" }, + //{ "hex.builtin.view.find.regex.pattern", "Pattern" }, + //{ "hex.builtin.view.find.regex.full_match", "Require full match" }, // { "hex.builtin.view.find.binary_pattern", "Binary Pattern" }, // { "hex.builtin.view.find.search", "Search" }, // { "hex.builtin.view.find.context.copy", "Copy Value" }, diff --git a/plugins/builtin/source/lang/ja_JP.cpp b/plugins/builtin/source/lang/ja_JP.cpp index b299d1602..fae5fb742 100644 --- a/plugins/builtin/source/lang/ja_JP.cpp +++ b/plugins/builtin/source/lang/ja_JP.cpp @@ -422,6 +422,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.find.strings.line_feeds", "ラインフィード" }, { "hex.builtin.view.find.sequences", "通常検索" }, { "hex.builtin.view.find.regex", "正規表現" }, + // { "hex.builtin.view.find.regex.pattern", "Pattern" }, + // { "hex.builtin.view.find.regex.full_match", "Require full match" }, { "hex.builtin.view.find.binary_pattern", "16進数" }, { "hex.builtin.view.find.search", "検索を実行" }, { "hex.builtin.view.find.context.copy", "値をコピー" }, diff --git a/plugins/builtin/source/lang/ko_KR.cpp b/plugins/builtin/source/lang/ko_KR.cpp index 0338de3c0..75a1f81d2 100644 --- a/plugins/builtin/source/lang/ko_KR.cpp +++ b/plugins/builtin/source/lang/ko_KR.cpp @@ -419,6 +419,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.find.strings.line_feeds", "라인 피드" }, { "hex.builtin.view.find.sequences", "텍스트 시퀸스" }, { "hex.builtin.view.find.regex", "정규식" }, + // { "hex.builtin.view.find.regex.pattern", "Pattern" }, + // { "hex.builtin.view.find.regex.full_match", "Require full match" }, { "hex.builtin.view.find.binary_pattern", "바이너리 패턴" }, { "hex.builtin.view.find.search", "검색" }, { "hex.builtin.view.find.context.copy", "값 복사" }, diff --git a/plugins/builtin/source/lang/pt_BR.cpp b/plugins/builtin/source/lang/pt_BR.cpp index 567b649d4..ea9986bc2 100644 --- a/plugins/builtin/source/lang/pt_BR.cpp +++ b/plugins/builtin/source/lang/pt_BR.cpp @@ -417,6 +417,8 @@ namespace hex::plugin::builtin { // { "hex.builtin.view.find.strings.line_feeds", "Line Feeds" }, // { "hex.builtin.view.find.sequences", "Sequences" }, // { "hex.builtin.view.find.regex", "Regex" }, + // { "hex.builtin.view.find.regex.pattern", "Pattern" }, + // { "hex.builtin.view.find.regex.full_match", "Require full match" }, // { "hex.builtin.view.find.binary_pattern", "Binary Pattern" }, // { "hex.builtin.view.find.search", "Search" }, // { "hex.builtin.view.find.context.copy", "Copy Value" }, diff --git a/plugins/builtin/source/lang/zh_CN.cpp b/plugins/builtin/source/lang/zh_CN.cpp index 3709a1b4d..938c1a77e 100644 --- a/plugins/builtin/source/lang/zh_CN.cpp +++ b/plugins/builtin/source/lang/zh_CN.cpp @@ -420,6 +420,8 @@ namespace hex::plugin::builtin { { "hex.builtin.view.find.strings.line_feeds", "换行" }, { "hex.builtin.view.find.sequences", "序列" }, { "hex.builtin.view.find.regex", "正则表达式" }, + // { "hex.builtin.view.find.regex.pattern", "Pattern" }, + // { "hex.builtin.view.find.regex.full_match", "Require full match" }, { "hex.builtin.view.find.binary_pattern", "二进制模式" }, { "hex.builtin.view.find.search", "搜索" }, { "hex.builtin.view.find.context.copy", "复制值" }, diff --git a/plugins/builtin/source/lang/zh_TW.cpp b/plugins/builtin/source/lang/zh_TW.cpp index 58986252d..6fff1efd8 100644 --- a/plugins/builtin/source/lang/zh_TW.cpp +++ b/plugins/builtin/source/lang/zh_TW.cpp @@ -418,6 +418,8 @@ namespace hex::plugin::builtin { // { "hex.builtin.view.find.strings.line_feeds", "Line Feeds" }, // { "hex.builtin.view.find.sequences", "Sequences" }, // { "hex.builtin.view.find.regex", "Regex" }, + // { "hex.builtin.view.find.regex.pattern", "Pattern" }, + // { "hex.builtin.view.find.regex.full_match", "Require full match" }, // { "hex.builtin.view.find.binary_pattern", "Binary Pattern" }, // { "hex.builtin.view.find.search", "Search" }, // { "hex.builtin.view.find.context.copy", "Copy Value" }, diff --git a/resources/projects/ms_banner.xcf b/resources/projects/ms_banner.xcf new file mode 100644 index 000000000..d48b9cf06 Binary files /dev/null and b/resources/projects/ms_banner.xcf differ