From bf8924ae0c1b4e53ff5ffe90fc8f67da28f09828 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Wed, 2 Aug 2023 12:51:02 +0200 Subject: [PATCH] feat: Added support for string in/out variables --- lib/external/libwolv | 2 +- lib/external/pattern_language | 2 +- .../source/content/views/view_pattern_editor.cpp | 14 ++++++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/external/libwolv b/lib/external/libwolv index dfe0da877..123e81544 160000 --- a/lib/external/libwolv +++ b/lib/external/libwolv @@ -1 +1 @@ -Subproject commit dfe0da877f89a0bc88feca5bd44b282344de9677 +Subproject commit 123e81544b006d81a9fd3b27b465b0302c4602ba diff --git a/lib/external/pattern_language b/lib/external/pattern_language index 4027e270c..ed63a261f 160000 --- a/lib/external/pattern_language +++ b/lib/external/pattern_language @@ -1 +1 @@ -Subproject commit 4027e270c73d8569226d25901ee13e33aa506b15 +Subproject commit ed63a261f415ce903c8e49c6e2c57a7c5a9db826 diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index 902639a7e..373b7a386 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -436,9 +436,9 @@ namespace hex::plugin::builtin { if (patternVariables.empty()) { ImGui::TextFormattedCentered("hex.builtin.view.pattern_editor.no_in_out_vars"_lang); } else { - if (ImGui::BeginTable("##in_out_vars_table", 2, ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_BordersInnerH)) { - ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthStretch, 0.4F); - ImGui::TableSetupColumn("Value", ImGuiTableColumnFlags_WidthStretch, 0.6F); + if (ImGui::BeginTable("##in_out_vars_table", 2, ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH | ImGuiTableFlags_RowBg)) { + ImGui::TableSetupColumn("Name", ImGuiTableColumnFlags_WidthStretch, 0.25F); + ImGui::TableSetupColumn("Value", ImGuiTableColumnFlags_WidthStretch, 0.75F); for (auto &[name, variable] : patternVariables) { ImGui::TableNextRow(); @@ -448,6 +448,7 @@ namespace hex::plugin::builtin { ImGui::TableNextColumn(); + ImGui::PushItemWidth(-1); if (variable.outVariable) { ImGui::TextUnformatted(variable.value.toString(true).c_str()); } else if (variable.inVariable) { @@ -470,11 +471,16 @@ namespace hex::plugin::builtin { ImGui::Checkbox(label.c_str(), &value); variable.value = value; } else if (variable.type == pl::core::Token::ValueType::Character) { - std::array buffer = { }; + std::array buffer = { hex::get_or(variable.value, '\x00') }; ImGui::InputText(label.c_str(), buffer.data(), buffer.size()); variable.value = buffer[0]; + } else if (variable.type == pl::core::Token::ValueType::String) { + std::string buffer = hex::get_or(variable.value, ""); + ImGui::InputText(label.c_str(), buffer); + variable.value = buffer; } } + ImGui::PopItemWidth(); } ImGui::EndTable();