ui/ux: hexeditor -> hex_editor, Improved performance and flickering when highlighting bytes
This commit is contained in:
parent
decfad5c99
commit
b3728ae658
@ -24,7 +24,7 @@ add_library(${PROJECT_NAME} SHARED
|
|||||||
source/content/providers/gdb_provider.cpp
|
source/content/providers/gdb_provider.cpp
|
||||||
source/content/providers/disk_provider.cpp
|
source/content/providers/disk_provider.cpp
|
||||||
|
|
||||||
source/content/views/view_hexeditor.cpp
|
source/content/views/view_hex_editor.cpp
|
||||||
source/content/views/view_pattern_editor.cpp
|
source/content/views/view_pattern_editor.cpp
|
||||||
source/content/views/view_pattern_data.cpp
|
source/content/views/view_pattern_data.cpp
|
||||||
source/content/views/view_hashes.cpp
|
source/content/views/view_hashes.cpp
|
||||||
|
@ -35,35 +35,35 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
void registerDataFormatters() {
|
void registerDataFormatters() {
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.c", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.c", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
return formatLanguageArray(provider, offset, size, hex::format("const uint8_t data[{0}] = {{", size), "0x{0:02X}, ", "};");
|
return formatLanguageArray(provider, offset, size, hex::format("const uint8_t data[{0}] = {{", size), "0x{0:02X}, ", "};");
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.cpp", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.cpp", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
return formatLanguageArray(provider, offset, size, hex::format("constexpr std::array<uint8_t, {0}> data = {{", size), "0x{0:02X}, ", "};");
|
return formatLanguageArray(provider, offset, size, hex::format("constexpr std::array<uint8_t, {0}> data = {{", size), "0x{0:02X}, ", "};");
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.java", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.java", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
return formatLanguageArray(provider, offset, size, "final byte[] data = {", "0x{0:02X}, ", "};");
|
return formatLanguageArray(provider, offset, size, "final byte[] data = {", "0x{0:02X}, ", "};");
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.csharp", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.csharp", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
return formatLanguageArray(provider, offset, size, "const byte[] data = {", "0x{0:02X}, ", "};");
|
return formatLanguageArray(provider, offset, size, "const byte[] data = {", "0x{0:02X}, ", "};");
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.rust", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.rust", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
return formatLanguageArray(provider, offset, size, hex::format("let data: [u8; 0x{0:02X}] = [", size), "0x{0:02X}, ", "];");
|
return formatLanguageArray(provider, offset, size, hex::format("let data: [u8; 0x{0:02X}] = [", size), "0x{0:02X}, ", "];");
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.python", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.python", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
return formatLanguageArray(provider, offset, size, "data = bytes([", "0x{0:02X}, ", "]);");
|
return formatLanguageArray(provider, offset, size, "data = bytes([", "0x{0:02X}, ", "]);");
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.js", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.js", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
return formatLanguageArray(provider, offset, size, "const data = new Uint8Array([", "0x{0:02X}, ", "]);");
|
return formatLanguageArray(provider, offset, size, "const data = new Uint8Array([", "0x{0:02X}, ", "]);");
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.ascii", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.ascii", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
std::string result = "Hex View 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n\n";
|
std::string result = "Hex View 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F\n\n";
|
||||||
|
|
||||||
std::vector<u8> buffer(0x1'0000, 0x00);
|
std::vector<u8> buffer(0x1'0000, 0x00);
|
||||||
@ -105,7 +105,7 @@ namespace hex::plugin::builtin {
|
|||||||
return result;
|
return result;
|
||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::DataFormatter::add("hex.builtin.view.hexeditor.copy.html", [](prv::Provider *provider, u64 offset, size_t size) {
|
ContentRegistry::DataFormatter::add("hex.builtin.view.hex_editor.copy.html", [](prv::Provider *provider, u64 offset, size_t size) {
|
||||||
std::string result =
|
std::string result =
|
||||||
"<div>\n"
|
"<div>\n"
|
||||||
" <style type=\"text/css\">\n"
|
" <style type=\"text/css\">\n"
|
||||||
|
@ -21,7 +21,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGuiID patternData = ImGui::DockBuilderSplitNode(hexEditor, ImGuiDir_Down, 0.3F, nullptr, &hexEditor);
|
ImGuiID patternData = ImGui::DockBuilderSplitNode(hexEditor, ImGuiDir_Down, 0.3F, nullptr, &hexEditor);
|
||||||
ImGuiID inspector = ImGui::DockBuilderSplitNode(hexEditor, ImGuiDir_Right, 0.3F, nullptr, &hexEditor);
|
ImGuiID inspector = ImGui::DockBuilderSplitNode(hexEditor, ImGuiDir_Right, 0.3F, nullptr, &hexEditor);
|
||||||
|
|
||||||
openViewAndDockTo("hex.builtin.view.hexeditor.name", hexEditor);
|
openViewAndDockTo("hex.builtin.view.hex_editor.name", hexEditor);
|
||||||
openViewAndDockTo("hex.builtin.view.data_inspector.name", inspector);
|
openViewAndDockTo("hex.builtin.view.data_inspector.name", inspector);
|
||||||
openViewAndDockTo("hex.builtin.view.pattern_data.name", patternData);
|
openViewAndDockTo("hex.builtin.view.pattern_data.name", patternData);
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ namespace hex::plugin::builtin {
|
|||||||
// Save file as
|
// Save file as
|
||||||
ImGui::Disabled([&provider] {
|
ImGui::Disabled([&provider] {
|
||||||
if (ImGui::ToolBarButton(ICON_VS_SAVE_AS, ImGui::GetCustomColorVec4(ImGuiCustomCol_ToolbarBlue)))
|
if (ImGui::ToolBarButton(ICON_VS_SAVE_AS, ImGui::GetCustomColorVec4(ImGuiCustomCol_ToolbarBlue)))
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.save_as"_lang, DialogMode::Save, {}, [&provider](auto path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.save_as"_lang, DialogMode::Save, {}, [&provider](auto path) {
|
||||||
provider->saveAs(path);
|
provider->saveAs(path);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "content/views/view_hexeditor.hpp"
|
#include "content/views/view_hex_editor.hpp"
|
||||||
#include "content/views/view_pattern_editor.hpp"
|
#include "content/views/view_pattern_editor.hpp"
|
||||||
#include "content/views/view_pattern_data.hpp"
|
#include "content/views/view_pattern_data.hpp"
|
||||||
#include "content/views/view_hashes.hpp"
|
#include "content/views/view_hashes.hpp"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "content/views/view_hexeditor.hpp"
|
#include "content/views/view_hex_editor.hpp"
|
||||||
|
|
||||||
#include <hex/api/imhex_api.hpp>
|
#include <hex/api/imhex_api.hpp>
|
||||||
#include <hex/providers/provider.hpp>
|
#include <hex/providers/provider.hpp>
|
||||||
@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
namespace hex::plugin::builtin {
|
namespace hex::plugin::builtin {
|
||||||
|
|
||||||
ViewHexEditor::ViewHexEditor() : View("hex.builtin.view.hexeditor.name"_lang) {
|
ViewHexEditor::ViewHexEditor() : View("hex.builtin.view.hex_editor.name"_lang) {
|
||||||
|
|
||||||
this->m_searchStringBuffer.resize(0xFFF, 0x00);
|
this->m_searchStringBuffer.resize(0xFFF, 0x00);
|
||||||
this->m_searchHexBuffer.resize(0xFFF, 0x00);
|
this->m_searchHexBuffer.resize(0xFFF, 0x00);
|
||||||
@ -84,7 +84,7 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!currColor || !prevColor) {
|
if (!currColor || !prevColor) {
|
||||||
if (_this->m_highlights.size() > 0x10)
|
if (_this->m_highlights.size() > 0x100)
|
||||||
_this->m_highlights.pop_front();
|
_this->m_highlights.pop_front();
|
||||||
|
|
||||||
auto blockStartOffset = off - (off % HighlightBlock::Size);
|
auto blockStartOffset = off - (off % HighlightBlock::Size);
|
||||||
@ -125,6 +125,8 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_this->m_highlights.push_back(std::move(newBlock));
|
_this->m_highlights.push_back(std::move(newBlock));
|
||||||
|
|
||||||
|
return _this->m_memoryEditor.HighlightFn(data, off, next);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next && prevColor != currColor) {
|
if (next && prevColor != currColor) {
|
||||||
@ -169,7 +171,7 @@ namespace hex::plugin::builtin {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this->m_memoryEditor.DecodeFn = [](const ImU8 *data, size_t addr) -> MemoryEditor::DecodeData {
|
this->m_memoryEditor.DecodeFn = [](const ImU8 *data, size_t addr) -> MemoryEditor::DecodeData {
|
||||||
ViewHexEditor *_this = (ViewHexEditor *)data;
|
auto *_this = (ViewHexEditor *)data;
|
||||||
|
|
||||||
if (_this->m_currEncodingFile.getLongestSequence() == 0)
|
if (_this->m_currEncodingFile.getLongestSequence() == 0)
|
||||||
return { ".", 1, 0xFFFF8000 };
|
return { ".", 1, 0xFFFF8000 };
|
||||||
@ -212,12 +214,12 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
size_t dataSize = (!ImHexApi::Provider::isValid() || !provider->isReadable()) ? 0x00 : provider->getSize();
|
size_t dataSize = (!ImHexApi::Provider::isValid() || !provider->isReadable()) ? 0x00 : provider->getSize();
|
||||||
|
|
||||||
this->m_memoryEditor.DrawWindow(View::toWindowName("hex.builtin.view.hexeditor.name").c_str(), &this->getWindowOpenState(), this, dataSize, dataSize == 0 ? 0x00 : provider->getBaseAddress() + provider->getCurrentPageAddress());
|
this->m_memoryEditor.DrawWindow(View::toWindowName("hex.builtin.view.hex_editor.name").c_str(), &this->getWindowOpenState(), this, dataSize, dataSize == 0 ? 0x00 : provider->getBaseAddress() + provider->getCurrentPageAddress());
|
||||||
|
|
||||||
if (dataSize != 0x00) {
|
if (dataSize != 0x00) {
|
||||||
this->m_memoryEditor.OptShowAdvancedDecoding = this->m_advancedDecodingEnabled && this->m_currEncodingFile.valid();
|
this->m_memoryEditor.OptShowAdvancedDecoding = this->m_advancedDecodingEnabled && this->m_currEncodingFile.valid();
|
||||||
|
|
||||||
if (ImGui::Begin(View::toWindowName("hex.builtin.view.hexeditor.name").c_str())) {
|
if (ImGui::Begin(View::toWindowName("hex.builtin.view.hex_editor.name").c_str())) {
|
||||||
|
|
||||||
if (ImGui::IsMouseReleased(ImGuiMouseButton_Right) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows))
|
if (ImGui::IsMouseReleased(ImGuiMouseButton_Right) && ImGui::IsWindowHovered(ImGuiHoveredFlags_ChildWindows))
|
||||||
ImGui::OpenPopup("hex.builtin.menu.edit"_lang);
|
ImGui::OpenPopup("hex.builtin.menu.edit"_lang);
|
||||||
@ -253,7 +255,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::SetCursorPosY(linePos);
|
ImGui::SetCursorPosY(linePos);
|
||||||
|
|
||||||
ImGui::TextFormatted("hex.builtin.view.hexeditor.page"_lang, provider->getCurrentPage() + 1, provider->getPageCount());
|
ImGui::TextFormatted("hex.builtin.view.hex_editor.page"_lang, provider->getCurrentPage() + 1, provider->getPageCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
this->drawSearchPopup();
|
this->drawSearchPopup();
|
||||||
@ -268,7 +270,7 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void saveAs() {
|
static void saveAs() {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.save_as"_lang, DialogMode::Save, {}, [](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.save_as"_lang, DialogMode::Save, {}, [](const auto &path) {
|
||||||
ImHexApi::Provider::get()->saveAs(path);
|
ImHexApi::Provider::get()->saveAs(path);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -276,9 +278,9 @@ namespace hex::plugin::builtin {
|
|||||||
void ViewHexEditor::drawAlwaysVisible() {
|
void ViewHexEditor::drawAlwaysVisible() {
|
||||||
auto provider = ImHexApi::Provider::get();
|
auto provider = ImHexApi::Provider::get();
|
||||||
|
|
||||||
if (ImGui::BeginPopupModal("hex.builtin.view.hexeditor.exit_application.title"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
if (ImGui::BeginPopupModal("hex.builtin.view.hex_editor.exit_application.title"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::TextUnformatted("hex.builtin.view.hexeditor.exit_application.desc"_lang);
|
ImGui::TextUnformatted("hex.builtin.view.hex_editor.exit_application.desc"_lang);
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
|
|
||||||
confirmButtons(
|
confirmButtons(
|
||||||
@ -290,16 +292,16 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginPopupModal("hex.builtin.view.hexeditor.script.title"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
if (ImGui::BeginPopupModal("hex.builtin.view.hex_editor.script.title"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
||||||
ImGui::SetCursorPosX(10);
|
ImGui::SetCursorPosX(10);
|
||||||
ImGui::TextFormattedWrapped("{}", static_cast<const char *>("hex.builtin.view.hexeditor.script.desc"_lang));
|
ImGui::TextFormattedWrapped("{}", static_cast<const char *>("hex.builtin.view.hex_editor.script.desc"_lang));
|
||||||
|
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
ImGui::InputText("##nolabel", this->m_loaderScriptScriptPath.data(), this->m_loaderScriptScriptPath.length(), ImGuiInputTextFlags_ReadOnly);
|
ImGui::InputText("##nolabel", this->m_loaderScriptScriptPath.data(), this->m_loaderScriptScriptPath.length(), ImGuiInputTextFlags_ReadOnly);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("hex.builtin.view.hexeditor.script.script"_lang)) {
|
if (ImGui::Button("hex.builtin.view.hex_editor.script.script"_lang)) {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.script.script.title"_lang, DialogMode::Open, {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.script.script.title"_lang, DialogMode::Open, {
|
||||||
{"Python Script", "py"}
|
{"Python Script", "py"}
|
||||||
},
|
},
|
||||||
[this](const auto &path) {
|
[this](const auto &path) {
|
||||||
this->m_loaderScriptScriptPath = path.string();
|
this->m_loaderScriptScriptPath = path.string();
|
||||||
@ -307,8 +309,8 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
ImGui::InputText("##nolabel", this->m_loaderScriptFilePath.data(), this->m_loaderScriptFilePath.length(), ImGuiInputTextFlags_ReadOnly);
|
ImGui::InputText("##nolabel", this->m_loaderScriptFilePath.data(), this->m_loaderScriptFilePath.length(), ImGuiInputTextFlags_ReadOnly);
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
if (ImGui::Button("hex.builtin.view.hexeditor.script.file"_lang)) {
|
if (ImGui::Button("hex.builtin.view.hex_editor.script.file"_lang)) {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.script.file.title"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.script.file.title"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
||||||
this->m_loaderScriptFilePath = path.string();
|
this->m_loaderScriptFilePath = path.string();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -330,7 +332,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginPopupModal("hex.builtin.view.hexeditor.menu.edit.set_base"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
if (ImGui::BeginPopupModal("hex.builtin.view.hex_editor.menu.edit.set_base"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
||||||
ImGui::InputText("hex.builtin.common.address"_lang, this->m_baseAddressBuffer, 16, ImGuiInputTextFlags_CharsHexadecimal);
|
ImGui::InputText("hex.builtin.common.address"_lang, this->m_baseAddressBuffer, 16, ImGuiInputTextFlags_CharsHexadecimal);
|
||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
|
|
||||||
@ -345,7 +347,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginPopupModal("hex.builtin.view.hexeditor.menu.edit.resize"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
if (ImGui::BeginPopupModal("hex.builtin.view.hex_editor.menu.edit.resize"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
||||||
ImGui::TextUnformatted("0x");
|
ImGui::TextUnformatted("0x");
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::InputScalar("hex.builtin.common.size"_lang, ImGuiDataType_U64, &this->m_resizeSize, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal);
|
ImGui::InputScalar("hex.builtin.common.size"_lang, ImGuiDataType_U64, &this->m_resizeSize, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal);
|
||||||
@ -362,7 +364,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginPopupModal("hex.builtin.view.hexeditor.menu.edit.insert"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
if (ImGui::BeginPopupModal("hex.builtin.view.hex_editor.menu.edit.insert"_lang, nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
|
||||||
ImGui::TextUnformatted("0x");
|
ImGui::TextUnformatted("0x");
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
ImGui::InputScalar("hex.builtin.common.size"_lang, ImGuiDataType_U64, &this->m_resizeSize, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal);
|
ImGui::InputScalar("hex.builtin.common.size"_lang, ImGuiDataType_U64, &this->m_resizeSize, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal);
|
||||||
@ -387,7 +389,7 @@ namespace hex::plugin::builtin {
|
|||||||
if (auto fileProvider = dynamic_cast<prv::FileProvider *>(provider)) {
|
if (auto fileProvider = dynamic_cast<prv::FileProvider *>(provider)) {
|
||||||
fileProvider->setPath(path);
|
fileProvider->setPath(path);
|
||||||
if (!fileProvider->open()) {
|
if (!fileProvider->open()) {
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.error.open"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.error.open"_lang);
|
||||||
ImHexApi::Provider::remove(provider);
|
ImHexApi::Provider::remove(provider);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -396,13 +398,13 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
if (!provider->isWritable()) {
|
if (!provider->isWritable()) {
|
||||||
this->m_memoryEditor.ReadOnly = true;
|
this->m_memoryEditor.ReadOnly = true;
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.error.read_only"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.error.read_only"_lang);
|
||||||
} else {
|
} else {
|
||||||
this->m_memoryEditor.ReadOnly = false;
|
this->m_memoryEditor.ReadOnly = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!provider->isAvailable()) {
|
if (!provider->isAvailable()) {
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.error.open"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.error.open"_lang);
|
||||||
ImHexApi::Provider::remove(provider);
|
ImHexApi::Provider::remove(provider);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -607,10 +609,10 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
|
|
||||||
ImGui::SetNextWindowPos(ImGui::GetWindowPos() + ImGui::GetWindowContentRegionMin() - ImGui::GetStyle().WindowPadding);
|
ImGui::SetNextWindowPos(ImGui::GetWindowPos() + ImGui::GetWindowContentRegionMin() - ImGui::GetStyle().WindowPadding);
|
||||||
if (ImGui::BeginPopup("hex.builtin.view.hexeditor.menu.file.search"_lang)) {
|
if (ImGui::BeginPopup("hex.builtin.view.hex_editor.menu.file.search"_lang)) {
|
||||||
if (ImGui::BeginTabBar("searchTabs")) {
|
if (ImGui::BeginTabBar("searchTabs")) {
|
||||||
std::vector<char> *currBuffer = nullptr;
|
std::vector<char> *currBuffer = nullptr;
|
||||||
if (ImGui::BeginTabItem("hex.builtin.view.hexeditor.search.string"_lang)) {
|
if (ImGui::BeginTabItem("hex.builtin.view.hex_editor.search.string"_lang)) {
|
||||||
this->m_searchFunction = findString;
|
this->m_searchFunction = findString;
|
||||||
this->m_lastSearchBuffer = &this->m_lastStringSearch;
|
this->m_lastSearchBuffer = &this->m_lastStringSearch;
|
||||||
currBuffer = &this->m_searchStringBuffer;
|
currBuffer = &this->m_searchStringBuffer;
|
||||||
@ -625,7 +627,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginTabItem("hex.builtin.view.hexeditor.search.hex"_lang)) {
|
if (ImGui::BeginTabItem("hex.builtin.view.hex_editor.search.hex"_lang)) {
|
||||||
this->m_searchFunction = findHex;
|
this->m_searchFunction = findHex;
|
||||||
this->m_lastSearchBuffer = &this->m_lastHexSearch;
|
this->m_lastSearchBuffer = &this->m_lastHexSearch;
|
||||||
currBuffer = &this->m_searchHexBuffer;
|
currBuffer = &this->m_searchHexBuffer;
|
||||||
@ -641,16 +643,16 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (currBuffer != nullptr) {
|
if (currBuffer != nullptr) {
|
||||||
if (ImGui::Button("hex.builtin.view.hexeditor.search.find"_lang))
|
if (ImGui::Button("hex.builtin.view.hex_editor.search.find"_lang))
|
||||||
Find(currBuffer->data());
|
Find(currBuffer->data());
|
||||||
|
|
||||||
if (!this->m_lastSearchBuffer->empty()) {
|
if (!this->m_lastSearchBuffer->empty()) {
|
||||||
if ((ImGui::Button("hex.builtin.view.hexeditor.search.find_next"_lang)))
|
if ((ImGui::Button("hex.builtin.view.hex_editor.search.find_next"_lang)))
|
||||||
FindNext();
|
FindNext();
|
||||||
|
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|
||||||
if ((ImGui::Button("hex.builtin.view.hexeditor.search.find_prev"_lang)))
|
if ((ImGui::Button("hex.builtin.view.hex_editor.search.find_prev"_lang)))
|
||||||
FindPrevious();
|
FindPrevious();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -668,12 +670,12 @@ namespace hex::plugin::builtin {
|
|||||||
auto dataSize = provider->getActualSize();
|
auto dataSize = provider->getActualSize();
|
||||||
|
|
||||||
ImGui::SetNextWindowPos(ImGui::GetWindowPos() + ImGui::GetWindowContentRegionMin() - ImGui::GetStyle().WindowPadding);
|
ImGui::SetNextWindowPos(ImGui::GetWindowPos() + ImGui::GetWindowContentRegionMin() - ImGui::GetStyle().WindowPadding);
|
||||||
if (ImGui::BeginPopup("hex.builtin.view.hexeditor.menu.file.goto"_lang)) {
|
if (ImGui::BeginPopup("hex.builtin.view.hex_editor.menu.file.goto"_lang)) {
|
||||||
bool runGoto = false;
|
bool runGoto = false;
|
||||||
|
|
||||||
if (ImGui::BeginTabBar("gotoTabs")) {
|
if (ImGui::BeginTabBar("gotoTabs")) {
|
||||||
u64 newOffset = 0;
|
u64 newOffset = 0;
|
||||||
if (ImGui::BeginTabItem("hex.builtin.view.hexeditor.goto.offset.absolute"_lang)) {
|
if (ImGui::BeginTabItem("hex.builtin.view.hex_editor.goto.offset.absolute"_lang)) {
|
||||||
ImGui::SetKeyboardFocusHere();
|
ImGui::SetKeyboardFocusHere();
|
||||||
runGoto = ImGui::InputScalar("hex", ImGuiDataType_U64, &this->m_gotoAddress, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
runGoto = ImGui::InputScalar("hex", ImGuiDataType_U64, &this->m_gotoAddress, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
||||||
|
|
||||||
@ -684,7 +686,7 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("hex.builtin.view.hexeditor.goto.offset.begin"_lang)) {
|
if (ImGui::BeginTabItem("hex.builtin.view.hex_editor.goto.offset.begin"_lang)) {
|
||||||
ImGui::SetKeyboardFocusHere();
|
ImGui::SetKeyboardFocusHere();
|
||||||
runGoto = ImGui::InputScalar("hex", ImGuiDataType_U64, &this->m_gotoAddress, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
runGoto = ImGui::InputScalar("hex", ImGuiDataType_U64, &this->m_gotoAddress, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
||||||
|
|
||||||
@ -695,7 +697,7 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("hex.builtin.view.hexeditor.goto.offset.current"_lang)) {
|
if (ImGui::BeginTabItem("hex.builtin.view.hex_editor.goto.offset.current"_lang)) {
|
||||||
ImGui::SetKeyboardFocusHere();
|
ImGui::SetKeyboardFocusHere();
|
||||||
runGoto = ImGui::InputScalar("dec", ImGuiDataType_S64, &this->m_gotoAddress, nullptr, nullptr, "%lld", ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
runGoto = ImGui::InputScalar("dec", ImGuiDataType_S64, &this->m_gotoAddress, nullptr, nullptr, "%lld", ImGuiInputTextFlags_CharsDecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
||||||
|
|
||||||
@ -710,7 +712,7 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
if (ImGui::BeginTabItem("hex.builtin.view.hexeditor.goto.offset.end"_lang)) {
|
if (ImGui::BeginTabItem("hex.builtin.view.hex_editor.goto.offset.end"_lang)) {
|
||||||
ImGui::SetKeyboardFocusHere();
|
ImGui::SetKeyboardFocusHere();
|
||||||
runGoto = ImGui::InputScalar("hex", ImGuiDataType_U64, &this->m_gotoAddress, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
runGoto = ImGui::InputScalar("hex", ImGuiDataType_U64, &this->m_gotoAddress, nullptr, nullptr, "%llx", ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_EnterReturnsTrue);
|
||||||
|
|
||||||
@ -722,7 +724,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::Button("hex.builtin.view.hexeditor.menu.file.goto"_lang) || runGoto) {
|
if (ImGui::Button("hex.builtin.view.hex_editor.menu.file.goto"_lang) || runGoto) {
|
||||||
provider->setCurrentPage(std::floor(double(newOffset - baseAddress) / hex::prv::Provider::PageSize));
|
provider->setCurrentPage(std::floor(double(newOffset - baseAddress) / hex::prv::Provider::PageSize));
|
||||||
EventManager::post<RequestSelectionChange>(Region { newOffset, 1 });
|
EventManager::post<RequestSelectionChange>(Region { newOffset, 1 });
|
||||||
}
|
}
|
||||||
@ -737,20 +739,20 @@ namespace hex::plugin::builtin {
|
|||||||
void ViewHexEditor::drawEditPopup() {
|
void ViewHexEditor::drawEditPopup() {
|
||||||
auto provider = ImHexApi::Provider::get();
|
auto provider = ImHexApi::Provider::get();
|
||||||
bool providerValid = ImHexApi::Provider::isValid();
|
bool providerValid = ImHexApi::Provider::isValid();
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.undo"_lang, "CTRL + Z", false, providerValid))
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.undo"_lang, "CTRL + Z", false, providerValid))
|
||||||
provider->undo();
|
provider->undo();
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.redo"_lang, "CTRL + Y", false, providerValid))
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.redo"_lang, "CTRL + Y", false, providerValid))
|
||||||
provider->redo();
|
provider->redo();
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
bool bytesSelected = this->m_memoryEditor.DataPreviewAddr != -1 && this->m_memoryEditor.DataPreviewAddrEnd != -1;
|
bool bytesSelected = this->m_memoryEditor.DataPreviewAddr != -1 && this->m_memoryEditor.DataPreviewAddrEnd != -1;
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.copy"_lang, "CTRL + C", false, bytesSelected))
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.copy"_lang, "CTRL + C", false, bytesSelected))
|
||||||
this->copyBytes();
|
this->copyBytes();
|
||||||
|
|
||||||
if (ImGui::BeginMenu("hex.builtin.view.hexeditor.menu.edit.copy_as"_lang, bytesSelected)) {
|
if (ImGui::BeginMenu("hex.builtin.view.hex_editor.menu.edit.copy_as"_lang, bytesSelected)) {
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.copy.hex"_lang, "CTRL + SHIFT + C"))
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.copy.hex"_lang, "CTRL + SHIFT + C"))
|
||||||
this->copyString();
|
this->copyString();
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
@ -769,15 +771,15 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.paste"_lang, "CTRL + V", false, bytesSelected))
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.paste"_lang, "CTRL + V", false, bytesSelected))
|
||||||
this->pasteBytes();
|
this->pasteBytes();
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.select_all"_lang, "CTRL + A", false, providerValid))
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.select_all"_lang, "CTRL + A", false, providerValid))
|
||||||
EventManager::post<RequestSelectionChange>(Region { provider->getBaseAddress(), provider->getActualSize() });
|
EventManager::post<RequestSelectionChange>(Region { provider->getBaseAddress(), provider->getActualSize() });
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.bookmark"_lang, nullptr, false, this->m_memoryEditor.DataPreviewAddr != -1 && this->m_memoryEditor.DataPreviewAddrEnd != -1)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.bookmark"_lang, nullptr, false, this->m_memoryEditor.DataPreviewAddr != -1 && this->m_memoryEditor.DataPreviewAddrEnd != -1)) {
|
||||||
auto base = ImHexApi::Provider::get()->getBaseAddress();
|
auto base = ImHexApi::Provider::get()->getBaseAddress();
|
||||||
|
|
||||||
size_t start = base + std::min(this->m_memoryEditor.DataPreviewAddr, this->m_memoryEditor.DataPreviewAddrEnd);
|
size_t start = base + std::min(this->m_memoryEditor.DataPreviewAddr, this->m_memoryEditor.DataPreviewAddrEnd);
|
||||||
@ -786,22 +788,22 @@ namespace hex::plugin::builtin {
|
|||||||
ImHexApi::Bookmarks::add(start, end - start + 1, {}, {});
|
ImHexApi::Bookmarks::add(start, end - start + 1, {}, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.set_base"_lang, nullptr, false, providerValid && provider->isReadable())) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.set_base"_lang, nullptr, false, providerValid && provider->isReadable())) {
|
||||||
std::memset(this->m_baseAddressBuffer, 0x00, sizeof(this->m_baseAddressBuffer));
|
std::memset(this->m_baseAddressBuffer, 0x00, sizeof(this->m_baseAddressBuffer));
|
||||||
ImHexApi::Tasks::doLater([] { ImGui::OpenPopup("hex.builtin.view.hexeditor.menu.edit.set_base"_lang); });
|
ImHexApi::Tasks::doLater([] { ImGui::OpenPopup("hex.builtin.view.hex_editor.menu.edit.set_base"_lang); });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.resize"_lang, nullptr, false, providerValid && provider->isResizable())) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.resize"_lang, nullptr, false, providerValid && provider->isResizable())) {
|
||||||
ImHexApi::Tasks::doLater([this] {
|
ImHexApi::Tasks::doLater([this] {
|
||||||
this->m_resizeSize = ImHexApi::Provider::get()->getActualSize();
|
this->m_resizeSize = ImHexApi::Provider::get()->getActualSize();
|
||||||
ImGui::OpenPopup("hex.builtin.view.hexeditor.menu.edit.resize"_lang);
|
ImGui::OpenPopup("hex.builtin.view.hex_editor.menu.edit.resize"_lang);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.edit.insert"_lang, nullptr, false, providerValid && provider->isResizable())) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.edit.insert"_lang, nullptr, false, providerValid && provider->isResizable())) {
|
||||||
ImHexApi::Tasks::doLater([this] {
|
ImHexApi::Tasks::doLater([this] {
|
||||||
this->m_resizeSize = 0;
|
this->m_resizeSize = 0;
|
||||||
ImGui::OpenPopup("hex.builtin.view.hexeditor.menu.edit.insert"_lang);
|
ImGui::OpenPopup("hex.builtin.view.hex_editor.menu.edit.insert"_lang);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -835,17 +837,17 @@ namespace hex::plugin::builtin {
|
|||||||
EventManager::subscribe<EventWindowClosing>(this, [](GLFWwindow *window) {
|
EventManager::subscribe<EventWindowClosing>(this, [](GLFWwindow *window) {
|
||||||
if (ProjectFile::hasUnsavedChanges()) {
|
if (ProjectFile::hasUnsavedChanges()) {
|
||||||
glfwSetWindowShouldClose(window, GLFW_FALSE);
|
glfwSetWindowShouldClose(window, GLFW_FALSE);
|
||||||
ImHexApi::Tasks::doLater([] { ImGui::OpenPopup("hex.builtin.view.hexeditor.exit_application.title"_lang); });
|
ImHexApi::Tasks::doLater([] { ImGui::OpenPopup("hex.builtin.view.hex_editor.exit_application.title"_lang); });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
EventManager::subscribe<RequestOpenWindow>(this, [this](std::string name) {
|
EventManager::subscribe<RequestOpenWindow>(this, [this](std::string name) {
|
||||||
if (name == "Create File") {
|
if (name == "Create File") {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.create_file"_lang, DialogMode::Save, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.create_file"_lang, DialogMode::Save, {}, [this](const auto &path) {
|
||||||
File file(path, File::Mode::Create);
|
File file(path, File::Mode::Create);
|
||||||
|
|
||||||
if (!file.isValid()) {
|
if (!file.isValid()) {
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.error.create"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.error.create"_lang);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -855,13 +857,13 @@ namespace hex::plugin::builtin {
|
|||||||
this->getWindowOpenState() = true;
|
this->getWindowOpenState() = true;
|
||||||
});
|
});
|
||||||
} else if (name == "Open File") {
|
} else if (name == "Open File") {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.open_file"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.open_file"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
||||||
EventManager::post<RequestOpenFile>(path);
|
EventManager::post<RequestOpenFile>(path);
|
||||||
this->getWindowOpenState() = true;
|
this->getWindowOpenState() = true;
|
||||||
});
|
});
|
||||||
} else if (name == "Open Project") {
|
} else if (name == "Open Project") {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.open_project"_lang, DialogMode::Open, {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.open_project"_lang, DialogMode::Open, {
|
||||||
{"Project File", "hexproj"}
|
{"Project File", "hexproj"}
|
||||||
},
|
},
|
||||||
[this](const auto &path) {
|
[this](const auto &path) {
|
||||||
ProjectFile::load(path);
|
ProjectFile::load(path);
|
||||||
@ -962,15 +964,15 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
|
|
||||||
ShortcutManager::addShortcut(this, CTRL + Keys::F, [] {
|
ShortcutManager::addShortcut(this, CTRL + Keys::F, [] {
|
||||||
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hexeditor.name").c_str(), "hex.builtin.view.hexeditor.menu.file.search"_lang);
|
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hex_editor.name").c_str(), "hex.builtin.view.hex_editor.menu.file.search"_lang);
|
||||||
});
|
});
|
||||||
|
|
||||||
ShortcutManager::addShortcut(this, CTRL + Keys::G, [] {
|
ShortcutManager::addShortcut(this, CTRL + Keys::G, [] {
|
||||||
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hexeditor.name").c_str(), "hex.builtin.view.hexeditor.menu.file.goto"_lang);
|
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hex_editor.name").c_str(), "hex.builtin.view.hex_editor.menu.file.goto"_lang);
|
||||||
});
|
});
|
||||||
|
|
||||||
ShortcutManager::addShortcut(this, CTRL + Keys::O, [] {
|
ShortcutManager::addShortcut(this, CTRL + Keys::O, [] {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.open_file"_lang, DialogMode::Open, {}, [](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.open_file"_lang, DialogMode::Open, {}, [](const auto &path) {
|
||||||
EventManager::post<RequestOpenFile>(path);
|
EventManager::post<RequestOpenFile>(path);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -1003,21 +1005,21 @@ namespace hex::plugin::builtin {
|
|||||||
bool providerValid = ImHexApi::Provider::isValid();
|
bool providerValid = ImHexApi::Provider::isValid();
|
||||||
|
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.save"_lang, "CTRL + S", false, providerValid && provider->isWritable())) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.save"_lang, "CTRL + S", false, providerValid && provider->isWritable())) {
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.save_as"_lang, "CTRL + SHIFT + S", false, providerValid && provider->isWritable())) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.save_as"_lang, "CTRL + SHIFT + S", false, providerValid && provider->isWritable())) {
|
||||||
saveAs();
|
saveAs();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.close"_lang, "", false, providerValid)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.close"_lang, "", false, providerValid)) {
|
||||||
EventManager::post<EventFileUnloaded>();
|
EventManager::post<EventFileUnloaded>();
|
||||||
ImHexApi::Provider::remove(ImHexApi::Provider::get());
|
ImHexApi::Provider::remove(ImHexApi::Provider::get());
|
||||||
providerValid = false;
|
providerValid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.quit"_lang, "", false)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.quit"_lang, "", false)) {
|
||||||
ImHexApi::Common::closeImHex();
|
ImHexApi::Common::closeImHex();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -1028,19 +1030,19 @@ namespace hex::plugin::builtin {
|
|||||||
auto provider = ImHexApi::Provider::get();
|
auto provider = ImHexApi::Provider::get();
|
||||||
bool providerValid = ImHexApi::Provider::isValid();
|
bool providerValid = ImHexApi::Provider::isValid();
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.open_project"_lang, "")) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.open_project"_lang, "")) {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.menu.file.open_project"_lang, DialogMode::Open, {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.menu.file.open_project"_lang, DialogMode::Open, {
|
||||||
{"Project File", "hexproj"}
|
{"Project File", "hexproj"}
|
||||||
},
|
},
|
||||||
[](const auto &path) {
|
[](const auto &path) {
|
||||||
ProjectFile::load(path);
|
ProjectFile::load(path);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.save_project"_lang, "", false, providerValid && provider->isWritable())) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.save_project"_lang, "", false, providerValid && provider->isWritable())) {
|
||||||
if (ProjectFile::getProjectFilePath() == "") {
|
if (ProjectFile::getProjectFilePath() == "") {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.save_project"_lang, DialogMode::Save, {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.save_project"_lang, DialogMode::Save, {
|
||||||
{"Project File", "hexproj"}
|
{"Project File", "hexproj"}
|
||||||
},
|
},
|
||||||
[](const auto &path) {
|
[](const auto &path) {
|
||||||
if (path.extension() == ".hexproj") {
|
if (path.extension() == ".hexproj") {
|
||||||
@ -1053,7 +1055,7 @@ namespace hex::plugin::builtin {
|
|||||||
ProjectFile::store();
|
ProjectFile::store();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.load_encoding_file"_lang)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.load_encoding_file"_lang)) {
|
||||||
std::vector<fs::path> paths;
|
std::vector<fs::path> paths;
|
||||||
for (const auto &path : hex::getPath(ImHexPath::Encodings)) {
|
for (const auto &path : hex::getPath(ImHexPath::Encodings)) {
|
||||||
for (const auto &entry : fs::recursive_directory_iterator(path)) {
|
for (const auto &entry : fs::recursive_directory_iterator(path)) {
|
||||||
@ -1079,13 +1081,13 @@ namespace hex::plugin::builtin {
|
|||||||
bool providerValid = ImHexApi::Provider::isValid();
|
bool providerValid = ImHexApi::Provider::isValid();
|
||||||
|
|
||||||
/* Import */
|
/* Import */
|
||||||
if (ImGui::BeginMenu("hex.builtin.view.hexeditor.menu.file.import"_lang)) {
|
if (ImGui::BeginMenu("hex.builtin.view.hex_editor.menu.file.import"_lang)) {
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.import.base64"_lang)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.import.base64"_lang)) {
|
||||||
|
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.menu.file.import.base64"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.menu.file.import.base64"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
||||||
File file(path, File::Mode::Read);
|
File file(path, File::Mode::Read);
|
||||||
if (!file.isValid()) {
|
if (!file.isValid()) {
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.error.open"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.error.open"_lang);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1095,22 +1097,22 @@ namespace hex::plugin::builtin {
|
|||||||
this->m_dataToSave = crypt::decode64(base64);
|
this->m_dataToSave = crypt::decode64(base64);
|
||||||
|
|
||||||
if (this->m_dataToSave.empty())
|
if (this->m_dataToSave.empty())
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.base64.import_error"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.base64.import_error"_lang);
|
||||||
else
|
else
|
||||||
ImGui::OpenPopup("hex.builtin.view.hexeditor.save_data"_lang);
|
ImGui::OpenPopup("hex.builtin.view.hex_editor.save_data"_lang);
|
||||||
this->getWindowOpenState() = true;
|
this->getWindowOpenState() = true;
|
||||||
} else View::showErrorPopup("hex.builtin.view.hexeditor.file_open_error"_lang);
|
} else View::showErrorPopup("hex.builtin.view.hex_editor.file_open_error"_lang);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.import.ips"_lang, nullptr, false, !this->m_processingImportExport)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.import.ips"_lang, nullptr, false, !this->m_processingImportExport)) {
|
||||||
|
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.open_file"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.open_file"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
||||||
this->m_processingImportExport = true;
|
this->m_processingImportExport = true;
|
||||||
std::thread([this, path] {
|
std::thread([this, path] {
|
||||||
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hexeditor.processing", 0);
|
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hex_editor.processing", 0);
|
||||||
|
|
||||||
auto patchData = File(path, File::Mode::Read).readBytes();
|
auto patchData = File(path, File::Mode::Read).readBytes();
|
||||||
auto patch = hex::loadIPSPatch(patchData);
|
auto patch = hex::loadIPSPatch(patchData);
|
||||||
@ -1134,11 +1136,11 @@ namespace hex::plugin::builtin {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.import.ips32"_lang, nullptr, false, !this->m_processingImportExport)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.import.ips32"_lang, nullptr, false, !this->m_processingImportExport)) {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.open_file"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.open_file"_lang, DialogMode::Open, {}, [this](const auto &path) {
|
||||||
this->m_processingImportExport = true;
|
this->m_processingImportExport = true;
|
||||||
std::thread([this, path] {
|
std::thread([this, path] {
|
||||||
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hexeditor.processing", 0);
|
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hex_editor.processing", 0);
|
||||||
|
|
||||||
auto patchData = File(path, File::Mode::Read).readBytes();
|
auto patchData = File(path, File::Mode::Read).readBytes();
|
||||||
auto patch = hex::loadIPS32Patch(patchData);
|
auto patch = hex::loadIPS32Patch(patchData);
|
||||||
@ -1162,10 +1164,10 @@ namespace hex::plugin::builtin {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.import.script"_lang)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.import.script"_lang)) {
|
||||||
this->m_loaderScriptFilePath.clear();
|
this->m_loaderScriptFilePath.clear();
|
||||||
this->m_loaderScriptScriptPath.clear();
|
this->m_loaderScriptScriptPath.clear();
|
||||||
ImHexApi::Tasks::doLater([] { ImGui::OpenPopup("hex.builtin.view.hexeditor.script.title"_lang); });
|
ImHexApi::Tasks::doLater([] { ImGui::OpenPopup("hex.builtin.view.hex_editor.script.title"_lang); });
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
@ -1173,8 +1175,8 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
|
|
||||||
/* Export */
|
/* Export */
|
||||||
if (ImGui::BeginMenu("hex.builtin.view.hexeditor.menu.file.export"_lang, providerValid && provider->isWritable())) {
|
if (ImGui::BeginMenu("hex.builtin.view.hex_editor.menu.file.export"_lang, providerValid && provider->isWritable())) {
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.export.ips"_lang, nullptr, false, !this->m_processingImportExport)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.export.ips"_lang, nullptr, false, !this->m_processingImportExport)) {
|
||||||
Patches patches = provider->getPatches();
|
Patches patches = provider->getPatches();
|
||||||
if (!patches.contains(0x00454F45) && patches.contains(0x00454F46)) {
|
if (!patches.contains(0x00454F45) && patches.contains(0x00454F46)) {
|
||||||
u8 value = 0;
|
u8 value = 0;
|
||||||
@ -1184,16 +1186,16 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
this->m_processingImportExport = true;
|
this->m_processingImportExport = true;
|
||||||
std::thread([this, patches] {
|
std::thread([this, patches] {
|
||||||
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hexeditor.processing", 0);
|
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hex_editor.processing", 0);
|
||||||
|
|
||||||
this->m_dataToSave = generateIPSPatch(patches);
|
this->m_dataToSave = generateIPSPatch(patches);
|
||||||
this->m_processingImportExport = false;
|
this->m_processingImportExport = false;
|
||||||
|
|
||||||
ImHexApi::Tasks::doLater([this] {
|
ImHexApi::Tasks::doLater([this] {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.menu.file.export.title"_lang, DialogMode::Save, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.menu.file.export.title"_lang, DialogMode::Save, {}, [this](const auto &path) {
|
||||||
auto file = File(path, File::Mode::Create);
|
auto file = File(path, File::Mode::Create);
|
||||||
if (!file.isValid()) {
|
if (!file.isValid()) {
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.error.create"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.error.create"_lang);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1203,7 +1205,7 @@ namespace hex::plugin::builtin {
|
|||||||
}).detach();
|
}).detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.export.ips32"_lang, nullptr, false, !this->m_processingImportExport)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.export.ips32"_lang, nullptr, false, !this->m_processingImportExport)) {
|
||||||
Patches patches = provider->getPatches();
|
Patches patches = provider->getPatches();
|
||||||
if (!patches.contains(0x00454F45) && patches.contains(0x45454F46)) {
|
if (!patches.contains(0x00454F45) && patches.contains(0x45454F46)) {
|
||||||
u8 value = 0;
|
u8 value = 0;
|
||||||
@ -1213,16 +1215,16 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
this->m_processingImportExport = true;
|
this->m_processingImportExport = true;
|
||||||
std::thread([this, patches] {
|
std::thread([this, patches] {
|
||||||
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hexeditor.processing", 0);
|
auto task = ImHexApi::Tasks::createTask("hex.builtin.view.hex_editor.processing", 0);
|
||||||
|
|
||||||
this->m_dataToSave = generateIPS32Patch(patches);
|
this->m_dataToSave = generateIPS32Patch(patches);
|
||||||
this->m_processingImportExport = false;
|
this->m_processingImportExport = false;
|
||||||
|
|
||||||
ImHexApi::Tasks::doLater([this] {
|
ImHexApi::Tasks::doLater([this] {
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.menu.file.export.title"_lang, DialogMode::Save, {}, [this](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.menu.file.export.title"_lang, DialogMode::Save, {}, [this](const auto &path) {
|
||||||
auto file = File(path, File::Mode::Create);
|
auto file = File(path, File::Mode::Create);
|
||||||
if (!file.isValid()) {
|
if (!file.isValid()) {
|
||||||
View::showErrorPopup("hex.builtin.view.hexeditor.error.create"_lang);
|
View::showErrorPopup("hex.builtin.view.hex_editor.error.create"_lang);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1239,14 +1241,14 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
/* Search / Goto */
|
/* Search / Goto */
|
||||||
ContentRegistry::Interface::addMenuItem("hex.builtin.menu.file", 1400, [&, this] {
|
ContentRegistry::Interface::addMenuItem("hex.builtin.menu.file", 1400, [&, this] {
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.search"_lang, "CTRL + F")) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.search"_lang, "CTRL + F")) {
|
||||||
this->getWindowOpenState() = true;
|
this->getWindowOpenState() = true;
|
||||||
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hexeditor.name").c_str(), "hex.builtin.view.hexeditor.menu.file.search"_lang);
|
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hex_editor.name").c_str(), "hex.builtin.view.hex_editor.menu.file.search"_lang);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.goto"_lang, "CTRL + G")) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.goto"_lang, "CTRL + G")) {
|
||||||
this->getWindowOpenState() = true;
|
this->getWindowOpenState() = true;
|
||||||
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hexeditor.name").c_str(), "hex.builtin.view.hexeditor.menu.file.goto"_lang);
|
ImGui::OpenPopupInWindow(View::toWindowName("hex.builtin.view.hex_editor.name").c_str(), "hex.builtin.view.hex_editor.menu.file.goto"_lang);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -407,14 +407,14 @@ namespace hex::plugin::builtin {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ContentRegistry::Interface::addMenuItem("hex.builtin.menu.file", 1050, [&] {
|
ContentRegistry::Interface::addMenuItem("hex.builtin.menu.file", 1050, [&] {
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.open_file"_lang, "CTRL + O")) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.open_file"_lang, "CTRL + O")) {
|
||||||
|
|
||||||
hex::openFileBrowser("hex.builtin.view.hexeditor.open_file"_lang, DialogMode::Open, {}, [](const auto &path) {
|
hex::openFileBrowser("hex.builtin.view.hex_editor.open_file"_lang, DialogMode::Open, {}, [](const auto &path) {
|
||||||
EventManager::post<RequestOpenFile>(path);
|
EventManager::post<RequestOpenFile>(path);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginMenu("hex.builtin.view.hexeditor.menu.file.open_recent"_lang, !s_recentFilePaths.empty())) {
|
if (ImGui::BeginMenu("hex.builtin.view.hex_editor.menu.file.open_recent"_lang, !s_recentFilePaths.empty())) {
|
||||||
for (auto &path : s_recentFilePaths) {
|
for (auto &path : s_recentFilePaths) {
|
||||||
if (ImGui::MenuItem(fs::path(path).filename().string().c_str())) {
|
if (ImGui::MenuItem(fs::path(path).filename().string().c_str())) {
|
||||||
EventManager::post<RequestOpenFile>(path);
|
EventManager::post<RequestOpenFile>(path);
|
||||||
@ -422,7 +422,7 @@ namespace hex::plugin::builtin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
if (ImGui::MenuItem("hex.builtin.view.hexeditor.menu.file.clear_recent"_lang)) {
|
if (ImGui::MenuItem("hex.builtin.view.hex_editor.menu.file.clear_recent"_lang)) {
|
||||||
s_recentFilePaths.clear();
|
s_recentFilePaths.clear();
|
||||||
ContentRegistry::Settings::write(
|
ContentRegistry::Settings::write(
|
||||||
"hex.builtin.setting.imhex",
|
"hex.builtin.setting.imhex",
|
||||||
@ -433,7 +433,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::EndMenu();
|
ImGui::EndMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginMenu("hex.builtin.view.hexeditor.menu.file.open_other"_lang)) {
|
if (ImGui::BeginMenu("hex.builtin.view.hex_editor.menu.file.open_other"_lang)) {
|
||||||
|
|
||||||
for (const auto &unlocalizedProviderName : ContentRegistry::Provider::getEntries()) {
|
for (const auto &unlocalizedProviderName : ContentRegistry::Provider::getEntries()) {
|
||||||
if (ImGui::MenuItem(LangEntry(unlocalizedProviderName))) {
|
if (ImGui::MenuItem(LangEntry(unlocalizedProviderName))) {
|
||||||
|
@ -201,83 +201,83 @@ namespace hex::plugin::builtin {
|
|||||||
{ "hex.builtin.view.help.pattern_cheat_sheet", "Pattern Language Cheat Sheet"},
|
{ "hex.builtin.view.help.pattern_cheat_sheet", "Pattern Language Cheat Sheet"},
|
||||||
{ "hex.builtin.view.help.calc_cheat_sheet", "Rechner Cheat Sheet" },
|
{ "hex.builtin.view.help.calc_cheat_sheet", "Rechner Cheat Sheet" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.name", "Hex editor" },
|
{ "hex.builtin.view.hex_editor.name", "Hex editor" },
|
||||||
{ "hex.builtin.view.hexeditor.create_file", "Neu" },
|
{ "hex.builtin.view.hex_editor.create_file", "Neu" },
|
||||||
{ "hex.builtin.view.hexeditor.open_file", "Öffnen" },
|
{ "hex.builtin.view.hex_editor.open_file", "Öffnen" },
|
||||||
{ "hex.builtin.view.hexeditor.open_project", "Projekt öffnen" },
|
{ "hex.builtin.view.hex_editor.open_project", "Projekt öffnen" },
|
||||||
{ "hex.builtin.view.hexeditor.save_project", "Projekt speichern" },
|
{ "hex.builtin.view.hex_editor.save_project", "Projekt speichern" },
|
||||||
{ "hex.builtin.view.hexeditor.save_data", "Daten speichern" },
|
{ "hex.builtin.view.hex_editor.save_data", "Daten speichern" },
|
||||||
{ "hex.builtin.view.hexeditor.open_base64", "Base64 Datei öffnen" },
|
{ "hex.builtin.view.hex_editor.open_base64", "Base64 Datei öffnen" },
|
||||||
{ "hex.builtin.view.hexeditor.load_enconding_file", "Custom encoding Datei laden" },
|
{ "hex.builtin.view.hex_editor.load_enconding_file", "Custom encoding Datei laden" },
|
||||||
{ "hex.builtin.view.hexeditor.page", "Seite {0} / {1}" },
|
{ "hex.builtin.view.hex_editor.page", "Seite {0} / {1}" },
|
||||||
{ "hex.builtin.view.hexeditor.save_as", "Speichern unter" },
|
{ "hex.builtin.view.hex_editor.save_as", "Speichern unter" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.title", "Applikation verlassen?" },
|
{ "hex.builtin.view.hex_editor.exit_application.title", "Applikation verlassen?" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.desc", "Es wurden ungespeicherte Änderungen an diesem Projekt vorgenommen\nBist du sicher, dass du ImHex schliessen willst?" },
|
{ "hex.builtin.view.hex_editor.exit_application.desc", "Es wurden ungespeicherte Änderungen an diesem Projekt vorgenommen\nBist du sicher, dass du ImHex schliessen willst?" },
|
||||||
{ "hex.builtin.view.hexeditor.script.title", "Datei mit Loader Skript laden" },
|
{ "hex.builtin.view.hex_editor.script.title", "Datei mit Loader Skript laden" },
|
||||||
{ "hex.builtin.view.hexeditor.script.desc", "Lade eine Datei mit Hilfe eines Python Skriptes" },
|
{ "hex.builtin.view.hex_editor.script.desc", "Lade eine Datei mit Hilfe eines Python Skriptes" },
|
||||||
{ "hex.builtin.view.hexeditor.script.script", "Skript" },
|
{ "hex.builtin.view.hex_editor.script.script", "Skript" },
|
||||||
{ "hex.builtin.view.hexeditor.script.script.title", "Loader Script: Skript öffnen" },
|
{ "hex.builtin.view.hex_editor.script.script.title", "Loader Script: Skript öffnen" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file", "Datei" },
|
{ "hex.builtin.view.hex_editor.script.file", "Datei" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file.title", "Loader Script: Datei öffnen" },
|
{ "hex.builtin.view.hex_editor.script.file.title", "Loader Script: Datei öffnen" },
|
||||||
{ "hex.builtin.view.hexeditor.processing", "Importieren / Exportieren" },
|
{ "hex.builtin.view.hex_editor.processing", "Importieren / Exportieren" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_file", "Datei öffnen..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_file", "Datei öffnen..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_recent", "Kürzlich geöffnete Dateien" },
|
{ "hex.builtin.view.hex_editor.menu.file.open_recent", "Kürzlich geöffnete Dateien" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.clear_recent", "Löschen" },
|
{ "hex.builtin.view.hex_editor.menu.file.clear_recent", "Löschen" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_other", "Provider öffnen..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_other", "Provider öffnen..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save", "Speichern" },
|
{ "hex.builtin.view.hex_editor.menu.file.save", "Speichern" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_as", "Speichern unter..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_as", "Speichern unter..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.close", "Schliessen" },
|
{ "hex.builtin.view.hex_editor.menu.file.close", "Schliessen" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.quit", "ImHex Beenden" },
|
{ "hex.builtin.view.hex_editor.menu.file.quit", "ImHex Beenden" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_project", "Projekt öffnen..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_project", "Projekt öffnen..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_project", "Projekt speichern..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_project", "Projekt speichern..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.load_encoding_file", "Custom encoding laden..." },
|
{ "hex.builtin.view.hex_editor.menu.file.load_encoding_file", "Custom encoding laden..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import", "Importieren..." },
|
{ "hex.builtin.view.hex_editor.menu.file.import", "Importieren..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.base64", "Base64 Datei" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.base64", "Base64 Datei" },
|
||||||
{ "hex.builtin.view.hexeditor.base64.import_error", "Datei ist nicht in einem korrekten Base64 Format!" },
|
{ "hex.builtin.view.hex_editor.base64.import_error", "Datei ist nicht in einem korrekten Base64 Format!" },
|
||||||
{ "hex.builtin.view.hexeditor.file_open_error", "Öffnen der Datei fehlgeschlagen!" },
|
{ "hex.builtin.view.hex_editor.file_open_error", "Öffnen der Datei fehlgeschlagen!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips", "IPS Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips", "IPS Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips32", "IPS32 Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips32", "IPS32 Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.script", "Datei mit Loader Script" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.script", "Datei mit Loader Script" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export", "Exportieren..." },
|
{ "hex.builtin.view.hex_editor.menu.file.export", "Exportieren..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.title", "Datei exportieren" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.title", "Datei exportieren" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips", "IPS Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips", "IPS Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips32", "IPS32 Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips32", "IPS32 Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.search", "Suchen" },
|
{ "hex.builtin.view.hex_editor.menu.file.search", "Suchen" },
|
||||||
{ "hex.builtin.view.hexeditor.search.string", "String" },
|
{ "hex.builtin.view.hex_editor.search.string", "String" },
|
||||||
{ "hex.builtin.view.hexeditor.search.hex", "Hex" },
|
{ "hex.builtin.view.hex_editor.search.hex", "Hex" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find", "Suchen" },
|
{ "hex.builtin.view.hex_editor.search.find", "Suchen" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_next", "Nächstes" },
|
{ "hex.builtin.view.hex_editor.search.find_next", "Nächstes" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_prev", "Vorheriges" },
|
{ "hex.builtin.view.hex_editor.search.find_prev", "Vorheriges" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.goto", "Sprung" },
|
{ "hex.builtin.view.hex_editor.menu.file.goto", "Sprung" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.absolute", "Absolut" },
|
{ "hex.builtin.view.hex_editor.goto.offset.absolute", "Absolut" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.current", "Momentan" },
|
{ "hex.builtin.view.hex_editor.goto.offset.current", "Momentan" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.begin", "Beginn" },
|
{ "hex.builtin.view.hex_editor.goto.offset.begin", "Beginn" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.end", "Ende" },
|
{ "hex.builtin.view.hex_editor.goto.offset.end", "Ende" },
|
||||||
{ "hex.builtin.view.hexeditor.error.read_only", "Schreibzugriff konnte nicht erlangt werden. Datei wurde im Lesemodus geöffnet." },
|
{ "hex.builtin.view.hex_editor.error.read_only", "Schreibzugriff konnte nicht erlangt werden. Datei wurde im Lesemodus geöffnet." },
|
||||||
{ "hex.builtin.view.hexeditor.error.open", "Öffnen der Datei fehlgeschlagen!" },
|
{ "hex.builtin.view.hex_editor.error.open", "Öffnen der Datei fehlgeschlagen!" },
|
||||||
{ "hex.builtin.view.hexeditor.error.create", "Erstellen der neuen Datei fehlgeschlagen!" },
|
{ "hex.builtin.view.hex_editor.error.create", "Erstellen der neuen Datei fehlgeschlagen!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.undo", "Rückgängig" },
|
{ "hex.builtin.view.hex_editor.menu.edit.undo", "Rückgängig" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.redo", "Wiederholen" },
|
{ "hex.builtin.view.hex_editor.menu.edit.redo", "Wiederholen" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy", "Kopieren" },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy", "Kopieren" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy_as", "Kopieren als..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy_as", "Kopieren als..." },
|
||||||
{ "hex.builtin.view.hexeditor.copy.hex", "String" },
|
{ "hex.builtin.view.hex_editor.copy.hex", "String" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.c", "C Array" },
|
{ "hex.builtin.view.hex_editor.copy.c", "C Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.cpp", "C++ Array" },
|
{ "hex.builtin.view.hex_editor.copy.cpp", "C++ Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.csharp", "C# Array" },
|
{ "hex.builtin.view.hex_editor.copy.csharp", "C# Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.rust", "Rust Array" },
|
{ "hex.builtin.view.hex_editor.copy.rust", "Rust Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.python", "Python Array" },
|
{ "hex.builtin.view.hex_editor.copy.python", "Python Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.java", "Java Array" },
|
{ "hex.builtin.view.hex_editor.copy.java", "Java Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.js", "JavaScript Array" },
|
{ "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.ascii", "ASCII Art" },
|
{ "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.html", "HTML" },
|
{ "hex.builtin.view.hex_editor.copy.html", "HTML" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.paste", "Einfügen" },
|
{ "hex.builtin.view.hex_editor.menu.edit.paste", "Einfügen" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.select_all", "Alles auswählen" },
|
{ "hex.builtin.view.hex_editor.menu.edit.select_all", "Alles auswählen" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.bookmark", "Lesezeichen erstellen" },
|
{ "hex.builtin.view.hex_editor.menu.edit.bookmark", "Lesezeichen erstellen" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.set_base", "Basisadresse setzen" },
|
{ "hex.builtin.view.hex_editor.menu.edit.set_base", "Basisadresse setzen" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.resize", "Grösse ändern..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.resize", "Grösse ändern..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.insert", "Einsetzen..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.insert", "Einsetzen..." },
|
||||||
|
|
||||||
{ "hex.builtin.view.information.name", "Dateninformationen" },
|
{ "hex.builtin.view.information.name", "Dateninformationen" },
|
||||||
{ "hex.builtin.view.information.control", "Einstellungen" },
|
{ "hex.builtin.view.information.control", "Einstellungen" },
|
||||||
|
@ -205,83 +205,83 @@ namespace hex::plugin::builtin {
|
|||||||
{ "hex.builtin.view.help.pattern_cheat_sheet", "Pattern Language Cheat Sheet"},
|
{ "hex.builtin.view.help.pattern_cheat_sheet", "Pattern Language Cheat Sheet"},
|
||||||
{ "hex.builtin.view.help.calc_cheat_sheet", "Calculator Cheat Sheet" },
|
{ "hex.builtin.view.help.calc_cheat_sheet", "Calculator Cheat Sheet" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.name", "Hex editor" },
|
{ "hex.builtin.view.hex_editor.name", "Hex editor" },
|
||||||
{ "hex.builtin.view.hexeditor.create_file", "New" },
|
{ "hex.builtin.view.hex_editor.create_file", "New" },
|
||||||
{ "hex.builtin.view.hexeditor.open_file", "Open" },
|
{ "hex.builtin.view.hex_editor.open_file", "Open" },
|
||||||
{ "hex.builtin.view.hexeditor.open_project", "Open Project" },
|
{ "hex.builtin.view.hex_editor.open_project", "Open Project" },
|
||||||
{ "hex.builtin.view.hexeditor.save_project", "Save Project" },
|
{ "hex.builtin.view.hex_editor.save_project", "Save Project" },
|
||||||
{ "hex.builtin.view.hexeditor.save_data", "Save Data" },
|
{ "hex.builtin.view.hex_editor.save_data", "Save Data" },
|
||||||
{ "hex.builtin.view.hexeditor.open_base64", "Open Base64 File" },
|
{ "hex.builtin.view.hex_editor.open_base64", "Open Base64 File" },
|
||||||
{ "hex.builtin.view.hexeditor.load_enconding_file", "Load custom encoding File" },
|
{ "hex.builtin.view.hex_editor.load_enconding_file", "Load custom encoding File" },
|
||||||
{ "hex.builtin.view.hexeditor.page", "Page {0} / {1}" },
|
{ "hex.builtin.view.hex_editor.page", "Page {0} / {1}" },
|
||||||
{ "hex.builtin.view.hexeditor.save_as", "Save As" },
|
{ "hex.builtin.view.hex_editor.save_as", "Save As" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.title", "Exit Application?" },
|
{ "hex.builtin.view.hex_editor.exit_application.title", "Exit Application?" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.desc", "You have unsaved changes made to your Project.\nAre you sure you want to exit?" },
|
{ "hex.builtin.view.hex_editor.exit_application.desc", "You have unsaved changes made to your Project.\nAre you sure you want to exit?" },
|
||||||
{ "hex.builtin.view.hexeditor.script.title", "Load File with Loader Script" },
|
{ "hex.builtin.view.hex_editor.script.title", "Load File with Loader Script" },
|
||||||
{ "hex.builtin.view.hexeditor.script.desc", "Load a file using a Python loader script." },
|
{ "hex.builtin.view.hex_editor.script.desc", "Load a file using a Python loader script." },
|
||||||
{ "hex.builtin.view.hexeditor.script.script", "Script" },
|
{ "hex.builtin.view.hex_editor.script.script", "Script" },
|
||||||
{ "hex.builtin.view.hexeditor.script.script.title", "Loader Script: Open Script" },
|
{ "hex.builtin.view.hex_editor.script.script.title", "Loader Script: Open Script" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file", "File" },
|
{ "hex.builtin.view.hex_editor.script.file", "File" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file.title", "Loader Script: Open File" },
|
{ "hex.builtin.view.hex_editor.script.file.title", "Loader Script: Open File" },
|
||||||
{ "hex.builtin.view.hexeditor.processing", "Importing / Exporting" },
|
{ "hex.builtin.view.hex_editor.processing", "Importing / Exporting" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_file", "Open File..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_file", "Open File..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_recent", "Open Recent" },
|
{ "hex.builtin.view.hex_editor.menu.file.open_recent", "Open Recent" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.clear_recent", "Clear" },
|
{ "hex.builtin.view.hex_editor.menu.file.clear_recent", "Clear" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_other", "Open Other..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_other", "Open Other..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save", "Save" },
|
{ "hex.builtin.view.hex_editor.menu.file.save", "Save" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_as", "Save As..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_as", "Save As..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.close", "Close" },
|
{ "hex.builtin.view.hex_editor.menu.file.close", "Close" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.quit", "Quit ImHex" },
|
{ "hex.builtin.view.hex_editor.menu.file.quit", "Quit ImHex" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_project", "Open Project..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_project", "Open Project..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_project", "Save Project..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_project", "Save Project..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.load_encoding_file", "Load custom encoding..." },
|
{ "hex.builtin.view.hex_editor.menu.file.load_encoding_file", "Load custom encoding..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import", "Import..." },
|
{ "hex.builtin.view.hex_editor.menu.file.import", "Import..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.base64", "Base64 File" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.base64", "Base64 File" },
|
||||||
{ "hex.builtin.view.hexeditor.base64.import_error", "File is not in a valid Base64 format!" },
|
{ "hex.builtin.view.hex_editor.base64.import_error", "File is not in a valid Base64 format!" },
|
||||||
{ "hex.builtin.view.hexeditor.file_open_error", "Failed to open file!" },
|
{ "hex.builtin.view.hex_editor.file_open_error", "Failed to open file!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips", "IPS Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips", "IPS Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips32", "IPS32 Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips32", "IPS32 Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.script", "File with Loader Script" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.script", "File with Loader Script" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export", "Export..." },
|
{ "hex.builtin.view.hex_editor.menu.file.export", "Export..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.title", "Export File" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.title", "Export File" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips", "IPS Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips", "IPS Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips32", "IPS32 Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips32", "IPS32 Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.search", "Search" },
|
{ "hex.builtin.view.hex_editor.menu.file.search", "Search" },
|
||||||
{ "hex.builtin.view.hexeditor.search.string", "String" },
|
{ "hex.builtin.view.hex_editor.search.string", "String" },
|
||||||
{ "hex.builtin.view.hexeditor.search.hex", "Hex" },
|
{ "hex.builtin.view.hex_editor.search.hex", "Hex" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find", "Find" },
|
{ "hex.builtin.view.hex_editor.search.find", "Find" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_next", "Find next" },
|
{ "hex.builtin.view.hex_editor.search.find_next", "Find next" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_prev", "Find previous" },
|
{ "hex.builtin.view.hex_editor.search.find_prev", "Find previous" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.goto", "Goto" },
|
{ "hex.builtin.view.hex_editor.menu.file.goto", "Goto" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.absolute", "Absolute" },
|
{ "hex.builtin.view.hex_editor.goto.offset.absolute", "Absolute" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.current", "Current" },
|
{ "hex.builtin.view.hex_editor.goto.offset.current", "Current" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.begin", "Begin" },
|
{ "hex.builtin.view.hex_editor.goto.offset.begin", "Begin" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.end", "End" },
|
{ "hex.builtin.view.hex_editor.goto.offset.end", "End" },
|
||||||
{ "hex.builtin.view.hexeditor.error.read_only", "Couldn't get write access. File opened in read-only mode." },
|
{ "hex.builtin.view.hex_editor.error.read_only", "Couldn't get write access. File opened in read-only mode." },
|
||||||
{ "hex.builtin.view.hexeditor.error.open", "Failed to open file!" },
|
{ "hex.builtin.view.hex_editor.error.open", "Failed to open file!" },
|
||||||
{ "hex.builtin.view.hexeditor.error.create", "Failed to create new file!" },
|
{ "hex.builtin.view.hex_editor.error.create", "Failed to create new file!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.undo", "Undo" },
|
{ "hex.builtin.view.hex_editor.menu.edit.undo", "Undo" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.redo", "Redo" },
|
{ "hex.builtin.view.hex_editor.menu.edit.redo", "Redo" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy", "Copy" },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy", "Copy" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy_as", "Copy as..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy_as", "Copy as..." },
|
||||||
{ "hex.builtin.view.hexeditor.copy.hex", "String" },
|
{ "hex.builtin.view.hex_editor.copy.hex", "String" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.c", "C Array" },
|
{ "hex.builtin.view.hex_editor.copy.c", "C Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.cpp", "C++ Array" },
|
{ "hex.builtin.view.hex_editor.copy.cpp", "C++ Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.csharp", "C# Array" },
|
{ "hex.builtin.view.hex_editor.copy.csharp", "C# Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.rust", "Rust Array" },
|
{ "hex.builtin.view.hex_editor.copy.rust", "Rust Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.python", "Python Array" },
|
{ "hex.builtin.view.hex_editor.copy.python", "Python Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.java", "Java Array" },
|
{ "hex.builtin.view.hex_editor.copy.java", "Java Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.js", "JavaScript Array" },
|
{ "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.ascii", "ASCII Art" },
|
{ "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.html", "HTML" },
|
{ "hex.builtin.view.hex_editor.copy.html", "HTML" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.paste", "Paste" },
|
{ "hex.builtin.view.hex_editor.menu.edit.paste", "Paste" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.select_all", "Select all" },
|
{ "hex.builtin.view.hex_editor.menu.edit.select_all", "Select all" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.bookmark", "Create bookmark" },
|
{ "hex.builtin.view.hex_editor.menu.edit.bookmark", "Create bookmark" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.set_base", "Set base address" },
|
{ "hex.builtin.view.hex_editor.menu.edit.set_base", "Set base address" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.resize", "Resize..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.resize", "Resize..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.insert", "Insert..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.insert", "Insert..." },
|
||||||
|
|
||||||
{ "hex.builtin.view.information.name", "Data Information" },
|
{ "hex.builtin.view.information.name", "Data Information" },
|
||||||
{ "hex.builtin.view.information.control", "Control" },
|
{ "hex.builtin.view.information.control", "Control" },
|
||||||
|
@ -199,83 +199,83 @@ namespace hex::plugin::builtin {
|
|||||||
{ "hex.builtin.view.help.pattern_cheat_sheet", "Pattern Language Cheat Sheet"},
|
{ "hex.builtin.view.help.pattern_cheat_sheet", "Pattern Language Cheat Sheet"},
|
||||||
{ "hex.builtin.view.help.calc_cheat_sheet", "Calcolatrice Cheat Sheet" },
|
{ "hex.builtin.view.help.calc_cheat_sheet", "Calcolatrice Cheat Sheet" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.name", "Hex editor" },
|
{ "hex.builtin.view.hex_editor.name", "Hex editor" },
|
||||||
{ "hex.builtin.view.hexeditor.create_file", "Nuovo" },
|
{ "hex.builtin.view.hex_editor.create_file", "Nuovo" },
|
||||||
{ "hex.builtin.view.hexeditor.open_file", "Apri" },
|
{ "hex.builtin.view.hex_editor.open_file", "Apri" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_recent", "File recenti" },
|
{ "hex.builtin.view.hex_editor.menu.file.open_recent", "File recenti" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.clear_recent", "Pulisci" },
|
{ "hex.builtin.view.hex_editor.menu.file.clear_recent", "Pulisci" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_other", "Apri altro..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_other", "Apri altro..." },
|
||||||
{ "hex.builtin.view.hexeditor.open_project", "Apri i Progetti" },
|
{ "hex.builtin.view.hex_editor.open_project", "Apri i Progetti" },
|
||||||
{ "hex.builtin.view.hexeditor.save_project", "Salva i Progetti" },
|
{ "hex.builtin.view.hex_editor.save_project", "Salva i Progetti" },
|
||||||
{ "hex.builtin.view.hexeditor.save_data", "Salva i Dati" },
|
{ "hex.builtin.view.hex_editor.save_data", "Salva i Dati" },
|
||||||
{ "hex.builtin.view.hexeditor.open_base64", "Apri Base64 File" },
|
{ "hex.builtin.view.hex_editor.open_base64", "Apri Base64 File" },
|
||||||
{ "hex.builtin.view.hexeditor.load_enconding_file", "Carica un File di codfica personalizzato" },
|
{ "hex.builtin.view.hex_editor.load_enconding_file", "Carica un File di codfica personalizzato" },
|
||||||
{ "hex.builtin.view.hexeditor.page", "Pagina {0} / {1}" },
|
{ "hex.builtin.view.hex_editor.page", "Pagina {0} / {1}" },
|
||||||
{ "hex.builtin.view.hexeditor.save_as", "Salva come" },
|
{ "hex.builtin.view.hex_editor.save_as", "Salva come" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.title", "Uscire dall'applicazione?" },
|
{ "hex.builtin.view.hex_editor.exit_application.title", "Uscire dall'applicazione?" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.desc", "Hai delle modifiche non salvate nel tuo progetto.\nSei sicuro di voler uscire?" },
|
{ "hex.builtin.view.hex_editor.exit_application.desc", "Hai delle modifiche non salvate nel tuo progetto.\nSei sicuro di voler uscire?" },
|
||||||
{ "hex.builtin.view.hexeditor.script.title", "Carica un File tramite il Caricatore di Script" },
|
{ "hex.builtin.view.hex_editor.script.title", "Carica un File tramite il Caricatore di Script" },
|
||||||
{ "hex.builtin.view.hexeditor.script.desc", "Carica un file tramite il Caricatore di Script di Python." },
|
{ "hex.builtin.view.hex_editor.script.desc", "Carica un file tramite il Caricatore di Script di Python." },
|
||||||
{ "hex.builtin.view.hexeditor.script.script", "Script" },
|
{ "hex.builtin.view.hex_editor.script.script", "Script" },
|
||||||
{ "hex.builtin.view.hexeditor.script.script.title", "Caricatore Script: Apri Script" },
|
{ "hex.builtin.view.hex_editor.script.script.title", "Caricatore Script: Apri Script" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file", "File" },
|
{ "hex.builtin.view.hex_editor.script.file", "File" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file.title", "Caricatore Script: Apri File" },
|
{ "hex.builtin.view.hex_editor.script.file.title", "Caricatore Script: Apri File" },
|
||||||
{ "hex.builtin.view.hexeditor.processing", "Importa / Esporta" },
|
{ "hex.builtin.view.hex_editor.processing", "Importa / Esporta" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_file", "Apri File..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_file", "Apri File..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save", "Salva" },
|
{ "hex.builtin.view.hex_editor.menu.file.save", "Salva" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_as", "Salva come..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_as", "Salva come..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.close", "Chiudi" },
|
{ "hex.builtin.view.hex_editor.menu.file.close", "Chiudi" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.quit", "Uscita ImHex" },
|
{ "hex.builtin.view.hex_editor.menu.file.quit", "Uscita ImHex" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_project", "Apri un Progetto..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_project", "Apri un Progetto..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_project", "Salva Progetto..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_project", "Salva Progetto..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.load_encoding_file", "Carica una codifica personalizzata..." },
|
{ "hex.builtin.view.hex_editor.menu.file.load_encoding_file", "Carica una codifica personalizzata..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import", "Importa..." },
|
{ "hex.builtin.view.hex_editor.menu.file.import", "Importa..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.base64", "Base64 File" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.base64", "Base64 File" },
|
||||||
{ "hex.builtin.view.hexeditor.base64.import_error", "Il file non è in un formato bas64 corretto!" },
|
{ "hex.builtin.view.hex_editor.base64.import_error", "Il file non è in un formato bas64 corretto!" },
|
||||||
{ "hex.builtin.view.hexeditor.file_open_error", "Impossibile aprire il File!" },
|
{ "hex.builtin.view.hex_editor.file_open_error", "Impossibile aprire il File!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips", "IPS Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips", "IPS Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips32", "IPS32 Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips32", "IPS32 Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.script", "File con il Caricatore di Script" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.script", "File con il Caricatore di Script" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export", "Esporta..." },
|
{ "hex.builtin.view.hex_editor.menu.file.export", "Esporta..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.title", "Esporta File" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.title", "Esporta File" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips", "IPS Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips", "IPS Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips32", "IPS32 Patch" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips32", "IPS32 Patch" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.search", "Cerca" },
|
{ "hex.builtin.view.hex_editor.menu.file.search", "Cerca" },
|
||||||
{ "hex.builtin.view.hexeditor.search.string", "Stringa" },
|
{ "hex.builtin.view.hex_editor.search.string", "Stringa" },
|
||||||
{ "hex.builtin.view.hexeditor.search.hex", "Hex" },
|
{ "hex.builtin.view.hex_editor.search.hex", "Hex" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find", "Cerca" },
|
{ "hex.builtin.view.hex_editor.search.find", "Cerca" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_next", "Cerca il prossimo" },
|
{ "hex.builtin.view.hex_editor.search.find_next", "Cerca il prossimo" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_prev", "Cerca il precedente" },
|
{ "hex.builtin.view.hex_editor.search.find_prev", "Cerca il precedente" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.goto", "Vai a" },
|
{ "hex.builtin.view.hex_editor.menu.file.goto", "Vai a" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.absolute", "Assoluto" },
|
{ "hex.builtin.view.hex_editor.goto.offset.absolute", "Assoluto" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.current", "Corrente" },
|
{ "hex.builtin.view.hex_editor.goto.offset.current", "Corrente" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.begin", "Inizo" },
|
{ "hex.builtin.view.hex_editor.goto.offset.begin", "Inizo" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.end", "Fine" },
|
{ "hex.builtin.view.hex_editor.goto.offset.end", "Fine" },
|
||||||
{ "hex.builtin.view.hexeditor.error.read_only", "Impossibile scrivere sul File. File aperto solo in modalità lettura" },
|
{ "hex.builtin.view.hex_editor.error.read_only", "Impossibile scrivere sul File. File aperto solo in modalità lettura" },
|
||||||
{ "hex.builtin.view.hexeditor.error.open", "Impossibile aprire il File!" },
|
{ "hex.builtin.view.hex_editor.error.open", "Impossibile aprire il File!" },
|
||||||
{ "hex.builtin.view.hexeditor.error.create", "Impossibile creare il nuovo File!" },
|
{ "hex.builtin.view.hex_editor.error.create", "Impossibile creare il nuovo File!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.undo", "Annulla" },
|
{ "hex.builtin.view.hex_editor.menu.edit.undo", "Annulla" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.redo", "Ripeti" },
|
{ "hex.builtin.view.hex_editor.menu.edit.redo", "Ripeti" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy", "Copia" },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy", "Copia" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy_as", "Copia come..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy_as", "Copia come..." },
|
||||||
{ "hex.builtin.view.hexeditor.copy.hex", "Stringa" },
|
{ "hex.builtin.view.hex_editor.copy.hex", "Stringa" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.c", "C Array" },
|
{ "hex.builtin.view.hex_editor.copy.c", "C Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.cpp", "C++ Array" },
|
{ "hex.builtin.view.hex_editor.copy.cpp", "C++ Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.csharp", "C# Array" },
|
{ "hex.builtin.view.hex_editor.copy.csharp", "C# Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.rust", "Rust Array" },
|
{ "hex.builtin.view.hex_editor.copy.rust", "Rust Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.python", "Python Array" },
|
{ "hex.builtin.view.hex_editor.copy.python", "Python Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.java", "Java Array" },
|
{ "hex.builtin.view.hex_editor.copy.java", "Java Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.js", "JavaScript Array" },
|
{ "hex.builtin.view.hex_editor.copy.js", "JavaScript Array" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.ascii", "ASCII Art" },
|
{ "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.html", "HTML" },
|
{ "hex.builtin.view.hex_editor.copy.html", "HTML" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.paste", "Incolla" },
|
{ "hex.builtin.view.hex_editor.menu.edit.paste", "Incolla" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.select_all", "Seleziona tutti" },
|
{ "hex.builtin.view.hex_editor.menu.edit.select_all", "Seleziona tutti" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.bookmark", "Crea segnalibro" },
|
{ "hex.builtin.view.hex_editor.menu.edit.bookmark", "Crea segnalibro" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.set_base", "Imposta indirizzo di base" },
|
{ "hex.builtin.view.hex_editor.menu.edit.set_base", "Imposta indirizzo di base" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.resize", "Ridimensiona..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.resize", "Ridimensiona..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.insert", "Inserisci..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.insert", "Inserisci..." },
|
||||||
|
|
||||||
{ "hex.builtin.view.information.name", "Informazione sui Dati" },
|
{ "hex.builtin.view.information.name", "Informazione sui Dati" },
|
||||||
{ "hex.builtin.view.information.control", "Controllo" },
|
{ "hex.builtin.view.information.control", "Controllo" },
|
||||||
|
@ -200,83 +200,83 @@ namespace hex::plugin::builtin {
|
|||||||
{ "hex.builtin.view.help.pattern_cheat_sheet", "模式语言帮助"},
|
{ "hex.builtin.view.help.pattern_cheat_sheet", "模式语言帮助"},
|
||||||
{ "hex.builtin.view.help.calc_cheat_sheet", "计算器帮助" },
|
{ "hex.builtin.view.help.calc_cheat_sheet", "计算器帮助" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.name", "Hex编辑器" },
|
{ "hex.builtin.view.hex_editor.name", "Hex编辑器" },
|
||||||
{ "hex.builtin.view.hexeditor.create_file", "新建" },
|
{ "hex.builtin.view.hex_editor.create_file", "新建" },
|
||||||
{ "hex.builtin.view.hexeditor.open_file", "打开" },
|
{ "hex.builtin.view.hex_editor.open_file", "打开" },
|
||||||
{ "hex.builtin.view.hexeditor.open_project", "打开项目" },
|
{ "hex.builtin.view.hex_editor.open_project", "打开项目" },
|
||||||
{ "hex.builtin.view.hexeditor.save_project", "保存项目" },
|
{ "hex.builtin.view.hex_editor.save_project", "保存项目" },
|
||||||
{ "hex.builtin.view.hexeditor.save_data", "保存数据" },
|
{ "hex.builtin.view.hex_editor.save_data", "保存数据" },
|
||||||
{ "hex.builtin.view.hexeditor.open_base64", "打开Base64文件" },
|
{ "hex.builtin.view.hex_editor.open_base64", "打开Base64文件" },
|
||||||
{ "hex.builtin.view.hexeditor.load_enconding_file", "加载自定义编码定义文件" },
|
{ "hex.builtin.view.hex_editor.load_enconding_file", "加载自定义编码定义文件" },
|
||||||
{ "hex.builtin.view.hexeditor.page", "页 {0} / {1}" },
|
{ "hex.builtin.view.hex_editor.page", "页 {0} / {1}" },
|
||||||
{ "hex.builtin.view.hexeditor.save_as", "另存为" },
|
{ "hex.builtin.view.hex_editor.save_as", "另存为" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.title", "退出?" },
|
{ "hex.builtin.view.hex_editor.exit_application.title", "退出?" },
|
||||||
{ "hex.builtin.view.hexeditor.exit_application.desc", "工程还有为保存的更改。\n确定要退出吗?" },
|
{ "hex.builtin.view.hex_editor.exit_application.desc", "工程还有为保存的更改。\n确定要退出吗?" },
|
||||||
{ "hex.builtin.view.hexeditor.script.title", "通过加载器脚本加载文件" },
|
{ "hex.builtin.view.hex_editor.script.title", "通过加载器脚本加载文件" },
|
||||||
{ "hex.builtin.view.hexeditor.script.desc", "通过Python加载器脚本加载文件。" },
|
{ "hex.builtin.view.hex_editor.script.desc", "通过Python加载器脚本加载文件。" },
|
||||||
{ "hex.builtin.view.hexeditor.script.script", "脚本" },
|
{ "hex.builtin.view.hex_editor.script.script", "脚本" },
|
||||||
{ "hex.builtin.view.hexeditor.script.script.title", "加载器脚本:打开脚本" },
|
{ "hex.builtin.view.hex_editor.script.script.title", "加载器脚本:打开脚本" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file", "文件" },
|
{ "hex.builtin.view.hex_editor.script.file", "文件" },
|
||||||
{ "hex.builtin.view.hexeditor.script.file.title", "加载器脚本:打开文件" },
|
{ "hex.builtin.view.hex_editor.script.file.title", "加载器脚本:打开文件" },
|
||||||
{ "hex.builtin.view.hexeditor.processing", "导入 / 导出" },
|
{ "hex.builtin.view.hex_editor.processing", "导入 / 导出" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_file", "打开文件..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_file", "打开文件..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_recent", "打开最近" },
|
{ "hex.builtin.view.hex_editor.menu.file.open_recent", "打开最近" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.clear_recent", "清除" },
|
{ "hex.builtin.view.hex_editor.menu.file.clear_recent", "清除" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_other", "打开其他..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_other", "打开其他..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save", "保存" },
|
{ "hex.builtin.view.hex_editor.menu.file.save", "保存" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_as", "另存为..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_as", "另存为..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.close", "关闭" },
|
{ "hex.builtin.view.hex_editor.menu.file.close", "关闭" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.quit", "退出ImHex" },
|
{ "hex.builtin.view.hex_editor.menu.file.quit", "退出ImHex" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.open_project", "打开项目..." },
|
{ "hex.builtin.view.hex_editor.menu.file.open_project", "打开项目..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.save_project", "保存项目..." },
|
{ "hex.builtin.view.hex_editor.menu.file.save_project", "保存项目..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.load_encoding_file", "加载自定义编码..." },
|
{ "hex.builtin.view.hex_editor.menu.file.load_encoding_file", "加载自定义编码..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import", "导入..." },
|
{ "hex.builtin.view.hex_editor.menu.file.import", "导入..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.base64", "Base64文件" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.base64", "Base64文件" },
|
||||||
{ "hex.builtin.view.hexeditor.base64.import_error", "文件不是有效的Base64格式!" },
|
{ "hex.builtin.view.hex_editor.base64.import_error", "文件不是有效的Base64格式!" },
|
||||||
{ "hex.builtin.view.hexeditor.file_open_error", "打开文件失败!" },
|
{ "hex.builtin.view.hex_editor.file_open_error", "打开文件失败!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips", "IPS补丁" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips", "IPS补丁" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.ips32", "IPS32补丁" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.ips32", "IPS32补丁" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.import.script", "带有加载器脚本的文件" },
|
{ "hex.builtin.view.hex_editor.menu.file.import.script", "带有加载器脚本的文件" },
|
||||||
|
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export", "导出..." },
|
{ "hex.builtin.view.hex_editor.menu.file.export", "导出..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.title", "导出文件" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.title", "导出文件" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips", "IPS补丁" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips", "IPS补丁" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.export.ips32", "IPS32补丁" },
|
{ "hex.builtin.view.hex_editor.menu.file.export.ips32", "IPS32补丁" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.search", "搜索" },
|
{ "hex.builtin.view.hex_editor.menu.file.search", "搜索" },
|
||||||
{ "hex.builtin.view.hexeditor.search.string", "字符串" },
|
{ "hex.builtin.view.hex_editor.search.string", "字符串" },
|
||||||
{ "hex.builtin.view.hexeditor.search.hex", "Hex" },
|
{ "hex.builtin.view.hex_editor.search.hex", "Hex" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find", "查找" },
|
{ "hex.builtin.view.hex_editor.search.find", "查找" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_next", "查找下一个" },
|
{ "hex.builtin.view.hex_editor.search.find_next", "查找下一个" },
|
||||||
{ "hex.builtin.view.hexeditor.search.find_prev", "查找上一个" },
|
{ "hex.builtin.view.hex_editor.search.find_prev", "查找上一个" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.file.goto", "转到" },
|
{ "hex.builtin.view.hex_editor.menu.file.goto", "转到" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.absolute", "绝对" },
|
{ "hex.builtin.view.hex_editor.goto.offset.absolute", "绝对" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.current", "当前" },
|
{ "hex.builtin.view.hex_editor.goto.offset.current", "当前" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.begin", "起始" },
|
{ "hex.builtin.view.hex_editor.goto.offset.begin", "起始" },
|
||||||
{ "hex.builtin.view.hexeditor.goto.offset.end", "末尾" },
|
{ "hex.builtin.view.hex_editor.goto.offset.end", "末尾" },
|
||||||
{ "hex.builtin.view.hexeditor.error.read_only", "无法获得写权限,文件以只读方式打开。" },
|
{ "hex.builtin.view.hex_editor.error.read_only", "无法获得写权限,文件以只读方式打开。" },
|
||||||
{ "hex.builtin.view.hexeditor.error.open", "打开文件失败!" },
|
{ "hex.builtin.view.hex_editor.error.open", "打开文件失败!" },
|
||||||
{ "hex.builtin.view.hexeditor.error.create", "创建新文件失败!" },
|
{ "hex.builtin.view.hex_editor.error.create", "创建新文件失败!" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.undo", "撤销" },
|
{ "hex.builtin.view.hex_editor.menu.edit.undo", "撤销" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.redo", "重做" },
|
{ "hex.builtin.view.hex_editor.menu.edit.redo", "重做" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy", "复制" },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy", "复制" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.copy_as", "复制为..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.copy_as", "复制为..." },
|
||||||
{ "hex.builtin.view.hexeditor.copy.hex", "字符串" },
|
{ "hex.builtin.view.hex_editor.copy.hex", "字符串" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.c", "C数组" },
|
{ "hex.builtin.view.hex_editor.copy.c", "C数组" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.cpp", "C++数组" },
|
{ "hex.builtin.view.hex_editor.copy.cpp", "C++数组" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.csharp", "C#数组" },
|
{ "hex.builtin.view.hex_editor.copy.csharp", "C#数组" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.rust", "Rust数组" },
|
{ "hex.builtin.view.hex_editor.copy.rust", "Rust数组" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.python", "Python数组" },
|
{ "hex.builtin.view.hex_editor.copy.python", "Python数组" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.java", "Java数组" },
|
{ "hex.builtin.view.hex_editor.copy.java", "Java数组" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.js", "JavaScript数组" },
|
{ "hex.builtin.view.hex_editor.copy.js", "JavaScript数组" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.ascii", "ASCII Art" },
|
{ "hex.builtin.view.hex_editor.copy.ascii", "ASCII Art" },
|
||||||
{ "hex.builtin.view.hexeditor.copy.html", "HTML" },
|
{ "hex.builtin.view.hex_editor.copy.html", "HTML" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.paste", "粘贴" },
|
{ "hex.builtin.view.hex_editor.menu.edit.paste", "粘贴" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.select_all", "全选" },
|
{ "hex.builtin.view.hex_editor.menu.edit.select_all", "全选" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.bookmark", "添加书签" },
|
{ "hex.builtin.view.hex_editor.menu.edit.bookmark", "添加书签" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.set_base", "设置基地址" },
|
{ "hex.builtin.view.hex_editor.menu.edit.set_base", "设置基地址" },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.resize", "修改大小..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.resize", "修改大小..." },
|
||||||
{ "hex.builtin.view.hexeditor.menu.edit.insert", "插入..." },
|
{ "hex.builtin.view.hex_editor.menu.edit.insert", "插入..." },
|
||||||
|
|
||||||
{ "hex.builtin.view.information.name", "数据信息" },
|
{ "hex.builtin.view.information.name", "数据信息" },
|
||||||
{ "hex.builtin.view.information.control", "控制" },
|
{ "hex.builtin.view.information.control", "控制" },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user