diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index 84878d193..4a080e556 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -745,6 +745,7 @@ "hex.builtin.view.data_inspector.table.value": "Value", "hex.builtin.view.data_inspector.custom_row.title": "Adding custom rows", "hex.builtin.view.data_inspector.custom_row.hint": "It's possible to define custom data inspector rows by placing pattern language scripts in the /scripts/inspectors folder.\n\nCheck the documentation for more information.", + "hex.builtin.view.data_processor.continuous_evaluation": "Continuous Evaluation", "hex.builtin.view.data_processor.help_text": "Right click to add a new node", "hex.builtin.view.data_processor.menu.file.load_processor": "Load data processor...", "hex.builtin.view.data_processor.menu.file.save_processor": "Save data processor...", diff --git a/plugins/builtin/source/content/views/view_data_processor.cpp b/plugins/builtin/source/content/views/view_data_processor.cpp index 10690f857..2fb484c68 100644 --- a/plugins/builtin/source/content/views/view_data_processor.cpp +++ b/plugins/builtin/source/content/views/view_data_processor.cpp @@ -916,7 +916,7 @@ namespace hex::plugin::builtin { } // Draw the main node editor workspace window - if (ImGui::BeginChild("##node_editor", ImGui::GetContentRegionAvail() - ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 1.3F))) { + if (ImGui::BeginChild("##node_editor", ImGui::GetContentRegionAvail() - ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 1.25F))) { ImNodes::BeginNodeEditor(); if (m_evaluationTask.isRunning()) @@ -984,6 +984,8 @@ namespace hex::plugin::builtin { ImGui::EndDisabled(); + ImGui::SetCursorPosY(ImGui::GetCursorPosY() + ImGui::GetStyle().ItemSpacing.y); + // Draw the control bar at the bottom { if (!m_evaluationTask.isRunning()) { @@ -998,7 +1000,9 @@ namespace hex::plugin::builtin { ImGui::SameLine(); - ImGui::Checkbox("Continuous evaluation", &m_continuousEvaluation); + ImGuiExt::DimmedIconToggle(ICON_VS_DEBUG_RERUN, &m_continuousEvaluation); + ImGui::SetItemTooltip("%s", "hex.builtin.view.data_processor.continuous_evaluation"_lang.get()); + } diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index 13938b7be..3fd7ad60b 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -400,6 +400,8 @@ namespace hex::plugin::builtin { settingsSize.y -= ImGui::GetTextLineHeightWithSpacing() * 2.5F; if (ImGui::BeginTabBar("##settings")) { + const auto startY = ImGui::GetCursorPosY(); + if (ImGui::BeginTabItem("hex.builtin.view.pattern_editor.console"_lang)) { this->drawConsole(settingsSize); ImGui::EndTabItem(); @@ -421,6 +423,8 @@ namespace hex::plugin::builtin { ImGui::EndTabItem(); } + ImGui::SetCursorPosY(startY + settingsSize.y + ImGui::GetStyle().ItemSpacing.y * 2); + ImGui::EndTabBar(); } @@ -498,10 +502,20 @@ namespace hex::plugin::builtin { ImGui::PopStyleVar(2); } else { - if (ImGui::Checkbox("hex.builtin.view.pattern_editor.auto"_lang, &m_runAutomatically)) { + ImGui::SameLine(0, 10_scaled); + if (ImGuiExt::DimmedIconToggle(ICON_VS_EDIT_SPARKLE, &m_runAutomatically)) { if (m_runAutomatically) m_hasUnevaluatedChanges.get(provider) = true; } + ImGui::SetItemTooltip("%s", "hex.builtin.view.pattern_editor.auto"_lang.get()); + + ImGui::SameLine(); + + bool synced = m_sourceCode.isSynced(); + if (ImGuiExt::DimmedIconToggle(ICON_VS_REPO_PINNED, &synced)) { + ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.sync_pattern_source", synced); + } + ImGui::SetItemTooltip("%s", "hex.builtin.setting.general.sync_pattern_source"_lang.get()); ImGui::SameLine(); ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); @@ -1230,12 +1244,12 @@ namespace hex::plugin::builtin { const auto line = m_textEditor.get(provider).GetCursorPosition().mLine + 1; if (!m_breakpoints->contains(line)) { - if (ImGuiExt::IconButton(ICON_VS_DEBUG_BREAKPOINT, ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_ToolbarRed))) { + if (ImGuiExt::IconButton(ICON_VS_CIRCLE, ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_ToolbarRed))) { evaluator->addBreakpoint(line); } ImGuiExt::InfoTooltip("hex.builtin.view.pattern_editor.debugger.add_tooltip"_lang); } else { - if (ImGuiExt::IconButton(ICON_VS_DEBUG_BREAKPOINT_UNVERIFIED, ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_ToolbarRed))) { + if (ImGuiExt::IconButton(ICON_VS_CIRCLE_FILLED, ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_ToolbarRed))) { evaluator->removeBreakpoint(line); } ImGuiExt::InfoTooltip("hex.builtin.view.pattern_editor.debugger.remove_tooltip"_lang);