From d092a79ab51a4cfe3a615c8a8508159edcae9b25 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Fri, 11 Jul 2025 08:09:35 +1000 Subject: [PATCH 01/30] Add code from dev branch --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 9954c25d9c180..51a6d74c41ceb 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 9954c25d9c180823ce89051b1d97c892176c46fa +Subproject commit 51a6d74c41cebe226f21bdf158e7874e167ad3a1 From 924a9e9f6efd77fcaff48c7b5c93bc23c10e81fe Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 12 Jul 2025 04:08:50 +1000 Subject: [PATCH 02/30] Update PL --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 51a6d74c41ceb..8c37d1d077698 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 51a6d74c41cebe226f21bdf158e7874e167ad3a1 +Subproject commit 8c37d1d077698622bc68a5548b3910e84e989210 From b18184358c88c30fff64f41ff8b64137e6496c66 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sun, 13 Jul 2025 23:21:12 +1000 Subject: [PATCH 03/30] Longest line length --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 8c37d1d077698..fefa424edb32a 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 8c37d1d077698622bc68a5548b3910e84e989210 +Subproject commit fefa424edb32a3ba47f321c94b009e3b406f3525 From 27678516c81dd519a7b6c8e2fdf63f9e19a53895 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 15 Jul 2025 01:33:06 +1000 Subject: [PATCH 04/30] Update PL --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index fefa424edb32a..c4373e72286ab 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit fefa424edb32a3ba47f321c94b009e3b406f3525 +Subproject commit c4373e72286abce4dbd1ab48bfd4ccb04ca67241 From 5d604f43dea519fbb056de814646ee0ac2b95a53 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 15 Jul 2025 04:32:46 +1000 Subject: [PATCH 05/30] Update PL --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index c4373e72286ab..2b95a3bd03ba8 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit c4373e72286abce4dbd1ab48bfd4ccb04ca67241 +Subproject commit 2b95a3bd03ba81dc40f50ab148ec2125010ee7ac From 4375963405ec2204213d7600c6bdf030bf2a3f09 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Wed, 16 Jul 2025 02:33:20 +1000 Subject: [PATCH 06/30] Start debug menu --- plugins/builtin/romfs/lang/en_US.json | 1 + plugins/builtin/source/content/views/view_hex_editor.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index 1fdb0460ef982..eb75f7bf31ca5 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -836,6 +836,7 @@ "hex.builtin.view.hex_editor.menu.edit.insert": "Insert...", "hex.builtin.view.hex_editor.menu.edit.insert_mode": "Insert Mode", "hex.builtin.view.hex_editor.menu.edit.jump_to": "Follow selection", + "hex.builtin.view.hex_editor.menu.edit.debug": "Debug", "hex.builtin.view.hex_editor.menu.edit.jump_to.curr_pattern": "Current Pattern", "hex.builtin.view.hex_editor.menu.edit.open_in_new_provider": "Open Selection View", "hex.builtin.view.hex_editor.menu.edit.paste": "Paste", diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 73232a0f89c3b..7ac3eb909daff 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -1477,7 +1477,8 @@ namespace hex::plugin::builtin { } }, [] { return ImHexApi::Provider::isValid() && ImHexApi::HexEditor::isSelectionValid() && ImHexApi::HexEditor::getSelection()->getSize() <= sizeof(u64); }); - + + /* Set Page Size */ ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.edit", "hex.builtin.view.hex_editor.menu.edit.set_page_size" }, ICON_VS_BROWSER, 1860, Shortcut::None, [this] { @@ -1486,6 +1487,12 @@ namespace hex::plugin::builtin { }, [] { return ImHexApi::Provider::isValid() && ImHexApi::Provider::get()->isReadable(); }); + /* Debug */ + ContentRegistry::Interface::addMenuItemSubMenu({ "hex.builtin.menu.edit", "hex.builtin.view.hex_editor.menu.edit.debug" }, ICON_VS_DEBUG_STEP_OUT, 1860, + [this] { + }, + [] { return true; }); + ContentRegistry::Interface::addMenuItemSeparator({ "hex.builtin.menu.edit" }, 1900); /* Open in new provider */ From f2161aedccabd90a274f782dee1fd021cb070f0c Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Thu, 17 Jul 2025 03:04:54 +1000 Subject: [PATCH 07/30] Kind of works. Arrarys loc is off --- lib/external/pattern_language | 2 +- lib/libimhex/include/hex/api/imhex_api.hpp | 1 + lib/libimhex/source/api/imhex_api.cpp | 1 + plugins/builtin/source/content/pl_builtin_types.cpp | 3 ++- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 2b95a3bd03ba8..e97d5d885737b 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 2b95a3bd03ba81dc40f50ab148ec2125010ee7ac +Subproject commit e97d5d885737b4599522ba2669e277d7393b433d diff --git a/lib/libimhex/include/hex/api/imhex_api.hpp b/lib/libimhex/include/hex/api/imhex_api.hpp index 9aae1e67b3059..b316cd337eec3 100644 --- a/lib/libimhex/include/hex/api/imhex_api.hpp +++ b/lib/libimhex/include/hex/api/imhex_api.hpp @@ -133,6 +133,7 @@ EXPORT_MODULE namespace hex { * @return Unique ID used to remove the tooltip again later */ u32 addTooltip(Region region, std::string value, color_t color); + // TODO:seems never used. /** * @brief Removes a hover tooltip from the Hex Editor diff --git a/lib/libimhex/source/api/imhex_api.cpp b/lib/libimhex/source/api/imhex_api.cpp index 995ab8f453031..80364087b8690 100644 --- a/lib/libimhex/source/api/imhex_api.cpp +++ b/lib/libimhex/source/api/imhex_api.cpp @@ -204,6 +204,7 @@ namespace hex { } static u32 s_tooltipId = 0; + // \/ --- TODO:seems never used. u32 addTooltip(Region region, std::string value, color_t color) { s_tooltipId++; impl::s_tooltips->insert({ s_tooltipId, { region, std::move(value), color } }); diff --git a/plugins/builtin/source/content/pl_builtin_types.cpp b/plugins/builtin/source/content/pl_builtin_types.cpp index 16a4b89e8275e..2c851436be767 100644 --- a/plugins/builtin/source/content/pl_builtin_types.cpp +++ b/plugins/builtin/source/content/pl_builtin_types.cpp @@ -189,7 +189,8 @@ namespace hex::plugin::builtin { auto &lastEntry = entries.back(); if (json.is_object()) { - lastEntry->setVariableName(it.key()); + // TODO: dogy? + lastEntry->setVariableName(it.key(), lastEntry->getVariableLocation()); } else { lastEntry->setArrayIndex(index); } From 3db158f138010f2257c648b6063a5957e460020e Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Fri, 18 Jul 2025 05:36:26 +1000 Subject: [PATCH 08/30] Arrays seem to work now --- lib/external/pattern_language | 2 +- plugins/builtin/source/content/views/view_hex_editor.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index e97d5d885737b..7994201db1dc2 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit e97d5d885737b4599522ba2669e277d7393b433d +Subproject commit 7994201db1dc2699e5702cc23429e973945df0df diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 7ac3eb909daff..71a54bbdaa387 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -28,6 +28,10 @@ #include #include +// DEBUGGING +#include +// + using namespace std::literals::string_literals; using namespace wolv::literals; @@ -1472,8 +1476,11 @@ namespace hex::plugin::builtin { if (menu::menuItem("hex.builtin.view.hex_editor.menu.edit.jump_to.curr_pattern"_lang, Shortcut::None, false, selection.has_value() && ContentRegistry::PatternLanguage::getRuntime().getCreatedPatternCount() > 0)) { auto patterns = ContentRegistry::PatternLanguage::getRuntime().getPatternsAtAddress(selection->getStartAddress()); - if (!patterns.empty()) + if (!patterns.empty()) { + const auto &pl = patterns.front()->getVariableLocation(); + std::cout << "*** " << pl.line << ":" << pl.column << " " << pl.length << std::endl; RequestJumpToPattern::post(patterns.front()); + } } }, [] { return ImHexApi::Provider::isValid() && ImHexApi::HexEditor::isSelectionValid() && ImHexApi::HexEditor::getSelection()->getSize() <= sizeof(u64); }); From 4c20938038cd8a458e1e071625249c476a4268a6 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Fri, 18 Jul 2025 07:43:11 +1000 Subject: [PATCH 09/30] Initial editor hookup --- .../include/hex/api/events/requests_interaction.hpp | 12 ++++++++++++ .../builtin/source/content/views/view_hex_editor.cpp | 5 ++++- .../source/content/views/view_pattern_editor.cpp | 11 +++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/libimhex/include/hex/api/events/requests_interaction.hpp b/lib/libimhex/include/hex/api/events/requests_interaction.hpp index a214e4e6847f8..e895480bd2f9d 100644 --- a/lib/libimhex/include/hex/api/events/requests_interaction.hpp +++ b/lib/libimhex/include/hex/api/events/requests_interaction.hpp @@ -29,6 +29,18 @@ namespace hex { */ EVENT_DEF(RequestPatternEditorSelectionChange, u32, u32); + /** + * @brief Requests the Pattern set the selection + * + * Requests the Pattern editor select a region. + * + * @param startLine the line selection starts on + * @param startcolumn the column selection starts on + * @param endLine the line selection ends on + * @param endcolumn the column selection ends on + */ + EVENT_DEF(RequestPatternEditorSetSelection, u32, u32, u32, u32); + /** * @brief Requests a jump to a given pattern * diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 71a54bbdaa387..b0a45dd2157c1 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -1479,7 +1479,10 @@ namespace hex::plugin::builtin { if (!patterns.empty()) { const auto &pl = patterns.front()->getVariableLocation(); std::cout << "*** " << pl.line << ":" << pl.column << " " << pl.length << std::endl; - RequestJumpToPattern::post(patterns.front()); + // Debugging: put me back! + // RequestJumpToPattern::post(patterns.front()); + + RequestPatternEditorSetSelection::post(pl.line, pl.column, pl.line, pl.column+pl.length); } } }, diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index e9963d764a45e..c4b1bee62dc97 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -2020,6 +2020,17 @@ namespace hex::plugin::builtin { m_textEditor.get(provider).SetCursorPosition(coords); }); + RequestPatternEditorSetSelection::subscribe(this, [this](u32 startLine, u32 startcolumn, u32 endLine, u32 endcolumn) { + auto provider = ImHexApi::Provider::get(); + if (startLine == 0 || endLine == 0) + return; + + const TextEditor::Coordinates start = { int(startLine) - 1, int(startcolumn)-1 }; + const TextEditor::Coordinates end = { int(endLine) - 1, int(endcolumn)-1 }; + m_textEditor.get(provider).SetSelection(start, end); + m_textEditor.get(provider).SetCursorPosition(end); + }); + RequestLoadPatternLanguageFile::subscribe(this, [this](const std::fs::path &path) { this->loadPatternFile(path, ImHexApi::Provider::get()); }); From 02edc2b58e38d9d378774d2e6af4b48cbe76a051 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 19 Jul 2025 01:48:33 +1000 Subject: [PATCH 10/30] Clean up a a little --- plugins/builtin/source/content/views/view_pattern_editor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index c4b1bee62dc97..c2bd7c02c4ac8 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -2025,8 +2025,8 @@ namespace hex::plugin::builtin { if (startLine == 0 || endLine == 0) return; - const TextEditor::Coordinates start = { int(startLine) - 1, int(startcolumn)-1 }; - const TextEditor::Coordinates end = { int(endLine) - 1, int(endcolumn)-1 }; + const TextEditor::Coordinates start = { int(startLine)- 1, int(startcolumn)-1 }; + const TextEditor::Coordinates end = { int(endLine)- 1, int(endcolumn)-1 }; m_textEditor.get(provider).SetSelection(start, end); m_textEditor.get(provider).SetCursorPosition(end); }); From f8bfe96489cd57508dda04a12cbd09cc44d654e5 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 19 Jul 2025 01:49:43 +1000 Subject: [PATCH 11/30] Clean up a a little --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 7994201db1dc2..59008b987c072 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 7994201db1dc2699e5702cc23429e973945df0df +Subproject commit 59008b987c072307ba41e83dfb037083d4c0a614 From dc4727c5a88f63c03249af127a90239810bf0563 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 19 Jul 2025 02:46:22 +1000 Subject: [PATCH 12/30] Update PL --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 59008b987c072..eb224fc2e9b89 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 59008b987c072307ba41e83dfb037083d4c0a614 +Subproject commit eb224fc2e9b89a665c755c42b38ccbdb8b60b5c1 From d7420d39feae38f92b96319c2a5c0a1b449d16b4 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 19 Jul 2025 02:56:45 +1000 Subject: [PATCH 13/30] Update PL --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 0b72b16ad3175..aa083459bb475 100644 --- a/.gitmodules +++ b/.gitmodules @@ -36,7 +36,7 @@ url = https://github.com/WerWolv/libromfs [submodule "lib/external/pattern_language"] path = lib/external/pattern_language - url = https://github.com/WerWolv/PatternLanguage + url = https://github.com/shewitt-au/PL_Hexcluded [submodule "lib/external/libwolv"] path = lib/external/libwolv url = https://github.com/WerWolv/libwolv From 6dc49cd47b349194514266d476608f9f011be864 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 19 Jul 2025 03:25:09 +1000 Subject: [PATCH 14/30] Attempt to fix macOS build --- plugins/builtin/source/content/views/view_hex_editor.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index b0a45dd2157c1..9dbb2a88b9b62 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -1500,6 +1500,7 @@ namespace hex::plugin::builtin { /* Debug */ ContentRegistry::Interface::addMenuItemSubMenu({ "hex.builtin.menu.edit", "hex.builtin.view.hex_editor.menu.edit.debug" }, ICON_VS_DEBUG_STEP_OUT, 1860, [this] { + (void)this; }, [] { return true; }); From 2a1d1b68a2cc517756a6ee3a1ae634a378315116 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 19 Jul 2025 05:36:01 +1000 Subject: [PATCH 15/30] Clean up menus --- plugins/builtin/romfs/lang/en_US.json | 2 +- .../source/content/views/view_hex_editor.cpp | 28 ++++++++----------- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index eb75f7bf31ca5..e49a8cd6b3efc 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -836,7 +836,7 @@ "hex.builtin.view.hex_editor.menu.edit.insert": "Insert...", "hex.builtin.view.hex_editor.menu.edit.insert_mode": "Insert Mode", "hex.builtin.view.hex_editor.menu.edit.jump_to": "Follow selection", - "hex.builtin.view.hex_editor.menu.edit.debug": "Debug", + "hex.builtin.view.hex_editor.menu.edit.goto_pattern_editor": "Goto in pattern editor", "hex.builtin.view.hex_editor.menu.edit.jump_to.curr_pattern": "Current Pattern", "hex.builtin.view.hex_editor.menu.edit.open_in_new_provider": "Open Selection View", "hex.builtin.view.hex_editor.menu.edit.paste": "Paste", diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 9dbb2a88b9b62..f1bfae1b2824b 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -28,10 +28,6 @@ #include #include -// DEBUGGING -#include -// - using namespace std::literals::string_literals; using namespace wolv::literals; @@ -1477,12 +1473,7 @@ namespace hex::plugin::builtin { auto patterns = ContentRegistry::PatternLanguage::getRuntime().getPatternsAtAddress(selection->getStartAddress()); if (!patterns.empty()) { - const auto &pl = patterns.front()->getVariableLocation(); - std::cout << "*** " << pl.line << ":" << pl.column << " " << pl.length << std::endl; - // Debugging: put me back! - // RequestJumpToPattern::post(patterns.front()); - - RequestPatternEditorSetSelection::post(pl.line, pl.column, pl.line, pl.column+pl.length); + RequestJumpToPattern::post(patterns.front()); } } }, @@ -1497,13 +1488,18 @@ namespace hex::plugin::builtin { }, [] { return ImHexApi::Provider::isValid() && ImHexApi::Provider::get()->isReadable(); }); - /* Debug */ - ContentRegistry::Interface::addMenuItemSubMenu({ "hex.builtin.menu.edit", "hex.builtin.view.hex_editor.menu.edit.debug" }, ICON_VS_DEBUG_STEP_OUT, 1860, - [this] { - (void)this; + /* Goto in pattern editor */ + ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.edit", "hex.builtin.view.hex_editor.menu.edit.goto_pattern_editor" }, ICON_VS_GO_TO_FILE, 1870, Shortcut::None, + [] { + const auto selection = ImHexApi::HexEditor::getSelection(); + auto patterns = ContentRegistry::PatternLanguage::getRuntime().getPatternsAtAddress(selection->getStartAddress()); + if (!patterns.empty()) { + const auto &pl = patterns.front()->getVariableLocation(); + RequestPatternEditorSetSelection::post(pl.line, pl.column, pl.line, pl.column+pl.length); + } }, - [] { return true; }); - + [] { return ImHexApi::Provider::isValid() && ImHexApi::HexEditor::isSelectionValid() && ImHexApi::HexEditor::getSelection()->getSize() <= sizeof(u64); } ); + ContentRegistry::Interface::addMenuItemSeparator({ "hex.builtin.menu.edit" }, 1900); /* Open in new provider */ From 96060d80bd195ff1546fc45bf4683acf36439302 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sat, 19 Jul 2025 22:56:29 +1000 Subject: [PATCH 16/30] Various fixes --- lib/external/pattern_language | 2 +- plugins/builtin/source/content/pl_builtin_types.cpp | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index eb224fc2e9b89..278a49adfd312 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit eb224fc2e9b89a665c755c42b38ccbdb8b60b5c1 +Subproject commit 278a49adfd312872cbdb10a8cd6aa43e8de9a333 diff --git a/plugins/builtin/source/content/pl_builtin_types.cpp b/plugins/builtin/source/content/pl_builtin_types.cpp index 2c851436be767..16a4b89e8275e 100644 --- a/plugins/builtin/source/content/pl_builtin_types.cpp +++ b/plugins/builtin/source/content/pl_builtin_types.cpp @@ -189,8 +189,7 @@ namespace hex::plugin::builtin { auto &lastEntry = entries.back(); if (json.is_object()) { - // TODO: dogy? - lastEntry->setVariableName(it.key(), lastEntry->getVariableLocation()); + lastEntry->setVariableName(it.key()); } else { lastEntry->setArrayIndex(index); } From d1541eff2b53382b336c34d05495aef15782f12b Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sun, 20 Jul 2025 22:49:52 +1000 Subject: [PATCH 17/30] Fix PL reference --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 3ceb74b0edff4..7cbc1ac7f860a 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 3ceb74b0edff4bec155187c8670ce06dd530e5cb +Subproject commit 7cbc1ac7f860ad52a99359770c9f224a05d9a3ad From 96c8050d098268e544fb26c43b4952ef56ced22f Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sun, 20 Jul 2025 23:04:40 +1000 Subject: [PATCH 18/30] Fix accidental change --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index aa083459bb475..0b72b16ad3175 100644 --- a/.gitmodules +++ b/.gitmodules @@ -36,7 +36,7 @@ url = https://github.com/WerWolv/libromfs [submodule "lib/external/pattern_language"] path = lib/external/pattern_language - url = https://github.com/shewitt-au/PL_Hexcluded + url = https://github.com/WerWolv/PatternLanguage [submodule "lib/external/libwolv"] path = lib/external/libwolv url = https://github.com/WerWolv/libwolv From 61044a042fcf8c8713124f29c1771e353d7ac85d Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sun, 20 Jul 2025 23:07:11 +1000 Subject: [PATCH 19/30] Removed some comments --- lib/libimhex/include/hex/api/imhex_api.hpp | 1 - lib/libimhex/source/api/imhex_api.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/libimhex/include/hex/api/imhex_api.hpp b/lib/libimhex/include/hex/api/imhex_api.hpp index b316cd337eec3..9aae1e67b3059 100644 --- a/lib/libimhex/include/hex/api/imhex_api.hpp +++ b/lib/libimhex/include/hex/api/imhex_api.hpp @@ -133,7 +133,6 @@ EXPORT_MODULE namespace hex { * @return Unique ID used to remove the tooltip again later */ u32 addTooltip(Region region, std::string value, color_t color); - // TODO:seems never used. /** * @brief Removes a hover tooltip from the Hex Editor diff --git a/lib/libimhex/source/api/imhex_api.cpp b/lib/libimhex/source/api/imhex_api.cpp index 80364087b8690..995ab8f453031 100644 --- a/lib/libimhex/source/api/imhex_api.cpp +++ b/lib/libimhex/source/api/imhex_api.cpp @@ -204,7 +204,6 @@ namespace hex { } static u32 s_tooltipId = 0; - // \/ --- TODO:seems never used. u32 addTooltip(Region region, std::string value, color_t color) { s_tooltipId++; impl::s_tooltips->insert({ s_tooltipId, { region, std::move(value), color } }); From 8d3695444d26e7c13c3d2ef6e52ce5870a9de779 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Sun, 20 Jul 2025 23:17:14 +1000 Subject: [PATCH 20/30] Trigger CI rerun From 266d8e61b685f73e1916b98961962e83ed32771c Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Mon, 21 Jul 2025 06:11:20 +1000 Subject: [PATCH 21/30] Oops --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 3ceb74b0edff4..92771743f9c43 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 3ceb74b0edff4bec155187c8670ce06dd530e5cb +Subproject commit 92771743f9c4324334ff94e744c192b43219d8b9 From 5669307fa2b9f41f63cf8507e62671b09bbdef55 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Mon, 21 Jul 2025 06:19:07 +1000 Subject: [PATCH 22/30] Update PL --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 92771743f9c43..5e022d70f0c1d 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 92771743f9c4324334ff94e744c192b43219d8b9 +Subproject commit 5e022d70f0c1d4372ee477f8e59b98575edbd719 From ea22fac921dfe0aebf7f5217b9d69f73297d562a Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Mon, 21 Jul 2025 06:50:51 +1000 Subject: [PATCH 23/30] Strange stuff From d213717246056d31b24a904a7117b44c3dce8487 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Mon, 21 Jul 2025 07:05:31 +1000 Subject: [PATCH 24/30] Update PL --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 5e022d70f0c1d..80ee28be1e1ec 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 5e022d70f0c1d4372ee477f8e59b98575edbd719 +Subproject commit 80ee28be1e1eccdd85e0199d0f7856e499891d44 From 0bebe8c10d696d42ab55c4404d72380c590d29f9 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 22 Jul 2025 02:51:38 +1000 Subject: [PATCH 25/30] Repair damage due to my poor git skills --- .../content/views/view_pattern_editor.cpp | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index 24dc1a6914400..9fa6be530c9b6 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -1929,11 +1929,12 @@ namespace hex::plugin::builtin { if (startLine == 0 || endLine == 0) return; - const TextEditor::Coordinates start = { int(startLine)- 1, int(startcolumn)-1 }; - const TextEditor::Coordinates end = { int(endLine)- 1, int(endcolumn)-1 }; + const TextEditor::Coordinates start = { int(startLine)-1, int(startcolumn)-1 }; + const TextEditor::Coordinates end = { int(endLine)-1, int(endcolumn)-1 }; m_textEditor.get(provider).SetSelection(start, end); m_textEditor.get(provider).SetCursorPosition(end); }); + RequestLoadPatternLanguageFile::subscribe(this, [this](const std::fs::path &path) { this->loadPatternFile(path, ImHexApi::Provider::get()); @@ -2204,38 +2205,31 @@ namespace hex::plugin::builtin { if (TRY_LOCK(ContentRegistry::PatternLanguage::getRuntimeLock())) { const auto &runtime = ContentRegistry::PatternLanguage::getRuntime(); - std::set drawnPatterns; - for (u64 offset = 0; offset < size; offset += 1) { - auto patterns = runtime.getPatternsAtAddress(address + offset); - if (!patterns.empty() && !std::ranges::all_of(patterns, [](const auto &pattern) { return pattern->getVisibility() == pl::ptrn::Visibility::Hidden || pattern->getVisibility() == pl::ptrn::Visibility::HighlightHidden; })) { - ImGui::BeginTooltip(); - - for (const auto &pattern : patterns) { - // Avoid drawing the same pattern multiple times - if (!drawnPatterns.insert(pattern).second) - continue; - - auto visibility = pattern->getVisibility(); - if (visibility == pl::ptrn::Visibility::Hidden || visibility == pl::ptrn::Visibility::HighlightHidden) - continue; - - const auto tooltipColor = (pattern->getColor() & 0x00FF'FFFF) | 0x7000'0000; - ImGui::PushID(pattern); - if (ImGui::BeginTable("##tooltips", 1, ImGuiTableFlags_RowBg | ImGuiTableFlags_NoClip)) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - - this->drawPatternTooltip(pattern); - - ImGui::PushStyleColor(ImGuiCol_TableRowBg, tooltipColor); - ImGui::PushStyleColor(ImGuiCol_TableRowBgAlt, tooltipColor); - ImGui::EndTable(); - ImGui::PopStyleColor(2); - } - ImGui::PopID(); + auto patterns = runtime.getPatternsAtAddress(address); + if (!patterns.empty() && !std::ranges::all_of(patterns, [](const auto &pattern) { return pattern->getVisibility() == pl::ptrn::Visibility::Hidden || pattern->getVisibility() == pl::ptrn::Visibility::HighlightHidden; })) { + ImGui::BeginTooltip(); + + for (const auto &pattern : patterns) { + auto visibility = pattern->getVisibility(); + if (visibility == pl::ptrn::Visibility::Hidden || visibility == pl::ptrn::Visibility::HighlightHidden) + continue; + + const auto tooltipColor = (pattern->getColor() & 0x00FF'FFFF) | 0x7000'0000; + ImGui::PushID(pattern); + if (ImGui::BeginTable("##tooltips", 1, ImGuiTableFlags_RowBg | ImGuiTableFlags_NoClip)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + + this->drawPatternTooltip(pattern); + + ImGui::PushStyleColor(ImGuiCol_TableRowBg, tooltipColor); + ImGui::PushStyleColor(ImGuiCol_TableRowBgAlt, tooltipColor); + ImGui::EndTable(); + ImGui::PopStyleColor(2); } - ImGui::EndTooltip(); + ImGui::PopID(); } + ImGui::EndTooltip(); } } }); From c382a1fe6402f2d4c0546206e3479d6b80e5693b Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 22 Jul 2025 03:02:45 +1000 Subject: [PATCH 26/30] Repair damage due to my poor git skills --- plugins/builtin/source/content/views/view_pattern_editor.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index 9fa6be530c9b6..c674dce464af5 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -1934,7 +1934,6 @@ namespace hex::plugin::builtin { m_textEditor.get(provider).SetSelection(start, end); m_textEditor.get(provider).SetCursorPosition(end); }); - RequestLoadPatternLanguageFile::subscribe(this, [this](const std::fs::path &path) { this->loadPatternFile(path, ImHexApi::Provider::get()); From 99885bd2dffddfe29cd2e875724661ec24d2a54f Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 22 Jul 2025 03:04:37 +1000 Subject: [PATCH 27/30] Repair damage due to my poor git skills --- .../source/content/views/view_pattern_editor.cpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index c674dce464af5..dab1439579272 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -1924,17 +1924,6 @@ namespace hex::plugin::builtin { m_textEditor.get(provider).SetCursorPosition(coords); }); - RequestPatternEditorSetSelection::subscribe(this, [this](u32 startLine, u32 startcolumn, u32 endLine, u32 endcolumn) { - auto provider = ImHexApi::Provider::get(); - if (startLine == 0 || endLine == 0) - return; - - const TextEditor::Coordinates start = { int(startLine)-1, int(startcolumn)-1 }; - const TextEditor::Coordinates end = { int(endLine)-1, int(endcolumn)-1 }; - m_textEditor.get(provider).SetSelection(start, end); - m_textEditor.get(provider).SetCursorPosition(end); - }); - RequestLoadPatternLanguageFile::subscribe(this, [this](const std::fs::path &path) { this->loadPatternFile(path, ImHexApi::Provider::get()); }); From a9faa336b2db4224478d29839f66931a1ec0be04 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 22 Jul 2025 03:22:18 +1000 Subject: [PATCH 28/30] Repair damage due to my poor git skills --- .../content/views/view_pattern_editor.cpp | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index dab1439579272..e9d1ac997c24b 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -1924,6 +1924,17 @@ namespace hex::plugin::builtin { m_textEditor.get(provider).SetCursorPosition(coords); }); + RequestPatternEditorSetSelection::subscribe(this, [this](u32 startLine, u32 startcolumn, u32 endLine, u32 endcolumn) { + auto provider = ImHexApi::Provider::get(); + if (startLine == 0 || endLine == 0) + return; + + const TextEditor::Coordinates start = { int(startLine)-1, int(startcolumn)-1 }; + const TextEditor::Coordinates end = { int(endLine)-1, int(endcolumn)-1 }; + m_textEditor.get(provider).SetSelection(start, end); + m_textEditor.get(provider).SetCursorPosition(end); + }); + RequestLoadPatternLanguageFile::subscribe(this, [this](const std::fs::path &path) { this->loadPatternFile(path, ImHexApi::Provider::get()); }); @@ -2193,31 +2204,38 @@ namespace hex::plugin::builtin { if (TRY_LOCK(ContentRegistry::PatternLanguage::getRuntimeLock())) { const auto &runtime = ContentRegistry::PatternLanguage::getRuntime(); - auto patterns = runtime.getPatternsAtAddress(address); - if (!patterns.empty() && !std::ranges::all_of(patterns, [](const auto &pattern) { return pattern->getVisibility() == pl::ptrn::Visibility::Hidden || pattern->getVisibility() == pl::ptrn::Visibility::HighlightHidden; })) { - ImGui::BeginTooltip(); - - for (const auto &pattern : patterns) { - auto visibility = pattern->getVisibility(); - if (visibility == pl::ptrn::Visibility::Hidden || visibility == pl::ptrn::Visibility::HighlightHidden) - continue; - - const auto tooltipColor = (pattern->getColor() & 0x00FF'FFFF) | 0x7000'0000; - ImGui::PushID(pattern); - if (ImGui::BeginTable("##tooltips", 1, ImGuiTableFlags_RowBg | ImGuiTableFlags_NoClip)) { - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - - this->drawPatternTooltip(pattern); - - ImGui::PushStyleColor(ImGuiCol_TableRowBg, tooltipColor); - ImGui::PushStyleColor(ImGuiCol_TableRowBgAlt, tooltipColor); - ImGui::EndTable(); - ImGui::PopStyleColor(2); + std::set drawnPatterns; + for (u64 offset = 0; offset < size; offset += 1) { + auto patterns = runtime.getPatternsAtAddress(address + offset); + if (!patterns.empty() && !std::ranges::all_of(patterns, [](const auto &pattern) { return pattern->getVisibility() == pl::ptrn::Visibility::Hidden || pattern->getVisibility() == pl::ptrn::Visibility::HighlightHidden; })) { + ImGui::BeginTooltip(); + + for (const auto &pattern : patterns) { + // Avoid drawing the same pattern multiple times + if (!drawnPatterns.insert(pattern).second) + continue; + + auto visibility = pattern->getVisibility(); + if (visibility == pl::ptrn::Visibility::Hidden || visibility == pl::ptrn::Visibility::HighlightHidden) + continue; + + const auto tooltipColor = (pattern->getColor() & 0x00FF'FFFF) | 0x7000'0000; + ImGui::PushID(pattern); + if (ImGui::BeginTable("##tooltips", 1, ImGuiTableFlags_RowBg | ImGuiTableFlags_NoClip)) { + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + + this->drawPatternTooltip(pattern); + + ImGui::PushStyleColor(ImGuiCol_TableRowBg, tooltipColor); + ImGui::PushStyleColor(ImGuiCol_TableRowBgAlt, tooltipColor); + ImGui::EndTable(); + ImGui::PopStyleColor(2); + } + ImGui::PopID(); } - ImGui::PopID(); + ImGui::EndTooltip(); } - ImGui::EndTooltip(); } } }); From de081c442730585beb59cdb637f05a997fec5864 Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 22 Jul 2025 03:27:49 +1000 Subject: [PATCH 29/30] Undo formatting changes --- plugins/builtin/source/content/views/view_hex_editor.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 0d18be1cc77aa..3ed9daa9267a4 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -1482,14 +1482,12 @@ namespace hex::plugin::builtin { if (menu::menuItem("hex.builtin.view.hex_editor.menu.edit.jump_to.curr_pattern"_lang, Shortcut::None, false, selection.has_value() && ContentRegistry::PatternLanguage::getRuntime().getCreatedPatternCount() > 0)) { auto patterns = ContentRegistry::PatternLanguage::getRuntime().getPatternsAtAddress(selection->getStartAddress()); - if (!patterns.empty()) { + if (!patterns.empty()) RequestJumpToPattern::post(patterns.front()); - } } }, [] { return ImHexApi::Provider::isValid() && ImHexApi::HexEditor::isSelectionValid() && ImHexApi::HexEditor::getSelection()->getSize() <= sizeof(u64); }); - - + /* Set Page Size */ ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.edit", "hex.builtin.view.hex_editor.menu.edit.set_page_size" }, ICON_VS_BROWSER, 1860, Shortcut::None, [this] { From 2c8101117d05d314eac8f7805f5d7ae4eec2010e Mon Sep 17 00:00:00 2001 From: "shewitt.au" Date: Tue, 22 Jul 2025 04:28:35 +1000 Subject: [PATCH 30/30] Update PL --- lib/external/pattern_language | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 80ee28be1e1ec..3fd3748e87e27 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 80ee28be1e1eccdd85e0199d0f7856e499891d44 +Subproject commit 3fd3748e87e27a88586ff7ab396badf6458b36f1