diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc03bd9d7..cdd066750 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -95,7 +95,7 @@ jobs: echo "ImHex checks for the existence of this file to determine if it is running in portable mode. You should not delete this file" > $PWD/install/PORTABLE - name: ⬆️ Upload Windows Installer - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: Windows Installer x86_64 @@ -103,7 +103,7 @@ jobs: imhex-*.msi - name: ⬆️ Upload Portable ZIP - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: Windows Portable x86_64 @@ -120,7 +120,7 @@ jobs: mv opengl32.dll build/install - name: ⬆️ Upload NoGPU Portable ZIP - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: Windows Portable NoGPU x86_64 @@ -238,7 +238,7 @@ jobs: ninja package - name: ⬆️ Upload DMG - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: macOS DMG${{matrix.suffix}} x86_64 @@ -270,7 +270,7 @@ jobs: docker buildx build . -f dist/macOS/arm64.Dockerfile --progress=plain --build-arg 'JOBS=4' --build-arg "BUILD_TYPE=$(BUILD_TYPE)" --build-context imhex=$(pwd) --output out - name: ⬆️ Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: macOS ZIP arm64 path: out/ @@ -374,7 +374,7 @@ jobs: mv build/DebDir.deb imhex-${{env.IMHEX_VERSION}}-Ubuntu-${{ matrix.release_num }}-x86_64.deb - name: ⬆️ Upload DEB - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: Ubuntu ${{ matrix.release_num }} DEB x86_64 @@ -410,14 +410,14 @@ jobs: - name: ⬆️ Upload AppImage - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: Linux AppImage x86_64 path: 'out/*.AppImage' - name: ⬆️ Upload AppImage zsync - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: Linux AppImage zsync x86_64 @@ -520,7 +520,7 @@ jobs: mv *.pkg.tar.zst imhex-${{env.IMHEX_VERSION}}-ArchLinux-x86_64.pkg.tar.zst - name: ⬆️ Upload imhex-archlinux.pkg.tar.zst - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: ArchLinux .pkg.tar.zst x86_64 @@ -648,7 +648,7 @@ jobs: $GITHUB_WORKSPACE/imhex-${{env.IMHEX_VERSION}}-${{matrix.name}}-${{matrix.release_num}}-x86_64.rpm - name: ⬆️ Upload RPM - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: if-no-files-found: error name: ${{ matrix.name }} ${{ matrix.release_num }} RPM x86_64 diff --git a/CMakeLists.txt b/CMakeLists.txt index 50eb1b9af..086073f7f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,12 +39,7 @@ setDefaultBuiltTypeIfUnset() detectBadClone() verifyCompiler() -# List plugin names here. Project name must match folder name -set(PLUGINS - builtin - windows - script_loader -) +detectBundledPlugins() # Add various defines detectOS() diff --git a/cmake/build_helpers.cmake b/cmake/build_helpers.cmake index 896478fb5..e993ba0b5 100644 --- a/cmake/build_helpers.cmake +++ b/cmake/build_helpers.cmake @@ -147,27 +147,17 @@ macro(createPackage) foreach (plugin IN LISTS PLUGINS) add_subdirectory("plugins/${plugin}") if (TARGET ${plugin}) - get_target_property(IS_RUST_PROJECT ${plugin} RUST_PROJECT) - set_target_properties(${plugin} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins) set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins) - if (IS_RUST_PROJECT) - set_target_properties(${plugin} PROPERTIES CARGO_BUILD_TARGET_DIR ${CMAKE_BINARY_DIR}/plugins) - - get_target_property(PLUGIN_LOCATION ${plugin} LOCATION) - - install(FILES "${PLUGIN_LOCATION}/../${plugin}.hexplug" DESTINATION "${PLUGINS_INSTALL_LOCATION}" PERMISSIONS ${LIBRARY_PERMISSIONS}) - else () - if (APPLE) - if (IMHEX_GENERATE_PACKAGE) - set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PLUGINS_INSTALL_LOCATION}) - else () - set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins) - endif () + if (APPLE) + if (IMHEX_GENERATE_PACKAGE) + set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PLUGINS_INSTALL_LOCATION}) else () - install(TARGETS ${plugin} LIBRARY DESTINATION ${PLUGINS_INSTALL_LOCATION}) + set_target_properties(${plugin} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins) endif () + else () + install(TARGETS ${plugin} LIBRARY DESTINATION ${PLUGINS_INSTALL_LOCATION}) endif () add_dependencies(imhex_all ${plugin}) @@ -395,6 +385,35 @@ function(verifyCompiler) endif() endfunction() +macro(detectBundledPlugins) + file(GLOB PLUGINS_DIRS "plugins/*") + + if (NOT DEFINED IMHEX_INCLUDE_PLUGINS) + foreach(PLUGIN_DIR ${PLUGINS_DIRS}) + if (EXISTS "${PLUGIN_DIR}/CMakeLists.txt") + get_filename_component(PLUGIN_NAME ${PLUGIN_DIR} NAME) + if (NOT (${PLUGIN_NAME} IN_LIST IMHEX_EXCLUDE_PLUGINS)) + list(APPEND PLUGINS ${PLUGIN_NAME}) + endif () + endif() + endforeach() + else() + set(PLUGINS ${IMHEX_INCLUDE_PLUGINS}) + endif() + + foreach(PLUGIN_NAME ${PLUGINS}) + message(STATUS "Enabled bundled plugin '${PLUGIN_NAME}'") + endforeach() + + if (NOT PLUGINS) + message(FATAL_ERROR "No bundled plugins enabled") + endif() + + if (NOT ("builtin" IN_LIST PLUGINS)) + message(FATAL_ERROR "The 'builtin' plugin is required for ImHex to work!") + endif () +endmacro() + macro(setVariableInParent variable value) get_directory_property(hasParent PARENT_DIRECTORY) @@ -561,24 +580,6 @@ macro(addBundledLibraries) find_package(LLVM REQUIRED Demangle) endif() - if (NOT USE_SYSTEM_YARA) - add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/yara EXCLUDE_FROM_ALL) - set_target_properties(libyara PROPERTIES POSITION_INDEPENDENT_CODE ON) - set(YARA_LIBRARIES libyara) - else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(YARA REQUIRED IMPORTED_TARGET yara) - endif() - - if (NOT USE_SYSTEM_MINIAUDIO) - add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/miniaudio EXCLUDE_FROM_ALL) - set_target_properties(miniaudio PROPERTIES POSITION_INDEPENDENT_CODE ON) - set(MINIAUDIO_LIBRARIES miniaudio) - else() - find_package(PkgConfig REQUIRED) - pkg_check_modules(miniaudio REQUIRED IMPORTED_TARGET miniaudio) - endif() - if (NOT USE_SYSTEM_JTHREAD) add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/jthread EXCLUDE_FROM_ALL) set(JTHREAD_LIBRARIES jthread) @@ -591,20 +592,6 @@ macro(addBundledLibraries) set(JTHREAD_LIBRARIES jthread) endif() - if (NOT USE_SYSTEM_CAPSTONE) - set(CAPSTONE_BUILD_STATIC_RUNTIME OFF CACHE BOOL "Disable shared library building") - set(CAPSTONE_BUILD_SHARED OFF CACHE BOOL "Disable shared library building") - set(CAPSTONE_BUILD_TESTS OFF CACHE BOOL "Disable tests") - add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/capstone EXCLUDE_FROM_ALL) - set_target_properties(capstone PROPERTIES POSITION_INDEPENDENT_CODE ON) - target_compile_options(capstone PRIVATE -Wno-unused-function) - set(CAPSTONE_LIBRARIES "capstone") - set(CAPSTONE_INCLUDE_DIRS ${THIRD_PARTY_LIBS_FOLDER}/capstone/include) - else() - find_package(PkgConfig REQUIRED) - pkg_search_module(CAPSTONE 4.0.2 REQUIRED capstone) - endif() - set(LIBPL_BUILD_CLI_AS_EXECUTABLE OFF) add_subdirectory(${EXTERNAL_LIBS_FOLDER}/pattern_language EXCLUDE_FROM_ALL) set_target_properties(libpl PROPERTIES POSITION_INDEPENDENT_CODE ON) diff --git a/cmake/modules/ImHexPlugin.cmake b/cmake/modules/ImHexPlugin.cmake index 63e6f8e9f..1b6e4165b 100644 --- a/cmake/modules/ImHexPlugin.cmake +++ b/cmake/modules/ImHexPlugin.cmake @@ -1,6 +1,6 @@ macro(add_imhex_plugin) # Parse arguments - set(options "") + set(options LIBRARY_PLUGIN) set(oneValueArgs NAME) set(multiValueArgs SOURCES INCLUDES LIBRARIES) cmake_parse_arguments(IMHEX_PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) @@ -12,8 +12,15 @@ macro(add_imhex_plugin) configure_file(${CMAKE_SOURCE_DIR}/dist/web/plugin-bundle.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/plugin-bundle.cpp @ONLY) target_sources(main PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/plugin-bundle.cpp) + set(IMHEX_PLUGIN_SUFFIX ".hexplug") else() - set(IMHEX_PLUGIN_LIBRARY_TYPE MODULE) + if (IMHEX_PLUGIN_LIBRARY_PLUGIN) + set(IMHEX_PLUGIN_LIBRARY_TYPE SHARED) + set(IMHEX_PLUGIN_SUFFIX ".hexpluglib") + else() + set(IMHEX_PLUGIN_LIBRARY_TYPE MODULE) + set(IMHEX_PLUGIN_SUFFIX ".hexplug") + endif() endif() # Define new project for plugin @@ -24,7 +31,7 @@ macro(add_imhex_plugin) # Add include directories and link libraries target_include_directories(${IMHEX_PLUGIN_NAME} PUBLIC ${IMHEX_PLUGIN_INCLUDES}) - target_link_libraries(${IMHEX_PLUGIN_NAME} PRIVATE libimhex ${IMHEX_PLUGIN_LIBRARIES} fmt::fmt imgui_all_includes libwolv) + target_link_libraries(${IMHEX_PLUGIN_NAME} PRIVATE libimhex ${IMHEX_PLUGIN_LIBRARIES} ${FMT_LIBRARIES} imgui_all_includes libwolv) addIncludesFromLibrary(${IMHEX_PLUGIN_NAME} libpl) # Add IMHEX_PROJECT_NAME and IMHEX_VERSION define @@ -43,7 +50,7 @@ macro(add_imhex_plugin) RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/plugins CXX_STANDARD 23 PREFIX "" - SUFFIX ".hexplug" + SUFFIX ${IMHEX_PLUGIN_SUFFIX} ) # Setup a romfs for the plugin diff --git a/cmake/modules/PostprocessBundle.cmake b/cmake/modules/PostprocessBundle.cmake index 7a3b67374..c14c6fba5 100644 --- a/cmake/modules/PostprocessBundle.cmake +++ b/cmake/modules/PostprocessBundle.cmake @@ -35,26 +35,27 @@ message(STATUS "Fixing up application bundle: ${BUNDLE_PATH}") # Make sure to fix up any included ImHex plugin. -file(GLOB_RECURSE extra_libs "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexplug") +file(GLOB_RECURSE plugins "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexplug") +file(GLOB_RECURSE plugin_libs "${BUNDLE_PATH}/Contents/MacOS/plugins/*.hexpluglib") # BundleUtilities doesn't support DYLD_FALLBACK_LIBRARY_PATH behavior, which # makes it sometimes break on libraries that do weird things with @rpath. Specify # equivalent search directories until https://gitlab.kitware.com/cmake/cmake/issues/16625 # is fixed and in our minimum CMake version. -set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib" ${EXTRA_BUNDLE_LIBRARY_PATHS}) +set(extra_dirs "/usr/local/lib" "/lib" "/usr/lib" ${EXTRA_BUNDLE_LIBRARY_PATHS} "${BUNDLE_PATH}/Contents/MacOS/plugins") message(STATUS "Fixing up application bundle: ${extra_dirs}") # BundleUtilities is overly verbose, so disable most of its messages -function(message) - if(NOT ARGV MATCHES "^STATUS;") - _message(${ARGV}) - endif() -endfunction() +#function(message) +# if(NOT ARGV MATCHES "^STATUS;") +# _message(${ARGV}) +# endif() +#endfunction() include(BundleUtilities) set(BU_CHMOD_BUNDLE_ITEMS ON) -fixup_bundle("${BUNDLE_PATH}" "${extra_libs}" "${extra_dirs}") +fixup_bundle("${BUNDLE_PATH}" "${plugins};${plugin_libs}" "${extra_dirs}") if (CODE_SIGN_CERTIFICATE_ID) # Hack around Apple Silicon signing bugs by copying the real app, signing it and moving it back. diff --git a/dist/Arch/PKGBUILD b/dist/Arch/PKGBUILD index 2cc6233e0..93f3ef28c 100644 --- a/dist/Arch/PKGBUILD +++ b/dist/Arch/PKGBUILD @@ -19,7 +19,7 @@ package() { install -Dm755 "$srcdir/usr/bin/imhex" "$pkgdir/usr/bin/imhex" install -Dm644 "$srcdir/usr/lib/libimhex.so.$pkgver" "$pkgdir/usr/lib/libimhex.so.$pkgver" - for plugin in "$srcdir/usr/lib/imhex/plugins/"*.hexplug; do + for plugin in "$srcdir/usr/lib/imhex/plugins/"*.hexplug*; do install -Dm644 "$plugin" "$pkgdir/usr/lib/imhex/plugins/${plugin##*/}" done diff --git a/dist/web/Dockerfile b/dist/web/Dockerfile index 975690943..6d7545d53 100644 --- a/dist/web/Dockerfile +++ b/dist/web/Dockerfile @@ -54,6 +54,7 @@ ccache -zs cmake /imhex \ -DIMHEX_OFFLINE_BUILD=ON \ -DIMHEX_STATIC_LINK_PLUGINS=ON \ + -DIMHEX_EXCLUDE_PLUGINS="script_loader" \ -DNATIVE_CMAKE_C_COMPILER=gcc \ -DNATIVE_CMAKE_CXX_COMPILER=g++ \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ diff --git a/lib/libimhex/include/hex/api/plugin_manager.hpp b/lib/libimhex/include/hex/api/plugin_manager.hpp index 9fd565f41..f315ed95e 100644 --- a/lib/libimhex/include/hex/api/plugin_manager.hpp +++ b/lib/libimhex/include/hex/api/plugin_manager.hpp @@ -5,6 +5,7 @@ #include #include +#include struct ImGuiContext; @@ -18,6 +19,7 @@ namespace hex { struct PluginFunctions { using InitializePluginFunc = void (*)(); + using InitializeLibraryFunc = void (*)(); using GetPluginNameFunc = const char *(*)(); using GetPluginAuthorFunc = const char *(*)(); using GetPluginDescriptionFunc = const char *(*)(); @@ -27,6 +29,7 @@ namespace hex { using GetSubCommandsFunc = void* (*)(); InitializePluginFunc initializePluginFunction = nullptr; + InitializeLibraryFunc initializeLibraryFunction = nullptr; GetPluginNameFunc getPluginNameFunction = nullptr; GetPluginAuthorFunc getPluginAuthorFunction = nullptr; GetPluginDescriptionFunc getPluginDescriptionFunction = nullptr; @@ -38,8 +41,8 @@ namespace hex { class Plugin { public: - explicit Plugin(const std::fs::path &path); - explicit Plugin(PluginFunctions functions); + explicit Plugin(const std::fs::path &path, bool libraryPlugin); + explicit Plugin(PluginFunctions functions, bool libraryPlugin); Plugin(const Plugin &) = delete; Plugin(Plugin &&other) noexcept; @@ -59,9 +62,12 @@ namespace hex { [[nodiscard]] std::span getSubCommands() const; + [[nodiscard]] bool isLibraryPlugin() const { return m_libraryPlugin; } + private: uintptr_t m_handle = 0; std::fs::path m_path; + bool m_libraryPlugin; mutable bool m_initialized = false; diff --git a/lib/libimhex/include/hex/plugin.hpp b/lib/libimhex/include/hex/plugin.hpp index 7dd30cccb..fb7141b3a 100644 --- a/lib/libimhex/include/hex/plugin.hpp +++ b/lib/libimhex/include/hex/plugin.hpp @@ -22,6 +22,24 @@ * Name, Author and Description will be displayed in the in the plugin list on the Welcome screen. */ #define IMHEX_PLUGIN_SETUP(name, author, description) IMHEX_PLUGIN_SETUP_IMPL(name, author, description) +#define IMHEX_LIBRARY_SETUP() IMHEX_LIBRARY_SETUP_IMPL() + +#define IMHEX_LIBRARY_SETUP_IMPL() \ + IMHEX_PLUGIN_VISIBILITY_PREFIX void initializeLibrary(); \ + extern "C" [[gnu::visibility("default")]] void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \ + hex::PluginManager::addPlugin(hex::PluginFunctions { \ + nullptr, \ + initializeLibrary, \ + nullptr, \ + nullptr, \ + nullptr, \ + nullptr, \ + nullptr, \ + nullptr, \ + nullptr \ + }); \ + } \ + IMHEX_PLUGIN_VISIBILITY_PREFIX void initializeLibrary() #define IMHEX_PLUGIN_SETUP_IMPL(name, author, description) \ IMHEX_PLUGIN_VISIBILITY_PREFIX const char *getPluginName() { return name; } \ @@ -36,6 +54,7 @@ extern "C" [[gnu::visibility("default")]] void WOLV_TOKEN_CONCAT(forceLinkPlugin_, IMHEX_PLUGIN_NAME)() { \ hex::PluginManager::addPlugin(hex::PluginFunctions { \ initializePlugin, \ + nullptr, \ getPluginName, \ getPluginAuthor, \ getPluginDescription, \ diff --git a/lib/libimhex/source/api/plugin_manager.cpp b/lib/libimhex/source/api/plugin_manager.cpp index 8d729c1a6..d85783817 100644 --- a/lib/libimhex/source/api/plugin_manager.cpp +++ b/lib/libimhex/source/api/plugin_manager.cpp @@ -16,25 +16,27 @@ namespace hex { - Plugin::Plugin(const std::fs::path &path) : m_path(path) { - + Plugin::Plugin(const std::fs::path &path, bool libraryPlugin) : m_path(path), m_libraryPlugin(libraryPlugin) { #if defined(OS_WINDOWS) m_handle = uintptr_t(LoadLibraryW(path.c_str())); if (m_handle == uintptr_t(INVALID_HANDLE_VALUE) || m_handle == 0) { - log::error("LoadLibraryW failed: {}!", std::system_category().message(::GetLastError())); + log::error("Loading plugin '{}' failed: {} {}!", wolv::util::toUTF8String(path.filename()), ::GetLastError(), std::system_category().message(::GetLastError())); return; } #else m_handle = uintptr_t(dlopen(wolv::util::toUTF8String(path).c_str(), RTLD_LAZY)); if (m_handle == 0) { - log::error("dlopen failed: {}!", dlerror()); + log::error("Loading plugin '{}' failed: {}!", wolv::util::toUTF8String(path.filename()), dlerror()); return; } #endif + log::info("Loaded plugin '{}'", wolv::util::toUTF8String(path.filename())); + m_functions.initializePluginFunction = getPluginFunction("initializePlugin"); + m_functions.initializeLibraryFunction = getPluginFunction("initializeLibrary"); m_functions.getPluginNameFunction = getPluginFunction("getPluginName"); m_functions.getPluginAuthorFunction = getPluginFunction("getPluginAuthor"); m_functions.getPluginDescriptionFunction = getPluginFunction("getPluginDescription"); @@ -44,9 +46,10 @@ namespace hex { m_functions.getSubCommandsFunction = getPluginFunction("getSubCommands"); } - Plugin::Plugin(hex::PluginFunctions functions) { - m_handle = 0; - m_functions = functions; + Plugin::Plugin(hex::PluginFunctions functions, bool libraryPlugin) { + m_handle = 0; + m_functions = functions; + m_libraryPlugin = libraryPlugin; } @@ -54,6 +57,8 @@ namespace hex { m_handle = other.m_handle; other.m_handle = 0; + m_libraryPlugin = other.m_libraryPlugin; + m_path = std::move(other.m_path); m_functions = other.m_functions; @@ -73,6 +78,12 @@ namespace hex { bool Plugin::initializePlugin() const { const auto pluginName = wolv::util::toUTF8String(m_path.filename()); + if (m_functions.initializeLibraryFunction != nullptr) { + m_functions.initializeLibraryFunction(); + log::info("Library plugin '{}' initialized successfully", pluginName); + return true; + } + const auto requestedVersion = getCompatibleVersion(); if (requestedVersion != ImHexApi::System::getImHexVersion()) { if (requestedVersion.empty()) { @@ -107,8 +118,12 @@ namespace hex { std::string Plugin::getPluginName() const { if (m_functions.getPluginNameFunction != nullptr) return m_functions.getPluginNameFunction(); - else - return hex::format("Unknown Plugin @ 0x{0:016X}", m_handle); + else { + if (this->isLibraryPlugin()) + return "Library Plugin"; + else + return hex::format("Unknown Plugin @ 0x{0:016X}", m_handle); + } } std::string Plugin::getPluginAuthor() const { @@ -132,6 +147,7 @@ namespace hex { return ""; } + void Plugin::setImGuiContext(ImGuiContext *ctx) const { if (m_functions.setImGuiContextFunction != nullptr) m_functions.setImGuiContextFunction(ctx); @@ -175,9 +191,16 @@ namespace hex { getPluginPaths().push_back(pluginFolder); + // Load library plugins first + for (auto &pluginPath : std::fs::directory_iterator(pluginFolder)) { + if (pluginPath.is_regular_file() && pluginPath.path().extension() == ".hexpluglib") + getPlugins().emplace_back(pluginPath.path(), true); + } + + // Load regular plugins afterwards for (auto &pluginPath : std::fs::directory_iterator(pluginFolder)) { if (pluginPath.is_regular_file() && pluginPath.path().extension() == ".hexplug") - getPlugins().emplace_back(pluginPath.path()); + getPlugins().emplace_back(pluginPath.path(), false); } if (getPlugins().empty()) @@ -200,7 +223,7 @@ namespace hex { } void PluginManager::addPlugin(hex::PluginFunctions functions) { - getPlugins().emplace_back(functions); + getPlugins().emplace_back(functions, false); } std::vector &PluginManager::getPlugins() { diff --git a/main/gui/CMakeLists.txt b/main/gui/CMakeLists.txt index 14e5b91dd..77a120384 100644 --- a/main/gui/CMakeLists.txt +++ b/main/gui/CMakeLists.txt @@ -52,7 +52,7 @@ set_target_properties(main PROPERTIES add_compile_definitions(IMHEX_PROJECT_NAME="${PROJECT_NAME}") -target_link_libraries(main PRIVATE libromfs-imhex libimhex ${GLFW_LIBRARIES} libwolv libpl plcli libpl-gen ${FMT_LIBRARIES}) +target_link_libraries(main PRIVATE libromfs-imhex libimhex libwolv libpl plcli libpl-gen ${FMT_LIBRARIES}) if (WIN32) target_link_libraries(main PRIVATE usp10 wsock32 ws2_32 Dwmapi.lib) else () diff --git a/main/gui/source/init/tasks.cpp b/main/gui/source/init/tasks.cpp index 4fb622188..b9b7b2c25 100644 --- a/main/gui/source/init/tasks.cpp +++ b/main/gui/source/init/tasks.cpp @@ -182,12 +182,23 @@ namespace hex::init { return !std::fs::relative(plugin.getPath(), executablePath->parent_path()).string().starts_with(".."); }; + // Load library plugins first since plugins might depend on them + for (const auto &plugin : plugins) { + if (!plugin.isLibraryPlugin()) continue; + + // Initialize the plugin + if (!plugin.initializePlugin()) { + log::error("Failed to initialize library plugin {}", wolv::util::toUTF8String(plugin.getPath().filename())); + } + } + u32 builtinPlugins = 0; u32 loadErrors = 0; // Load the builtin plugin first, so it can initialize everything that's necessary for ImHex to work for (const auto &plugin : plugins) { if (!plugin.isBuiltinPlugin()) continue; + if (plugin.isLibraryPlugin()) continue; if (!shouldLoadPlugin(plugin)) { log::debug("Skipping built-in plugin {}", plugin.getPath().string()); @@ -209,6 +220,7 @@ namespace hex::init { // Load all other plugins for (const auto &plugin : plugins) { if (plugin.isBuiltinPlugin()) continue; + if (plugin.isLibraryPlugin()) continue; if (!shouldLoadPlugin(plugin)) { log::debug("Skipping plugin {}", plugin.getPath().string()); diff --git a/main/gui/source/window/window.cpp b/main/gui/source/window/window.cpp index 0c40e5241..9b6c4e96e 100644 --- a/main/gui/source/window/window.cpp +++ b/main/gui/source/window/window.cpp @@ -595,7 +595,7 @@ namespace hex { ImGui::TableNextColumn(); ImGui::TextUnformatted(wolv::util::toUTF8String(filePath).c_str()); ImGui::TableNextColumn(); - ImGui::TextUnformatted(wolv::io::fs::exists(filePath) ? ICON_VS_CHECK : ICON_VS_CLOSE); + ImGui::TextUnformatted(wolv::io::fs::exists(filePath) ? "Yes" : "No"); } ImGui::EndTable(); } diff --git a/plugins/builtin/CMakeLists.txt b/plugins/builtin/CMakeLists.txt index eed18ceaf..4725ca739 100644 --- a/plugins/builtin/CMakeLists.txt +++ b/plugins/builtin/CMakeLists.txt @@ -21,8 +21,6 @@ add_imhex_plugin( source/content/data_inspector.cpp source/content/pl_builtin_functions.cpp source/content/pl_pragmas.cpp - source/content/pl_visualizers.cpp - source/content/pl_inline_visualizers.cpp source/content/settings_entries.cpp source/content/tools_entries.cpp source/content/data_processor_nodes.cpp @@ -46,6 +44,7 @@ add_imhex_plugin( source/content/init_tasks.cpp source/content/fonts.cpp source/content/workspaces.cpp + source/content/pl_visualizers.cpp source/content/data_processor_nodes/basic_nodes.cpp source/content/data_processor_nodes/control_nodes.cpp @@ -82,20 +81,12 @@ add_imhex_plugin( source/content/tools/tcp_client_server.cpp source/content/tools/wiki_explainer.cpp + source/content/pl_visualizers/hex_viewer.cpp + source/content/pl_visualizers/chunk_entropy.cpp + source/content/tutorials/tutorials.cpp source/content/tutorials/introduction.cpp - source/content/pl_visualizers/line_plot.cpp - source/content/pl_visualizers/scatter_plot.cpp - source/content/pl_visualizers/image.cpp - source/content/pl_visualizers/disassembler.cpp - source/content/pl_visualizers/3d_model.cpp - source/content/pl_visualizers/sound.cpp - source/content/pl_visualizers/chunk_entropy.cpp - source/content/pl_visualizers/hex_viewer.cpp - source/content/pl_visualizers/coordinates.cpp - source/content/pl_visualizers/timestamp.cpp - source/content/views/view_hex_editor.cpp source/content/views/view_pattern_editor.cpp source/content/views/view_pattern_data.cpp @@ -104,7 +95,6 @@ add_imhex_plugin( source/content/views/view_about.cpp source/content/views/view_tools.cpp source/content/views/view_data_inspector.cpp - source/content/views/view_disassembler.cpp source/content/views/view_bookmarks.cpp source/content/views/view_patches.cpp source/content/views/view_command_palette.cpp @@ -120,26 +110,15 @@ add_imhex_plugin( source/content/views/view_achievements.cpp source/content/views/view_highlight_rules.cpp source/content/views/view_tutorials.cpp - source/content/views/view_yara.cpp source/content/helpers/notification.cpp - - source/ui/hex_editor.cpp - source/ui/pattern_drawer.cpp - INCLUDES include - ${CAPSTONE_INCLUDE_DIRS} - ${YARA_INCLUDE_DIRS} - ${MINIAUDIO_INCLUDE_DIRS} LIBRARIES - ${CAPSTONE_LIBRARIES} - ${YARA_LIBRARIES} - ${MINIAUDIO_LIBRARIES} + ui ${JTHREAD_LIBRARIES} - ${GLFW_LIBRARIES} - plcli libpl-gen + plcli ) if (WIN32) diff --git a/plugins/builtin/include/content/helpers/diagrams.hpp b/plugins/builtin/include/content/helpers/diagrams.hpp index b18cdab00..1ed0354aa 100644 --- a/plugins/builtin/include/content/helpers/diagrams.hpp +++ b/plugins/builtin/include/content/helpers/diagrams.hpp @@ -11,8 +11,11 @@ #include #include +#include + #include +#include #include namespace hex { @@ -299,7 +302,7 @@ namespace hex { void draw(ImVec2 size, ImPlotFlags flags, bool updateHandle = false) { if (!m_processing && ImPlot::BeginPlot("##ChunkBasedAnalysis", size, flags)) { - ImPlot::SetupAxes("hex.builtin.common.address"_lang, "hex.builtin.view.information.entropy"_lang, + ImPlot::SetupAxes("hex.ui.common.address"_lang, "hex.builtin.view.information.entropy"_lang, ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch, ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch); ImPlot::SetupAxisFormat(ImAxis_X1, impl::IntegerAxisFormatter, (void*)("0x%04llX")); @@ -595,7 +598,7 @@ namespace hex { void draw(ImVec2 size, ImPlotFlags flags) { if (!m_processing && ImPlot::BeginPlot("##distribution", size, flags)) { - ImPlot::SetupAxes("hex.builtin.common.value"_lang, "hex.builtin.common.count"_lang, + ImPlot::SetupAxes("hex.ui.common.value"_lang, "hex.ui.common.count"_lang, ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch, ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch); ImPlot::SetupAxisScale(ImAxis_Y1, ImPlotScale_Log10); @@ -690,7 +693,7 @@ namespace hex { void draw(ImVec2 size, ImPlotFlags flags, bool updateHandle = false) { // Draw the result of the analysis if (!m_processing && ImPlot::BeginPlot("##byte_types", size, flags)) { - ImPlot::SetupAxes("hex.builtin.common.address"_lang, "hex.builtin.common.percentage"_lang, + ImPlot::SetupAxes("hex.ui.common.address"_lang, "hex.ui.common.percentage"_lang, ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch, ImPlotAxisFlags_Lock | ImPlotAxisFlags_NoHighlight | ImPlotAxisFlags_NoSideSwitch); ImPlot::SetupAxesLimits( diff --git a/plugins/builtin/include/content/popups/popup_blocking_task.hpp b/plugins/builtin/include/content/popups/popup_blocking_task.hpp index 200ba50ec..19898f8c3 100644 --- a/plugins/builtin/include/content/popups/popup_blocking_task.hpp +++ b/plugins/builtin/include/content/popups/popup_blocking_task.hpp @@ -22,7 +22,7 @@ namespace hex::plugin::builtin { ImGui::ProgressBar(m_task.getProgress() / 100.0F); ImGui::NewLine(); - if (ImGui::ButtonEx("hex.builtin.common.cancel"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape)) + if (ImGui::ButtonEx("hex.ui.common.cancel"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape)) m_task.interrupt(); if (!m_task.isRunning()) { diff --git a/plugins/builtin/include/content/popups/popup_tasks_waiting.hpp b/plugins/builtin/include/content/popups/popup_tasks_waiting.hpp index fbe659878..841e6faa9 100644 --- a/plugins/builtin/include/content/popups/popup_tasks_waiting.hpp +++ b/plugins/builtin/include/content/popups/popup_tasks_waiting.hpp @@ -21,7 +21,7 @@ namespace hex::plugin::builtin { ImGuiExt::TextSpinner(""); ImGui::NewLine(); ImGui::SetCursorPosX((ImGui::GetWindowWidth() - 150_scaled) / 2); - if (ImGui::ButtonEx("hex.builtin.common.cancel"_lang, ImVec2(150, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape)) + if (ImGui::ButtonEx("hex.ui.common.cancel"_lang, ImVec2(150, 0)) || ImGui::IsKeyDown(ImGuiKey_Escape)) ImGui::CloseCurrentPopup(); if (TaskManager::getRunningTaskCount() == 0 && TaskManager::getRunningBackgroundTaskCount() == 0) { diff --git a/plugins/builtin/include/content/popups/popup_telemetry_request.hpp b/plugins/builtin/include/content/popups/popup_telemetry_request.hpp index 437f65dca..2a11d0621 100644 --- a/plugins/builtin/include/content/popups/popup_telemetry_request.hpp +++ b/plugins/builtin/include/content/popups/popup_telemetry_request.hpp @@ -13,7 +13,7 @@ namespace hex::plugin::builtin { class PopupTelemetryRequest : public Popup { public: PopupTelemetryRequest() - : hex::Popup("hex.builtin.common.question", false) { + : hex::Popup("hex.ui.common.question", false) { // Check if there is a telemetry uuid m_uuid = ContentRegistry::Settings::read("hex.builtin.setting.general", "hex.builtin.setting.general.uuid", "").get(); if(m_uuid.empty()) { @@ -77,7 +77,7 @@ namespace hex::plugin::builtin { const auto buttonPos = [&](u8 index) { return ImGui::GetStyle().FramePadding.x + (buttonSize.x + ImGui::GetStyle().FramePadding.x * 3) * index; }; ImGui::SetCursorPosX(buttonPos(0)); - if (ImGui::Button("hex.builtin.common.allow"_lang, buttonSize)) { + if (ImGui::Button("hex.ui.common.allow"_lang, buttonSize)) { ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.server_contact", 1); ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.upload_crash_logs", 1); this->close(); @@ -91,7 +91,7 @@ namespace hex::plugin::builtin { } ImGui::SameLine(); ImGui::SetCursorPosX(buttonPos(2)); - if (ImGui::Button("hex.builtin.common.deny"_lang, buttonSize)) { + if (ImGui::Button("hex.ui.common.deny"_lang, buttonSize)) { this->close(); } diff --git a/plugins/builtin/include/content/popups/popup_unsaved_changes.hpp b/plugins/builtin/include/content/popups/popup_unsaved_changes.hpp index 068254bd2..a33035aae 100644 --- a/plugins/builtin/include/content/popups/popup_unsaved_changes.hpp +++ b/plugins/builtin/include/content/popups/popup_unsaved_changes.hpp @@ -12,7 +12,7 @@ namespace hex::plugin::builtin { class PopupUnsavedChanges : public Popup { public: PopupUnsavedChanges(std::string message, std::function yesFunction, std::function noFunction) - : hex::Popup("hex.builtin.common.question", false), + : hex::Popup("hex.ui.common.question", false), m_message(std::move(message)), m_yesFunction(std::move(yesFunction)), m_noFunction(std::move(noFunction)) { } @@ -34,13 +34,13 @@ namespace hex::plugin::builtin { auto width = ImGui::GetWindowWidth(); ImGui::SetCursorPosX(width / 9); - if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0))) { + if (ImGui::Button("hex.ui.common.yes"_lang, ImVec2(width / 3, 0))) { m_yesFunction(); this->close(); } ImGui::SameLine(); ImGui::SetCursorPosX(width / 9 * 5); - if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { + if (ImGui::Button("hex.ui.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { m_noFunction(); this->close(); } diff --git a/plugins/builtin/include/content/views/view_pattern_editor.hpp b/plugins/builtin/include/content/views/view_pattern_editor.hpp index 6f0f9f3d5..17486e980 100644 --- a/plugins/builtin/include/content/views/view_pattern_editor.hpp +++ b/plugins/builtin/include/content/views/view_pattern_editor.hpp @@ -82,7 +82,7 @@ namespace hex::plugin::builtin { ImGui::NewLine(); ImGui::TextUnformatted("hex.builtin.view.pattern_editor.accept_pattern.question"_lang); - ImGuiExt::ConfirmButtons("hex.builtin.common.yes"_lang, "hex.builtin.common.no"_lang, + ImGuiExt::ConfirmButtons("hex.ui.common.yes"_lang, "hex.ui.common.no"_lang, [this, provider] { m_view->loadPatternFile(m_view->m_possiblePatternFiles.get(provider)[m_selectedPatternFile], provider); this->close(); diff --git a/plugins/builtin/romfs/auto_extract/workspaces/default.hexws b/plugins/builtin/romfs/auto_extract/workspaces/default.hexws index ebef94e7e..7083966c8 100644 --- a/plugins/builtin/romfs/auto_extract/workspaces/default.hexws +++ b/plugins/builtin/romfs/auto_extract/workspaces/default.hexws @@ -1,4 +1,4 @@ { - "layout": "[Window][ImHexDockSpace]\nPos=0,19\nSize=1393,765\nCollapsed=0\n\n[Window][Debug##Default]\nPos=0,55\nSize=400,400\nCollapsed=0\n\n[Window][###hex.builtin.view.settings.name]\nPos=346,191\nSize=700,400\nCollapsed=0\n\n[Window][Question]\nPos=496,338\nSize=400,105\nCollapsed=0\n\n[Window][Welcome Screen]\nPos=0,37\nSize=1393,728\nCollapsed=0\n\n[Window][###hex.builtin.view.hex_editor.name]\nPos=0,38\nSize=619,468\nCollapsed=0\nDockId=0x00000007,0\n\n[Window][###hex.builtin.view.data_inspector.name]\nPos=621,38\nSize=124,468\nCollapsed=0\nDockId=0x00000008,0\n\n[Window][###hex.builtin.view.pattern_data.name]\nPos=0,508\nSize=745,252\nCollapsed=0\nDockId=0x00000006,0\n\n[Window][###hex.builtin.view.pattern_editor.name]\nPos=747,38\nSize=646,722\nCollapsed=0\nDockId=0x00000009,0\n\n[Window][###hex.builtin.view.hashes.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000009,4\n\n[Window][###hex.builtin.view.find.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000009,3\n\n[Window][###hex.builtin.view.bookmarks.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000009,2\n\n[Window][###hex.builtin.view.information.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.builtin.view.yara.name]\nPos=720,38\nSize=560,660\nCollapsed=0\n\n[Window][###hex.builtin.view.store.name]\nViewportPos=564,236\nViewportId=0xB51F9C4A\nSize=900,700\nCollapsed=0\n\n[Window][###hex.builtin.view.diff.name]\nPos=1372,38\nSize=1188,1333\nCollapsed=0\nDockId=0x00000009,1\n\n[Window][###hex.builtin.view.provider_settings.load_popup]\nPos=585,322\nSize=314,208\nCollapsed=0\n\n[Window][###hex.builtin.view.patches.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.builtin.view.data_processor.name]\nPos=747,38\nSize=646,722\nCollapsed=0\nDockId=0x00000009,1\n\n[Window][###hex.builtin.view.tools.name]\nPos=849,268\nSize=431,430\nCollapsed=0\nDockId=0x0000000A,0\n\n[Window][###hex.builtin.view.theme_manager.name]\nPos=391,302\nSize=469,400\nCollapsed=0\n\n[Window][###hex.builtin.tools.invariant_multiplication]\nPos=-1826,300\nSize=600,232\nCollapsed=0\n\n[Window][###hex.builtin.tools.regex_replacer]\nPos=-2091,104\nSize=600,305\nCollapsed=0\n\n[Window][###hex.builtin.tools.calc]\nPos=-1811,118\nSize=600,402\nCollapsed=0\n\n[Window][###hex.builtin.tools.permissions]\nPos=423,296\nSize=600,220\nCollapsed=0\n\n[Window][###hex.builtin.view.help.about.name]\nPos=377,193\nSize=677,400\nCollapsed=0\n\n[Window][###hex.builtin.view.constants.name]\nPos=419,-124\nSize=652,660\nCollapsed=0\n\n[Window][###hex.builtin.view.disassembler.name]\nPos=1004,-204\nSize=1336,1320\nCollapsed=0\n\n[Window][##achievement_unlocked]\nPos=1093,0\nSize=200,55\nCollapsed=0\n\n[Window][hex.builtin.popup.blocking_task.title]\nPos=506,305\nSize=20,40\nCollapsed=0\n\n[Window][Waiting for Tasks]\nPos=60,60\nSize=16,35\nCollapsed=0\n\n[Window][Restore lost data]\nPos=555,349\nSize=283,84\nCollapsed=0\n\n[Window][Error]\nPos=440,301\nSize=400,118\nCollapsed=0\n\n[Window][###hex.builtin.view.highlight_rules.name]\nViewportPos=724,217\nViewportId=0x31C07F88\nSize=700,400\nCollapsed=0\n\n[Window][SideBarWindow]\nPos=19,37\nSize=660,1345\nCollapsed=0\n\n[Window][SideBarWindow/##Content_53A061AE]\nIsChild=1\nSize=644,1329\n\n[Window][Choose file]\nPos=382,131\nSize=516,458\nCollapsed=0\n\n[Window][###hex.builtin.view.logs.name]\nPos=60,60\nSize=549,466\nCollapsed=0\n\n[Window][###hex.builtin.view.achievements.name]\nPos=60,60\nSize=800,600\nCollapsed=0\n\n[Window][hex.builtin.welcome.start.recent.auto_backups]\nPos=580,365\nSize=233,52\nCollapsed=0\n\n[Window][Auto Backups]\nPos=580,331\nSize=233,120\nCollapsed=0\n\n[Window][hex.builtin.popup.create_workspace.title]\nPos=496,325\nSize=400,132\nCollapsed=0\n\n[Table][0x6A4694E4,3]\nRefScale=13\nColumn 0 Sort=0v\n\n[Table][0x7EE28D79,8]\nRefScale=13\nColumn 0 Width=13\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\nColumn 3 Weight=1.0000 Sort=0v\nColumn 4 Weight=1.0000\nColumn 5 Weight=1.0000\nColumn 6 Weight=1.0000\nColumn 7 Weight=1.0000\n\n[Table][0x6190819E,3]\nColumn 0 Weight=1.0000\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\n\n[Docking][Data]\nDockSpace ID=0x81A8BB71 Window=0xF9B0A590 Pos=225,133 Size=1393,722 Split=X\n DockNode ID=0x00000001 Parent=0x81A8BB71 SizeRef=1370,0 Split=Y\n DockNode ID=0x00000005 Parent=0x00000001 SizeRef=0,825 Split=X Selected=0x5708C63F\n DockNode ID=0x00000007 Parent=0x00000005 SizeRef=1140,701 Selected=0x5708C63F\n DockNode ID=0x00000008 Parent=0x00000005 SizeRef=228,701 Selected=0xFBA7A393\n DockNode ID=0x00000006 Parent=0x00000001 SizeRef=0,444 Selected=0x7AD1CDDD\n DockNode ID=0x00000002 Parent=0x81A8BB71 SizeRef=1188,0 Split=X\n DockNode ID=0x00000003 Parent=0x00000002 SizeRef=12,0\n DockNode ID=0x00000004 Parent=0x00000002 SizeRef=52,0 Split=Y Selected=0xCACA884B\n DockNode ID=0x00000009 Parent=0x00000004 SizeRef=420,228 Selected=0xCACA884B\n DockNode ID=0x0000000A Parent=0x00000004 SizeRef=420,430 Selected=0x1F041AD3\n\n[ImHex][General]\nhex.builtin.view.achievements.name=0\nhex.builtin.view.bookmarks.name=0\nhex.builtin.view.command_palette.name=0\nhex.builtin.view.constants.name=0\nhex.builtin.view.data_inspector.name=1\nhex.builtin.view.data_processor.name=1\nhex.builtin.view.diff.name=0\nhex.builtin.view.disassembler.name=0\nhex.builtin.view.find.name=0\nhex.builtin.view.hashes.name=0\nhex.builtin.view.help.about.name=0\nhex.builtin.view.hex_editor.name=1\nhex.builtin.view.highlight_rules.name=0\nhex.builtin.view.information.name=0\nhex.builtin.view.logs.name=0\nhex.builtin.view.patches.name=0\nhex.builtin.view.pattern_data.name=1\nhex.builtin.view.pattern_editor.name=1\nhex.builtin.view.provider_settings.name=0\nhex.builtin.view.settings.name=0\nhex.builtin.view.store.name=0\nhex.builtin.view.theme_manager.name=0\nhex.builtin.view.tools.name=0\nhex.builtin.view.yara.name=0\nhex.windows.view.tty_console.name=0\nhex.builtin.tools.demangler=0\nhex.builtin.tools.ascii_table=0\nhex.builtin.tools.regex_replacer=0\nhex.builtin.tools.color=0\nhex.builtin.tools.calc=0\nhex.builtin.tools.graphing=0\nhex.builtin.tools.base_converter=0\nhex.builtin.tools.byte_swapper=0\nhex.builtin.tools.permissions=0\nhex.builtin.tools.wiki_explain=0\nhex.builtin.tools.file_tools=0\nhex.builtin.tools.ieee754=0\nhex.builtin.tools.invariant_multiplication=0\nhex.builtin.tools.tcp_client_server=0\nhex.builtin.tools.euclidean_algorithm=0\n\n", + "layout": "[Window][ImHexDockSpace]\nPos=0,19\nSize=1393,765\nCollapsed=0\n\n[Window][Debug##Default]\nPos=0,55\nSize=400,400\nCollapsed=0\n\n[Window][###hex.builtin.view.settings.name]\nPos=346,191\nSize=700,400\nCollapsed=0\n\n[Window][Question]\nPos=496,338\nSize=400,105\nCollapsed=0\n\n[Window][Welcome Screen]\nPos=0,37\nSize=1393,728\nCollapsed=0\n\n[Window][###hex.builtin.view.hex_editor.name]\nPos=0,38\nSize=619,468\nCollapsed=0\nDockId=0x00000007,0\n\n[Window][###hex.builtin.view.data_inspector.name]\nPos=621,38\nSize=124,468\nCollapsed=0\nDockId=0x00000008,0\n\n[Window][###hex.builtin.view.pattern_data.name]\nPos=0,508\nSize=745,252\nCollapsed=0\nDockId=0x00000006,0\n\n[Window][###hex.builtin.view.pattern_editor.name]\nPos=747,38\nSize=646,722\nCollapsed=0\nDockId=0x00000009,0\n\n[Window][###hex.builtin.view.hashes.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000009,4\n\n[Window][###hex.builtin.view.find.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000009,3\n\n[Window][###hex.builtin.view.bookmarks.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000009,2\n\n[Window][###hex.builtin.view.information.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.yara_rules.view.yara.name]\nPos=720,38\nSize=560,660\nCollapsed=0\n\n[Window][###hex.builtin.view.store.name]\nViewportPos=564,236\nViewportId=0xB51F9C4A\nSize=900,700\nCollapsed=0\n\n[Window][###hex.builtin.view.diff.name]\nPos=1372,38\nSize=1188,1333\nCollapsed=0\nDockId=0x00000009,1\n\n[Window][###hex.builtin.view.provider_settings.load_popup]\nPos=585,322\nSize=314,208\nCollapsed=0\n\n[Window][###hex.builtin.view.patches.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.builtin.view.data_processor.name]\nPos=747,38\nSize=646,722\nCollapsed=0\nDockId=0x00000009,1\n\n[Window][###hex.builtin.view.tools.name]\nPos=849,268\nSize=431,430\nCollapsed=0\nDockId=0x0000000A,0\n\n[Window][###hex.builtin.view.theme_manager.name]\nPos=391,302\nSize=469,400\nCollapsed=0\n\n[Window][###hex.builtin.tools.invariant_multiplication]\nPos=-1826,300\nSize=600,232\nCollapsed=0\n\n[Window][###hex.builtin.tools.regex_replacer]\nPos=-2091,104\nSize=600,305\nCollapsed=0\n\n[Window][###hex.builtin.tools.calc]\nPos=-1811,118\nSize=600,402\nCollapsed=0\n\n[Window][###hex.builtin.tools.permissions]\nPos=423,296\nSize=600,220\nCollapsed=0\n\n[Window][###hex.builtin.view.help.about.name]\nPos=377,193\nSize=677,400\nCollapsed=0\n\n[Window][###hex.builtin.view.constants.name]\nPos=419,-124\nSize=652,660\nCollapsed=0\n\n[Window][###hex.disassembler.view.disassembler.name]\nPos=1004,-204\nSize=1336,1320\nCollapsed=0\n\n[Window][##achievement_unlocked]\nPos=1093,0\nSize=200,55\nCollapsed=0\n\n[Window][hex.builtin.popup.blocking_task.title]\nPos=506,305\nSize=20,40\nCollapsed=0\n\n[Window][Waiting for Tasks]\nPos=60,60\nSize=16,35\nCollapsed=0\n\n[Window][Restore lost data]\nPos=555,349\nSize=283,84\nCollapsed=0\n\n[Window][Error]\nPos=440,301\nSize=400,118\nCollapsed=0\n\n[Window][###hex.builtin.view.highlight_rules.name]\nViewportPos=724,217\nViewportId=0x31C07F88\nSize=700,400\nCollapsed=0\n\n[Window][SideBarWindow]\nPos=19,37\nSize=660,1345\nCollapsed=0\n\n[Window][SideBarWindow/##Content_53A061AE]\nIsChild=1\nSize=644,1329\n\n[Window][Choose file]\nPos=382,131\nSize=516,458\nCollapsed=0\n\n[Window][###hex.builtin.view.logs.name]\nPos=60,60\nSize=549,466\nCollapsed=0\n\n[Window][###hex.builtin.view.achievements.name]\nPos=60,60\nSize=800,600\nCollapsed=0\n\n[Window][hex.builtin.welcome.start.recent.auto_backups]\nPos=580,365\nSize=233,52\nCollapsed=0\n\n[Window][Auto Backups]\nPos=580,331\nSize=233,120\nCollapsed=0\n\n[Window][hex.builtin.popup.create_workspace.title]\nPos=496,325\nSize=400,132\nCollapsed=0\n\n[Table][0x6A4694E4,3]\nRefScale=13\nColumn 0 Sort=0v\n\n[Table][0x7EE28D79,8]\nRefScale=13\nColumn 0 Width=13\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\nColumn 3 Weight=1.0000 Sort=0v\nColumn 4 Weight=1.0000\nColumn 5 Weight=1.0000\nColumn 6 Weight=1.0000\nColumn 7 Weight=1.0000\n\n[Table][0x6190819E,3]\nColumn 0 Weight=1.0000\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\n\n[Docking][Data]\nDockSpace ID=0x81A8BB71 Window=0xF9B0A590 Pos=225,133 Size=1393,722 Split=X\n DockNode ID=0x00000001 Parent=0x81A8BB71 SizeRef=1370,0 Split=Y\n DockNode ID=0x00000005 Parent=0x00000001 SizeRef=0,825 Split=X Selected=0x5708C63F\n DockNode ID=0x00000007 Parent=0x00000005 SizeRef=1140,701 Selected=0x5708C63F\n DockNode ID=0x00000008 Parent=0x00000005 SizeRef=228,701 Selected=0xFBA7A393\n DockNode ID=0x00000006 Parent=0x00000001 SizeRef=0,444 Selected=0x7AD1CDDD\n DockNode ID=0x00000002 Parent=0x81A8BB71 SizeRef=1188,0 Split=X\n DockNode ID=0x00000003 Parent=0x00000002 SizeRef=12,0\n DockNode ID=0x00000004 Parent=0x00000002 SizeRef=52,0 Split=Y Selected=0xCACA884B\n DockNode ID=0x00000009 Parent=0x00000004 SizeRef=420,228 Selected=0xCACA884B\n DockNode ID=0x0000000A Parent=0x00000004 SizeRef=420,430 Selected=0x1F041AD3\n\n[ImHex][General]\nhex.builtin.view.achievements.name=0\nhex.builtin.view.bookmarks.name=0\nhex.builtin.view.command_palette.name=0\nhex.builtin.view.constants.name=0\nhex.builtin.view.data_inspector.name=1\nhex.builtin.view.data_processor.name=1\nhex.builtin.view.diff.name=0\nhex.disassembler.view.disassembler.name=0\nhex.builtin.view.find.name=0\nhex.builtin.view.hashes.name=0\nhex.builtin.view.help.about.name=0\nhex.builtin.view.hex_editor.name=1\nhex.builtin.view.highlight_rules.name=0\nhex.builtin.view.information.name=0\nhex.builtin.view.logs.name=0\nhex.builtin.view.patches.name=0\nhex.builtin.view.pattern_data.name=1\nhex.builtin.view.pattern_editor.name=1\nhex.builtin.view.provider_settings.name=0\nhex.builtin.view.settings.name=0\nhex.builtin.view.store.name=0\nhex.builtin.view.theme_manager.name=0\nhex.builtin.view.tools.name=0\nhex.yara_rules.view.yara.name=0\nhex.windows.view.tty_console.name=0\nhex.builtin.tools.demangler=0\nhex.builtin.tools.ascii_table=0\nhex.builtin.tools.regex_replacer=0\nhex.builtin.tools.color=0\nhex.builtin.tools.calc=0\nhex.builtin.tools.graphing=0\nhex.builtin.tools.base_converter=0\nhex.builtin.tools.byte_swapper=0\nhex.builtin.tools.permissions=0\nhex.builtin.tools.wiki_explain=0\nhex.builtin.tools.file_tools=0\nhex.builtin.tools.ieee754=0\nhex.builtin.tools.invariant_multiplication=0\nhex.builtin.tools.tcp_client_server=0\nhex.builtin.tools.euclidean_algorithm=0\n\n", "name": "Default" } \ No newline at end of file diff --git a/plugins/builtin/romfs/auto_extract/workspaces/minimal.hexws b/plugins/builtin/romfs/auto_extract/workspaces/minimal.hexws index caa50e10b..6d9623985 100644 --- a/plugins/builtin/romfs/auto_extract/workspaces/minimal.hexws +++ b/plugins/builtin/romfs/auto_extract/workspaces/minimal.hexws @@ -1,4 +1,4 @@ { - "layout": "[Window][ImHexDockSpace]\nPos=0,19\nSize=600,783\nCollapsed=0\n\n[Window][Debug##Default]\nPos=0,55\nSize=400,400\nCollapsed=0\n\n[Window][###hex.builtin.view.settings.name]\nPos=259,200\nSize=700,400\nCollapsed=0\n\n[Window][Question]\nPos=496,338\nSize=400,105\nCollapsed=0\n\n[Window][Welcome Screen]\nPos=0,37\nSize=1393,728\nCollapsed=0\n\n[Window][###hex.builtin.view.hex_editor.name]\nPos=0,38\nSize=600,740\nCollapsed=0\nDockId=0x00000007,0\n\n[Window][###hex.builtin.view.data_inspector.name]\nPos=1142,76\nSize=553,980\nCollapsed=0\nDockId=0x00000008,0\n\n[Window][###hex.builtin.view.pattern_data.name]\nPos=0,1058\nSize=1695,445\nCollapsed=0\nDockId=0x00000006,0\n\n[Window][###hex.builtin.view.pattern_editor.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,0\n\n[Window][###hex.builtin.view.hashes.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,4\n\n[Window][###hex.builtin.view.find.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,3\n\n[Window][###hex.builtin.view.bookmarks.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,2\n\n[Window][###hex.builtin.view.information.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.builtin.view.yara.name]\nPos=720,38\nSize=560,660\nCollapsed=0\n\n[Window][###hex.builtin.view.store.name]\nPos=562,201\nSize=900,700\nCollapsed=0\n\n[Window][###hex.builtin.view.diff.name]\nPos=1233,38\nSize=687,1021\nCollapsed=0\n\n[Window][###hex.builtin.view.provider_settings.load_popup]\nPos=585,322\nSize=314,208\nCollapsed=0\n\n[Window][###hex.builtin.view.patches.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.builtin.view.data_processor.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,1\n\n[Window][###hex.builtin.view.tools.name]\nViewportPos=952,218\nViewportId=0x9B385D8A\nSize=1306,1600\nCollapsed=0\n\n[Window][###hex.builtin.view.theme_manager.name]\nPos=391,302\nSize=469,400\nCollapsed=0\n\n[Window][###hex.builtin.tools.invariant_multiplication]\nPos=-1826,300\nSize=600,232\nCollapsed=0\n\n[Window][###hex.builtin.tools.regex_replacer]\nPos=-2091,104\nSize=600,305\nCollapsed=0\n\n[Window][###hex.builtin.tools.calc]\nPos=-1811,118\nSize=600,402\nCollapsed=0\n\n[Window][###hex.builtin.tools.permissions]\nPos=423,296\nSize=600,220\nCollapsed=0\n\n[Window][###hex.builtin.view.help.about.name]\nPos=214,201\nSize=600,350\nCollapsed=0\n\n[Window][###hex.builtin.view.constants.name]\nPos=419,-124\nSize=652,660\nCollapsed=0\n\n[Window][###hex.builtin.view.disassembler.name]\nPos=1004,-204\nSize=1336,1320\nCollapsed=0\n\n[Window][##achievement_unlocked]\nPos=1093,0\nSize=200,55\nCollapsed=0\n\n[Window][hex.builtin.popup.blocking_task.title]\nPos=506,305\nSize=20,40\nCollapsed=0\n\n[Window][Waiting for Tasks]\nPos=60,60\nSize=16,35\nCollapsed=0\n\n[Window][Restore lost data]\nPos=555,349\nSize=283,84\nCollapsed=0\n\n[Window][Error]\nPos=440,301\nSize=400,118\nCollapsed=0\n\n[Window][###hex.builtin.view.highlight_rules.name]\nViewportPos=724,217\nViewportId=0x31C07F88\nSize=700,400\nCollapsed=0\n\n[Window][SideBarWindow]\nPos=19,37\nSize=660,1345\nCollapsed=0\n\n[Window][SideBarWindow/##Content_53A061AE]\nIsChild=1\nSize=644,1329\n\n[Window][Choose file]\nPos=382,131\nSize=516,458\nCollapsed=0\n\n[Window][###hex.builtin.view.logs.name]\nPos=60,60\nSize=549,466\nCollapsed=0\n\n[Window][###hex.builtin.view.achievements.name]\nPos=60,60\nSize=800,600\nCollapsed=0\n\n[Window][hex.builtin.welcome.start.recent.auto_backups]\nPos=580,365\nSize=233,52\nCollapsed=0\n\n[Window][Auto Backups]\nPos=580,331\nSize=233,120\nCollapsed=0\n\n[Window][hex.builtin.popup.create_workspace.title]\nPos=100,334\nSize=400,132\nCollapsed=0\n\n[Table][0x6A4694E4,3]\nRefScale=13\nColumn 0 Sort=0v\n\n[Table][0x7EE28D79,8]\nRefScale=13\nColumn 0 Width=13\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\nColumn 3 Weight=1.0000 Sort=0v\nColumn 4 Weight=1.0000\nColumn 5 Weight=1.0000\nColumn 6 Weight=1.0000\nColumn 7 Weight=1.0000\n\n[Table][0x6190819E,3]\nColumn 0 Weight=1.0000\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\n\n[Docking][Data]\nDockSpace ID=0x81A8BB71 Window=0xF9B0A590 Pos=220,131 Size=600,740 Split=X\n DockNode ID=0x00000001 Parent=0x81A8BB71 SizeRef=847,0 Split=Y\n DockNode ID=0x00000005 Parent=0x00000001 SizeRef=0,44 Split=X Selected=0x5708C63F\n DockNode ID=0x00000007 Parent=0x00000005 SizeRef=1140,701 Selected=0x5708C63F\n DockNode ID=0x00000008 Parent=0x00000005 SizeRef=553,701 Selected=0xFBA7A393\n DockNode ID=0x00000006 Parent=0x00000001 SizeRef=0,20 Selected=0x7AD1CDDD\n DockNode ID=0x00000002 Parent=0x81A8BB71 SizeRef=431,0 Split=X\n DockNode ID=0x00000003 Parent=0x00000002 SizeRef=12,0\n DockNode ID=0x00000004 Parent=0x00000002 SizeRef=52,0 Selected=0xCACA884B\n\n[ImHex][General]\nhex.builtin.view.achievements.name=0\nhex.builtin.view.bookmarks.name=0\nhex.builtin.view.command_palette.name=0\nhex.builtin.view.constants.name=0\nhex.builtin.view.data_inspector.name=0\nhex.builtin.view.data_processor.name=0\nhex.builtin.view.diff.name=0\nhex.builtin.view.disassembler.name=0\nhex.builtin.view.find.name=0\nhex.builtin.view.hashes.name=0\nhex.builtin.view.help.about.name=0\nhex.builtin.view.hex_editor.name=1\nhex.builtin.view.highlight_rules.name=0\nhex.builtin.view.information.name=0\nhex.builtin.view.logs.name=0\nhex.builtin.view.patches.name=0\nhex.builtin.view.pattern_data.name=0\nhex.builtin.view.pattern_editor.name=0\nhex.builtin.view.provider_settings.name=0\nhex.builtin.view.settings.name=0\nhex.builtin.view.store.name=0\nhex.builtin.view.theme_manager.name=0\nhex.builtin.view.tools.name=0\nhex.builtin.view.yara.name=0\nhex.windows.view.tty_console.name=0\nhex.builtin.tools.demangler=0\nhex.builtin.tools.ascii_table=0\nhex.builtin.tools.regex_replacer=0\nhex.builtin.tools.color=0\nhex.builtin.tools.calc=0\nhex.builtin.tools.graphing=0\nhex.builtin.tools.base_converter=0\nhex.builtin.tools.byte_swapper=0\nhex.builtin.tools.permissions=0\nhex.builtin.tools.wiki_explain=0\nhex.builtin.tools.file_tools=0\nhex.builtin.tools.ieee754=0\nhex.builtin.tools.invariant_multiplication=0\nhex.builtin.tools.tcp_client_server=0\nhex.builtin.tools.euclidean_algorithm=0\n\n", + "layout": "[Window][ImHexDockSpace]\nPos=0,19\nSize=600,783\nCollapsed=0\n\n[Window][Debug##Default]\nPos=0,55\nSize=400,400\nCollapsed=0\n\n[Window][###hex.builtin.view.settings.name]\nPos=259,200\nSize=700,400\nCollapsed=0\n\n[Window][Question]\nPos=496,338\nSize=400,105\nCollapsed=0\n\n[Window][Welcome Screen]\nPos=0,37\nSize=1393,728\nCollapsed=0\n\n[Window][###hex.builtin.view.hex_editor.name]\nPos=0,38\nSize=600,740\nCollapsed=0\nDockId=0x00000007,0\n\n[Window][###hex.builtin.view.data_inspector.name]\nPos=1142,76\nSize=553,980\nCollapsed=0\nDockId=0x00000008,0\n\n[Window][###hex.builtin.view.pattern_data.name]\nPos=0,1058\nSize=1695,445\nCollapsed=0\nDockId=0x00000006,0\n\n[Window][###hex.builtin.view.pattern_editor.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,0\n\n[Window][###hex.builtin.view.hashes.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,4\n\n[Window][###hex.builtin.view.find.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,3\n\n[Window][###hex.builtin.view.bookmarks.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,2\n\n[Window][###hex.builtin.view.information.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.yara_rules.view.yara.name]\nPos=720,38\nSize=560,660\nCollapsed=0\n\n[Window][###hex.builtin.view.store.name]\nPos=562,201\nSize=900,700\nCollapsed=0\n\n[Window][###hex.builtin.view.diff.name]\nPos=1233,38\nSize=687,1021\nCollapsed=0\n\n[Window][###hex.builtin.view.provider_settings.load_popup]\nPos=585,322\nSize=314,208\nCollapsed=0\n\n[Window][###hex.builtin.view.patches.name]\nPos=-1889,-120\nSize=510,420\nCollapsed=0\n\n[Window][###hex.builtin.view.data_processor.name]\nPos=1697,76\nSize=863,1427\nCollapsed=0\nDockId=0x00000004,1\n\n[Window][###hex.builtin.view.tools.name]\nViewportPos=952,218\nViewportId=0x9B385D8A\nSize=1306,1600\nCollapsed=0\n\n[Window][###hex.builtin.view.theme_manager.name]\nPos=391,302\nSize=469,400\nCollapsed=0\n\n[Window][###hex.builtin.tools.invariant_multiplication]\nPos=-1826,300\nSize=600,232\nCollapsed=0\n\n[Window][###hex.builtin.tools.regex_replacer]\nPos=-2091,104\nSize=600,305\nCollapsed=0\n\n[Window][###hex.builtin.tools.calc]\nPos=-1811,118\nSize=600,402\nCollapsed=0\n\n[Window][###hex.builtin.tools.permissions]\nPos=423,296\nSize=600,220\nCollapsed=0\n\n[Window][###hex.builtin.view.help.about.name]\nPos=214,201\nSize=600,350\nCollapsed=0\n\n[Window][###hex.builtin.view.constants.name]\nPos=419,-124\nSize=652,660\nCollapsed=0\n\n[Window][###hex.disassembler.view.disassembler.name]\nPos=1004,-204\nSize=1336,1320\nCollapsed=0\n\n[Window][##achievement_unlocked]\nPos=1093,0\nSize=200,55\nCollapsed=0\n\n[Window][hex.builtin.popup.blocking_task.title]\nPos=506,305\nSize=20,40\nCollapsed=0\n\n[Window][Waiting for Tasks]\nPos=60,60\nSize=16,35\nCollapsed=0\n\n[Window][Restore lost data]\nPos=555,349\nSize=283,84\nCollapsed=0\n\n[Window][Error]\nPos=440,301\nSize=400,118\nCollapsed=0\n\n[Window][###hex.builtin.view.highlight_rules.name]\nViewportPos=724,217\nViewportId=0x31C07F88\nSize=700,400\nCollapsed=0\n\n[Window][SideBarWindow]\nPos=19,37\nSize=660,1345\nCollapsed=0\n\n[Window][SideBarWindow/##Content_53A061AE]\nIsChild=1\nSize=644,1329\n\n[Window][Choose file]\nPos=382,131\nSize=516,458\nCollapsed=0\n\n[Window][###hex.builtin.view.logs.name]\nPos=60,60\nSize=549,466\nCollapsed=0\n\n[Window][###hex.builtin.view.achievements.name]\nPos=60,60\nSize=800,600\nCollapsed=0\n\n[Window][hex.builtin.welcome.start.recent.auto_backups]\nPos=580,365\nSize=233,52\nCollapsed=0\n\n[Window][Auto Backups]\nPos=580,331\nSize=233,120\nCollapsed=0\n\n[Window][hex.builtin.popup.create_workspace.title]\nPos=100,334\nSize=400,132\nCollapsed=0\n\n[Table][0x6A4694E4,3]\nRefScale=13\nColumn 0 Sort=0v\n\n[Table][0x7EE28D79,8]\nRefScale=13\nColumn 0 Width=13\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\nColumn 3 Weight=1.0000 Sort=0v\nColumn 4 Weight=1.0000\nColumn 5 Weight=1.0000\nColumn 6 Weight=1.0000\nColumn 7 Weight=1.0000\n\n[Table][0x6190819E,3]\nColumn 0 Weight=1.0000\nColumn 1 Weight=1.0000\nColumn 2 Weight=1.0000\n\n[Docking][Data]\nDockSpace ID=0x81A8BB71 Window=0xF9B0A590 Pos=220,131 Size=600,740 Split=X\n DockNode ID=0x00000001 Parent=0x81A8BB71 SizeRef=847,0 Split=Y\n DockNode ID=0x00000005 Parent=0x00000001 SizeRef=0,44 Split=X Selected=0x5708C63F\n DockNode ID=0x00000007 Parent=0x00000005 SizeRef=1140,701 Selected=0x5708C63F\n DockNode ID=0x00000008 Parent=0x00000005 SizeRef=553,701 Selected=0xFBA7A393\n DockNode ID=0x00000006 Parent=0x00000001 SizeRef=0,20 Selected=0x7AD1CDDD\n DockNode ID=0x00000002 Parent=0x81A8BB71 SizeRef=431,0 Split=X\n DockNode ID=0x00000003 Parent=0x00000002 SizeRef=12,0\n DockNode ID=0x00000004 Parent=0x00000002 SizeRef=52,0 Selected=0xCACA884B\n\n[ImHex][General]\nhex.builtin.view.achievements.name=0\nhex.builtin.view.bookmarks.name=0\nhex.builtin.view.command_palette.name=0\nhex.builtin.view.constants.name=0\nhex.builtin.view.data_inspector.name=0\nhex.builtin.view.data_processor.name=0\nhex.builtin.view.diff.name=0\nhex.disassembler.view.disassembler.name=0\nhex.builtin.view.find.name=0\nhex.builtin.view.hashes.name=0\nhex.builtin.view.help.about.name=0\nhex.builtin.view.hex_editor.name=1\nhex.builtin.view.highlight_rules.name=0\nhex.builtin.view.information.name=0\nhex.builtin.view.logs.name=0\nhex.builtin.view.patches.name=0\nhex.builtin.view.pattern_data.name=0\nhex.builtin.view.pattern_editor.name=0\nhex.builtin.view.provider_settings.name=0\nhex.builtin.view.settings.name=0\nhex.builtin.view.store.name=0\nhex.builtin.view.theme_manager.name=0\nhex.builtin.view.tools.name=0\nhex.yara_rules.view.yara.name=0\nhex.windows.view.tty_console.name=0\nhex.builtin.tools.demangler=0\nhex.builtin.tools.ascii_table=0\nhex.builtin.tools.regex_replacer=0\nhex.builtin.tools.color=0\nhex.builtin.tools.calc=0\nhex.builtin.tools.graphing=0\nhex.builtin.tools.base_converter=0\nhex.builtin.tools.byte_swapper=0\nhex.builtin.tools.permissions=0\nhex.builtin.tools.wiki_explain=0\nhex.builtin.tools.file_tools=0\nhex.builtin.tools.ieee754=0\nhex.builtin.tools.invariant_multiplication=0\nhex.builtin.tools.tcp_client_server=0\nhex.builtin.tools.euclidean_algorithm=0\n\n", "name": "Minimal" } \ No newline at end of file diff --git a/plugins/builtin/romfs/lang/de_DE.json b/plugins/builtin/romfs/lang/de_DE.json index e4ead7f71..065e85853 100644 --- a/plugins/builtin/romfs/lang/de_DE.json +++ b/plugins/builtin/romfs/lang/de_DE.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "Befehl '{0}' ausführen", "hex.builtin.command.web.desc": "Webseite nachschlagen", "hex.builtin.command.web.result": "'{0}' nachschlagen", - "hex.builtin.common.address": "Adresse", - "hex.builtin.common.allow": "Erlauben", - "hex.builtin.common.begin": "Anfangen", - "hex.builtin.common.big": "Big", - "hex.builtin.common.big_endian": "Big Endian", - "hex.builtin.common.browse": "Durchsuchen...", - "hex.builtin.common.bytes": "Bytes", - "hex.builtin.common.cancel": "Abbrechen", - "hex.builtin.common.choose_file": "Datei auswählen", - "hex.builtin.common.close": "Schliessen", - "hex.builtin.common.comment": "Kommentar", - "hex.builtin.common.count": "Anzahl", - "hex.builtin.common.decimal": "Dezimal", - "hex.builtin.common.deny": "Verweigern", - "hex.builtin.common.dont_show_again": "Nicht mehr anzeigen", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "Beenden", - "hex.builtin.common.endian": "Endian", - "hex.builtin.common.warning": "Warnung", - "hex.builtin.common.error": "Fehler", - "hex.builtin.common.fatal": "Fataler Fehler", - "hex.builtin.common.file": "Datei", - "hex.builtin.common.filter": "Filter", - "hex.builtin.common.hexadecimal": "Hexadezimal", - "hex.builtin.common.info": "Information", - "hex.builtin.common.instruction": "Instruktion", - "hex.builtin.common.link": "Link", - "hex.builtin.common.little": "Little", - "hex.builtin.common.little_endian": "Little Endian", - "hex.builtin.common.load": "Laden", - "hex.builtin.common.match_selection": "Arbeitsbereich synchronisieren", - "hex.builtin.common.name": "Name", - "hex.builtin.common.no": "Nein", - "hex.builtin.common.number_format": "Format", - "hex.builtin.common.octal": "Oktal", - "hex.builtin.common.offset": "Offset", - "hex.builtin.common.okay": "Okay", - "hex.builtin.common.open": "Öffnen", - "hex.builtin.common.percentage": "Prozent", - "hex.builtin.common.processing": "Verarbeiten", - "hex.builtin.common.project": "Projekt", - "hex.builtin.common.question": "Frage", - "hex.builtin.common.range": "Bereich", - "hex.builtin.common.range.entire_data": "Gesamte Daten", - "hex.builtin.common.range.selection": "Auswahl", - "hex.builtin.common.region": "Region", - "hex.builtin.common.reset": "Zurücksetzen", - "hex.builtin.common.set": "Setzen", - "hex.builtin.common.settings": "Einstellungen", - "hex.builtin.common.size": "Länge", - "hex.builtin.common.type": "Typ", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "Wert", - "hex.builtin.common.yes": "Ja", "hex.builtin.hash.crc.iv": "Initialwert", "hex.builtin.hash.crc.poly": "Polynom", "hex.builtin.hash.crc.refl_in": "Reflect In", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "ASCII Spalte anzeigen", - "hex.builtin.hex_editor.custom_encoding_view": "Erweiterte Dekodierungsspalte anzeigen", - "hex.builtin.hex_editor.human_readable_units_footer": "", - "hex.builtin.hex_editor.data_size": "Datengrösse", - "hex.builtin.hex_editor.gray_out_zero": "Nullen ausgrauen", - "hex.builtin.hex_editor.no_bytes": "Keine Bytes verfügbar", - "hex.builtin.hex_editor.page": "Seite", - "hex.builtin.hex_editor.region": "Region", - "hex.builtin.hex_editor.selection": "Auswahl", - "hex.builtin.hex_editor.selection.none": "Keine", - "hex.builtin.hex_editor.uppercase_hex": "Hex Zeichen als Grossbuchstaben", - "hex.builtin.hex_editor.visualizer": "Daten Anzeige", "hex.builtin.inspector.ascii": "ASCII Zeichen", "hex.builtin.inspector.binary": "Binär (8 bit)", "hex.builtin.inspector.bool": "bool", @@ -423,31 +341,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 Bild", "hex.builtin.nodes.visualizer.layered_dist": "Schichtverteilung", "hex.builtin.nodes.visualizer.layered_dist.header": "Schichtverteilung", - "hex.builtin.pattern_drawer.color": "Farbe", - "hex.builtin.pattern_drawer.double_click": "Doppelklicken um mehr Einträge zu sehen", - "hex.builtin.pattern_drawer.end": "Ende", - "hex.builtin.pattern_drawer.export": "Pattern exportieren als...", - "hex.builtin.pattern_drawer.favorites": "Favoriten", - "hex.builtin.pattern_drawer.local": "Local", - "hex.builtin.pattern_drawer.size": "Grösse", - "hex.builtin.pattern_drawer.spec_name": "", - "hex.builtin.pattern_drawer.start": "Start", - "hex.builtin.pattern_drawer.tree_style.tree": "Baum", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "Automatisch geöffneter Baum", - "hex.builtin.pattern_drawer.tree_style.flattened": "Flach", - "hex.builtin.pattern_drawer.type": "Typ", - "hex.builtin.pattern_drawer.updating": "", - "hex.builtin.pattern_drawer.value": "Wert", - "hex.builtin.pattern_drawer.var_name": "Name", - "hex.builtin.pattern_drawer.visualizer.unknown": "Unbekannter Visualizer", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "Falsche anzahl Parameter", - "hex.builtin.pl_visualizer.3d.rotation": "Rotation", - "hex.builtin.pl_visualizer.3d.scale": "Skala", - "hex.builtin.pl_visualizer.coordinates.latitude": "Breitengrade", - "hex.builtin.pl_visualizer.coordinates.longitude": "Längengrad", - "hex.builtin.pl_visualizer.coordinates.query": "Adresse finden", - "hex.builtin.pl_visualizer.coordinates.querying": "Adresse abfragen...", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "Keine Adresse gefunden", "hex.builtin.popup.close_provider.desc": "Es wurden ungespeicherte Änderungen an einem oder mehreren Provider vorgenommen.\nBist du sicher, dass du diese schliessen willst?", "hex.builtin.popup.close_provider.title": "Provider schliessen?", "hex.builtin.popup.docs_question.title": "Dokumentationsabfrage", @@ -701,76 +594,6 @@ "hex.builtin.view.diff.provider_a": "", "hex.builtin.view.diff.provider_b": "", "hex.builtin.view.diff.removed": "", - "hex.builtin.view.disassembler.16bit": "16-bit", - "hex.builtin.view.disassembler.32bit": "32-bit", - "hex.builtin.view.disassembler.64bit": "64-bit", - "hex.builtin.view.disassembler.arch": "Architektur", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "Standard", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "Basisadresse", - "hex.builtin.view.disassembler.bpf.classic": "Classic", - "hex.builtin.view.disassembler.bpf.extended": "Extended", - "hex.builtin.view.disassembler.disassemble": "Disassemble", - "hex.builtin.view.disassembler.disassembling": "Disassemblen...", - "hex.builtin.view.disassembler.disassembly.address": "Adresse", - "hex.builtin.view.disassembler.disassembly.bytes": "Byte", - "hex.builtin.view.disassembler.disassembly.offset": "Offset", - "hex.builtin.view.disassembler.disassembly.title": "Disassembly", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "", - "hex.builtin.view.disassembler.sh.sh2a": "", - "hex.builtin.view.disassembler.sh.sh3": "", - "hex.builtin.view.disassembler.sh.sh4": "", - "hex.builtin.view.disassembler.sh.sh4a": "", - "hex.builtin.view.disassembler.sh.fpu": "", - "hex.builtin.view.disassembler.sh.dsp": "", - "hex.builtin.view.disassembler.tricore.110": "", - "hex.builtin.view.disassembler.tricore.120": "", - "hex.builtin.view.disassembler.tricore.130": "", - "hex.builtin.view.disassembler.tricore.131": "", - "hex.builtin.view.disassembler.tricore.160": "", - "hex.builtin.view.disassembler.tricore.161": "", - "hex.builtin.view.disassembler.tricore.162": "", - "hex.builtin.view.disassembler.name": "Disassembler", - "hex.builtin.view.disassembler.position": "Position", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions", - "hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine", - "hex.builtin.view.disassembler.region": "Code Region", - "hex.builtin.view.disassembler.riscv.compressed": "Komprimiert", - "hex.builtin.view.disassembler.settings.mode": "Modus", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "Binärpattern", "hex.builtin.view.find.binary_pattern.alignment": "", "hex.builtin.view.find.context.copy": "Wert kopieren", @@ -981,19 +804,6 @@ "hex.builtin.view.theme_manager.save_theme": "", "hex.builtin.view.theme_manager.styles": "", "hex.builtin.view.tools.name": "Werkzeuge", - "hex.builtin.view.yara.error": "Yara Kompilerfehler: {0}", - "hex.builtin.view.yara.header.matches": "Treffer", - "hex.builtin.view.yara.header.rules": "Regeln", - "hex.builtin.view.yara.match": "Regeln anwenden", - "hex.builtin.view.yara.matches.identifier": "Kennung", - "hex.builtin.view.yara.matches.variable": "Variable", - "hex.builtin.view.yara.matching": "Anwenden...", - "hex.builtin.view.yara.name": "Yara Regeln", - "hex.builtin.view.yara.no_rules": "Keine Yara Regeln gefunden. Platziere sie in ImHex's 'yara' Ordner", - "hex.builtin.view.yara.reload": "Neu laden", - "hex.builtin.view.yara.reset": "Zurücksetzen", - "hex.builtin.view.yara.rule_added": "Yara Regel hinzugefügt!", - "hex.builtin.view.yara.whole_data": "Gesamte Daten Übereinstimmung!", "hex.builtin.visualizer.binary": "", "hex.builtin.visualizer.decimal.signed.16bit": "Dezimal Signed (16 bits)", "hex.builtin.visualizer.decimal.signed.32bit": "Dezimal Signed (32 bits)", diff --git a/plugins/builtin/romfs/lang/en_US.json b/plugins/builtin/romfs/lang/en_US.json index 6feec69b0..d3eab0467 100644 --- a/plugins/builtin/romfs/lang/en_US.json +++ b/plugins/builtin/romfs/lang/en_US.json @@ -75,82 +75,6 @@ "hex.builtin.command.cmd.result": "Run command '{0}'", "hex.builtin.command.web.desc": "Website lookup", "hex.builtin.command.web.result": "Navigate to '{0}'", - "hex.builtin.common.address": "Address", - "hex.builtin.common.allow": "Allow", - "hex.builtin.common.begin": "Begin", - "hex.builtin.common.big": "Big", - "hex.builtin.common.big_endian": "Big Endian", - "hex.builtin.common.browse": "Browse...", - "hex.builtin.common.bytes": "Bytes", - "hex.builtin.common.cancel": "Cancel", - "hex.builtin.common.choose_file": "Choose file", - "hex.builtin.common.close": "Close", - "hex.builtin.common.comment": "Comment", - "hex.builtin.common.count": "Count", - "hex.builtin.common.decimal": "Decimal", - "hex.builtin.common.deny": "Deny", - "hex.builtin.common.dont_show_again": "Don't show again", - "hex.builtin.common.edit": "Edit", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "End", - "hex.builtin.common.endian": "Endian", - "hex.builtin.common.warning": "Warning", - "hex.builtin.common.error": "Error", - "hex.builtin.common.fatal": "Fatal Error", - "hex.builtin.common.file": "File", - "hex.builtin.common.filter": "Filter", - "hex.builtin.common.hexadecimal": "Hexadecimal", - "hex.builtin.common.info": "Information", - "hex.builtin.common.instruction": "Instruction", - "hex.builtin.common.link": "Link", - "hex.builtin.common.little": "Little", - "hex.builtin.common.little_endian": "Little Endian", - "hex.builtin.common.load": "Load", - "hex.builtin.common.loading": "Loading...", - "hex.builtin.common.match_selection": "Match Selection", - "hex.builtin.common.name": "Name", - "hex.builtin.common.no": "No", - "hex.builtin.common.number_format": "Format", - "hex.builtin.common.octal": "Octal", - "hex.builtin.common.offset": "Offset", - "hex.builtin.common.okay": "Okay", - "hex.builtin.common.open": "Open", - "hex.builtin.common.on": "On", - "hex.builtin.common.off": "Off", - "hex.builtin.common.path": "Path", - "hex.builtin.common.percentage": "Percentage", - "hex.builtin.common.processing": "Processing", - "hex.builtin.common.project": "Project", - "hex.builtin.common.question": "Question", - "hex.builtin.common.range": "Range", - "hex.builtin.common.range.entire_data": "Entire Data", - "hex.builtin.common.range.selection": "Selection", - "hex.builtin.common.region": "Region", - "hex.builtin.common.remove": "Remove", - "hex.builtin.common.reset": "Reset", - "hex.builtin.common.set": "Set", - "hex.builtin.common.settings": "Settings", - "hex.builtin.common.size": "Size", - "hex.builtin.common.type": "Type", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "Value", - "hex.builtin.common.yes": "Yes", "hex.builtin.hash.crc.iv": "Initial Value", "hex.builtin.hash.crc.poly": "Polynomial", "hex.builtin.hash.crc.refl_in": "Reflect In", @@ -168,18 +92,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "Display ASCII column", - "hex.builtin.hex_editor.custom_encoding_view": "Display advanced decoding column", - "hex.builtin.hex_editor.human_readable_units_footer": "Convert sizes to human-readable units", - "hex.builtin.hex_editor.data_size": "Data Size", - "hex.builtin.hex_editor.gray_out_zero": "Grey out zeros", - "hex.builtin.hex_editor.no_bytes": "No bytes available", - "hex.builtin.hex_editor.page": "Page", - "hex.builtin.hex_editor.region": "Region", - "hex.builtin.hex_editor.selection": "Selection", - "hex.builtin.hex_editor.selection.none": "None", - "hex.builtin.hex_editor.uppercase_hex": "Upper case Hex characters", - "hex.builtin.hex_editor.visualizer": "Data visualizer", "hex.builtin.inspector.ascii": "ASCII Character", "hex.builtin.inspector.binary": "Binary (8 bit)", "hex.builtin.inspector.bool": "bool", @@ -453,37 +365,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 Image Visualizer", "hex.builtin.nodes.visualizer.layered_dist": "Layered Distribution", "hex.builtin.nodes.visualizer.layered_dist.header": "Layered Distribution", - "hex.builtin.pattern_drawer.color": "Color", - "hex.builtin.pattern_drawer.double_click": "Double-click to see more items", - "hex.builtin.pattern_drawer.end": "End", - "hex.builtin.pattern_drawer.export": "Export Patterns as...", - "hex.builtin.pattern_drawer.favorites": "Favorites", - "hex.builtin.pattern_drawer.local": "Local", - "hex.builtin.pattern_drawer.size": "Size", - "hex.builtin.pattern_drawer.spec_name": "Display specification names", - "hex.builtin.pattern_drawer.start": "Start", - "hex.builtin.pattern_drawer.tree_style.tree": "Tree", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "Auto Expanded Tree", - "hex.builtin.pattern_drawer.tree_style.flattened": "Flattened", - "hex.builtin.pattern_drawer.type": "Type", - "hex.builtin.pattern_drawer.updating": "Updating patterns...", - "hex.builtin.pattern_drawer.value": "Value", - "hex.builtin.pattern_drawer.var_name": "Name", - "hex.builtin.pattern_drawer.visualizer.unknown": "Unknown visualizer", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "Invalid parameter count", - "hex.builtin.pl_visualizer.3d.light_position": "Light Position", - "hex.builtin.pl_visualizer.3d.ambient_brightness": "Ambient Brightness", - "hex.builtin.pl_visualizer.3d.diffuse_brightness": "Diffuse Brightness", - "hex.builtin.pl_visualizer.3d.specular_brightness": "Specular Brightness", - "hex.builtin.pl_visualizer.3d.object_reflectiveness": "Object Reflectiveness", - "hex.builtin.pl_visualizer.3d.light_color": "Light Color", - "hex.builtin.pl_visualizer.3d.more_settings": "More Settings", - "hex.builtin.pl_visualizer.3d.texture_file": "Texture File Path", - "hex.builtin.pl_visualizer.coordinates.latitude": "Latitude", - "hex.builtin.pl_visualizer.coordinates.longitude": "Longitude", - "hex.builtin.pl_visualizer.coordinates.query": "Find address", - "hex.builtin.pl_visualizer.coordinates.querying": "Querying address...", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "No address found", "hex.builtin.popup.close_provider.desc": "There are unsaved changes made to one or more Providers\nthat haven't been saved to a Project yet.\n\nAre you sure you want to close them?", "hex.builtin.popup.close_provider.title": "Close Provider?", "hex.builtin.popup.docs_question.title": "Documentation query", @@ -808,76 +689,6 @@ "hex.builtin.view.diff.provider_a": "Provider A", "hex.builtin.view.diff.provider_b": "Provider B", "hex.builtin.view.diff.removed": "Removed", - "hex.builtin.view.disassembler.16bit": "16-bit", - "hex.builtin.view.disassembler.32bit": "32-bit", - "hex.builtin.view.disassembler.64bit": "64-bit", - "hex.builtin.view.disassembler.arch": "Architecture", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "Default", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "Base address", - "hex.builtin.view.disassembler.bpf.classic": "Classic", - "hex.builtin.view.disassembler.bpf.extended": "Extended", - "hex.builtin.view.disassembler.disassemble": "Disassemble", - "hex.builtin.view.disassembler.disassembling": "Disassembling...", - "hex.builtin.view.disassembler.disassembly.address": "Address", - "hex.builtin.view.disassembler.disassembly.bytes": "Byte", - "hex.builtin.view.disassembler.disassembly.offset": "Offset", - "hex.builtin.view.disassembler.disassembly.title": "Disassembly", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "SH2", - "hex.builtin.view.disassembler.sh.sh2a": "SH2A", - "hex.builtin.view.disassembler.sh.sh3": "SH3", - "hex.builtin.view.disassembler.sh.sh4": "SH4", - "hex.builtin.view.disassembler.sh.sh4a": "SH4A", - "hex.builtin.view.disassembler.sh.fpu": "FPU", - "hex.builtin.view.disassembler.sh.dsp": "DSP", - "hex.builtin.view.disassembler.tricore.110": "110", - "hex.builtin.view.disassembler.tricore.120": "120", - "hex.builtin.view.disassembler.tricore.130": "130", - "hex.builtin.view.disassembler.tricore.131": "131", - "hex.builtin.view.disassembler.tricore.160": "160", - "hex.builtin.view.disassembler.tricore.161": "161", - "hex.builtin.view.disassembler.tricore.162": "162", - "hex.builtin.view.disassembler.name": "Disassembler", - "hex.builtin.view.disassembler.position": "Position", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions", - "hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine", - "hex.builtin.view.disassembler.region": "Code region", - "hex.builtin.view.disassembler.riscv.compressed": "Compressed", - "hex.builtin.view.disassembler.settings.mode": "Mode", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "Binary Pattern", "hex.builtin.view.find.binary_pattern.alignment": "Alignment", "hex.builtin.view.find.context.copy": "Copy Value", @@ -1123,19 +934,6 @@ "hex.builtin.view.tutorials.name": "Interactive Tutorials", "hex.builtin.view.tutorials.description": "Description", "hex.builtin.view.tutorials.start": "Start Tutorial", - "hex.builtin.view.yara.error": "Yara Compiler error: {0}", - "hex.builtin.view.yara.header.matches": "Matches", - "hex.builtin.view.yara.header.rules": "Rules", - "hex.builtin.view.yara.match": "Match Rules", - "hex.builtin.view.yara.matches.identifier": "Identifier", - "hex.builtin.view.yara.matches.variable": "Variable", - "hex.builtin.view.yara.matching": "Matching...", - "hex.builtin.view.yara.name": "Yara Rules", - "hex.builtin.view.yara.no_rules": "No YARA rules found. Put them in ImHex's 'yara' folder", - "hex.builtin.view.yara.reload": "Reload", - "hex.builtin.view.yara.reset": "Reset", - "hex.builtin.view.yara.rule_added": "Yara rule added!", - "hex.builtin.view.yara.whole_data": "Whole file matches!", "hex.builtin.visualizer.binary": "Binary", "hex.builtin.visualizer.decimal.signed.16bit": "Decimal Signed (16 bits)", "hex.builtin.visualizer.decimal.signed.32bit": "Decimal Signed (32 bits)", diff --git a/plugins/builtin/romfs/lang/es_ES.json b/plugins/builtin/romfs/lang/es_ES.json index 8a77551b9..2264ed6be 100644 --- a/plugins/builtin/romfs/lang/es_ES.json +++ b/plugins/builtin/romfs/lang/es_ES.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "Ejecutar comando '{0}'", "hex.builtin.command.web.desc": "Búsqueda (de) web", "hex.builtin.command.web.result": "Navegar a '{0}'", - "hex.builtin.common.address": "Dirección", - "hex.builtin.common.allow": "", - "hex.builtin.common.begin": "Inicio", - "hex.builtin.common.big": "Big", - "hex.builtin.common.big_endian": "Big Endian", - "hex.builtin.common.browse": "Navegar...", - "hex.builtin.common.bytes": "Bytes", - "hex.builtin.common.cancel": "Cancelar", - "hex.builtin.common.choose_file": "Escoger archivo", - "hex.builtin.common.close": "Cerrar", - "hex.builtin.common.comment": "Comentario", - "hex.builtin.common.count": "Cantidad", - "hex.builtin.common.decimal": "Decimal", - "hex.builtin.common.deny": "", - "hex.builtin.common.dont_show_again": "No mostrar de nuevo", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "Fin", - "hex.builtin.common.endian": "Endian", - "hex.builtin.common.warning": "", - "hex.builtin.common.error": "Error", - "hex.builtin.common.fatal": "Error Crítico", - "hex.builtin.common.file": "Archivo", - "hex.builtin.common.filter": "Filtro", - "hex.builtin.common.hexadecimal": "Hexadecimal", - "hex.builtin.common.info": "Información", - "hex.builtin.common.instruction": "Instrucción", - "hex.builtin.common.link": "Enlace", - "hex.builtin.common.little": "Little", - "hex.builtin.common.little_endian": "Little Endian", - "hex.builtin.common.load": "Cargar", - "hex.builtin.common.match_selection": "Match Selection", - "hex.builtin.common.name": "Nombre", - "hex.builtin.common.no": "No", - "hex.builtin.common.number_format": "Formato", - "hex.builtin.common.octal": "Octal", - "hex.builtin.common.offset": "Offset", - "hex.builtin.common.okay": "Okey", - "hex.builtin.common.open": "Abrir", - "hex.builtin.common.percentage": "Porcentaje", - "hex.builtin.common.processing": "Procesado", - "hex.builtin.common.project": "", - "hex.builtin.common.question": "Pregunta", - "hex.builtin.common.range": "Rango", - "hex.builtin.common.range.entire_data": "Todos los Datos", - "hex.builtin.common.range.selection": "Selección", - "hex.builtin.common.region": "Región", - "hex.builtin.common.reset": "", - "hex.builtin.common.set": "Establecer", - "hex.builtin.common.settings": "Ajustes", - "hex.builtin.common.size": "Tamaño", - "hex.builtin.common.type": "Tipo", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "Valor", - "hex.builtin.common.yes": "Sí", "hex.builtin.hash.crc.iv": "Valor Inicial", "hex.builtin.hash.crc.poly": "Polinomio", "hex.builtin.hash.crc.refl_in": "Reflect In", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "Mostrar columna ASCII", - "hex.builtin.hex_editor.custom_encoding_view": "Mostrar columna de decodificación avanzada", - "hex.builtin.hex_editor.human_readable_units_footer": "", - "hex.builtin.hex_editor.data_size": "Tamaño de Datos", - "hex.builtin.hex_editor.gray_out_zero": "Mostrar ceros en gris", - "hex.builtin.hex_editor.no_bytes": "No hay bytes disponibles", - "hex.builtin.hex_editor.page": "Página", - "hex.builtin.hex_editor.region": "Región", - "hex.builtin.hex_editor.selection": "Selección", - "hex.builtin.hex_editor.selection.none": "Ninguno", - "hex.builtin.hex_editor.uppercase_hex": "Caracteres hexadecimales mayúscula", - "hex.builtin.hex_editor.visualizer": "Visualizador de datos", "hex.builtin.inspector.ascii": "Carácter ASCII", "hex.builtin.inspector.binary": "Binario (8 bit)", "hex.builtin.inspector.bool": "bool", @@ -422,31 +340,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "Visualizador de Imágenes RGBA8", "hex.builtin.nodes.visualizer.layered_dist": "Distribución en Capas", "hex.builtin.nodes.visualizer.layered_dist.header": "Distribución en Capas", - "hex.builtin.pattern_drawer.color": "Color", - "hex.builtin.pattern_drawer.double_click": "Haga doble clic para ver más elementos", - "hex.builtin.pattern_drawer.end": "", - "hex.builtin.pattern_drawer.export": "", - "hex.builtin.pattern_drawer.favorites": "", - "hex.builtin.pattern_drawer.local": "", - "hex.builtin.pattern_drawer.size": "Tamaño", - "hex.builtin.pattern_drawer.spec_name": "", - "hex.builtin.pattern_drawer.start": "", - "hex.builtin.pattern_drawer.tree_style.tree": "Árbol", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "Árbol Automáticamente Expandido", - "hex.builtin.pattern_drawer.tree_style.flattened": "Allanado", - "hex.builtin.pattern_drawer.type": "Tipo", - "hex.builtin.pattern_drawer.updating": "", - "hex.builtin.pattern_drawer.value": "Valor", - "hex.builtin.pattern_drawer.var_name": "Nombre", - "hex.builtin.pattern_drawer.visualizer.unknown": "Visualizador Desconocido", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "Cantidad de parámetros inválida", - "hex.builtin.pl_visualizer.3d.rotation": "Rotación", - "hex.builtin.pl_visualizer.3d.scale": "Escala", - "hex.builtin.pl_visualizer.coordinates.latitude": "", - "hex.builtin.pl_visualizer.coordinates.longitude": "", - "hex.builtin.pl_visualizer.coordinates.query": "", - "hex.builtin.pl_visualizer.coordinates.querying": "", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "", "hex.builtin.popup.close_provider.desc": "", "hex.builtin.popup.close_provider.title": "¿Cerrar Proveedor?", "hex.builtin.popup.docs_question.title": "Búsqueda de Documentación", @@ -700,76 +593,6 @@ "hex.builtin.view.diff.provider_a": "Proveedor A", "hex.builtin.view.diff.provider_b": "Proveedor B", "hex.builtin.view.diff.removed": "Eliminados", - "hex.builtin.view.disassembler.16bit": "16-bit", - "hex.builtin.view.disassembler.32bit": "32-bit", - "hex.builtin.view.disassembler.64bit": "64-bit", - "hex.builtin.view.disassembler.arch": "Arquitectura", - "hex.builtin.view.disassembler.arm.arm": "", - "hex.builtin.view.disassembler.arm.armv8": "", - "hex.builtin.view.disassembler.arm.cortex_m": "", - "hex.builtin.view.disassembler.arm.default": "Estándar", - "hex.builtin.view.disassembler.arm.thumb": "", - "hex.builtin.view.disassembler.base": "Dirección base", - "hex.builtin.view.disassembler.bpf.classic": "Clásica", - "hex.builtin.view.disassembler.bpf.extended": "Extendida", - "hex.builtin.view.disassembler.disassemble": "Desensamblar", - "hex.builtin.view.disassembler.disassembling": "Desensamblando...", - "hex.builtin.view.disassembler.disassembly.address": "Dirección", - "hex.builtin.view.disassembler.disassembly.bytes": "Byte", - "hex.builtin.view.disassembler.disassembly.offset": "Offset", - "hex.builtin.view.disassembler.disassembly.title": "Desensamblado", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "", - "hex.builtin.view.disassembler.sh.sh2a": "", - "hex.builtin.view.disassembler.sh.sh3": "", - "hex.builtin.view.disassembler.sh.sh4": "", - "hex.builtin.view.disassembler.sh.sh4a": "", - "hex.builtin.view.disassembler.sh.fpu": "", - "hex.builtin.view.disassembler.sh.dsp": "", - "hex.builtin.view.disassembler.tricore.110": "", - "hex.builtin.view.disassembler.tricore.120": "", - "hex.builtin.view.disassembler.tricore.130": "", - "hex.builtin.view.disassembler.tricore.131": "", - "hex.builtin.view.disassembler.tricore.160": "", - "hex.builtin.view.disassembler.tricore.161": "", - "hex.builtin.view.disassembler.tricore.162": "", - "hex.builtin.view.disassembler.name": "Desensamblador", - "hex.builtin.view.disassembler.position": "Posición", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions", - "hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine", - "hex.builtin.view.disassembler.region": "Región de código", - "hex.builtin.view.disassembler.riscv.compressed": "Comprimido", - "hex.builtin.view.disassembler.settings.mode": "Modo", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "Patrón Binario", "hex.builtin.view.find.binary_pattern.alignment": "Alineado", "hex.builtin.view.find.context.copy": "Copiar Valor", @@ -979,19 +802,6 @@ "hex.builtin.view.theme_manager.save_theme": "Guardar Tema", "hex.builtin.view.theme_manager.styles": "Estilos", "hex.builtin.view.tools.name": "Herramientas", - "hex.builtin.view.yara.error": "Error del compilador de Yara: ", - "hex.builtin.view.yara.header.matches": "Coincidenciasç", - "hex.builtin.view.yara.header.rules": "Rules", - "hex.builtin.view.yara.match": "Reglas de Coincidencia", - "hex.builtin.view.yara.matches.identifier": "Identificador", - "hex.builtin.view.yara.matches.variable": "", - "hex.builtin.view.yara.matching": "Analizando coincidencias...", - "hex.builtin.view.yara.name": "Yara Rules", - "hex.builtin.view.yara.no_rules": "No se encontraron Yara Rules. Estas han de encontrarse en la carpeta 'yara' de ImHex.", - "hex.builtin.view.yara.reload": "Recargar", - "hex.builtin.view.yara.reset": "Restablecer", - "hex.builtin.view.yara.rule_added": "¡La Yara Rule fue añadida con éxito!", - "hex.builtin.view.yara.whole_data": "¡El archivo completo coincide!", "hex.builtin.visualizer.binary": "Binario", "hex.builtin.visualizer.decimal.signed.16bit": "Decimal con Signo (16 bits)", "hex.builtin.visualizer.decimal.signed.32bit": "Decimal con Signo (32 bits)", diff --git a/plugins/builtin/romfs/lang/it_IT.json b/plugins/builtin/romfs/lang/it_IT.json index abeaca8e7..023e7ff23 100644 --- a/plugins/builtin/romfs/lang/it_IT.json +++ b/plugins/builtin/romfs/lang/it_IT.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "Esegui comando '{0}'", "hex.builtin.command.web.desc": "Consulta il Web", "hex.builtin.command.web.result": "Naviga a '{0}'", - "hex.builtin.common.address": "Indirizzo", - "hex.builtin.common.allow": "", - "hex.builtin.common.begin": "", - "hex.builtin.common.big": "Big", - "hex.builtin.common.big_endian": "Big Endian", - "hex.builtin.common.browse": "Esplora...", - "hex.builtin.common.bytes": "", - "hex.builtin.common.cancel": "Cancella", - "hex.builtin.common.choose_file": "Scegli file", - "hex.builtin.common.close": "Chiudi", - "hex.builtin.common.comment": "", - "hex.builtin.common.count": "", - "hex.builtin.common.decimal": "Decimale", - "hex.builtin.common.deny": "", - "hex.builtin.common.dont_show_again": "Non mostrare di nuovo", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "", - "hex.builtin.common.endian": "Endian", - "hex.builtin.common.warning": "", - "hex.builtin.common.error": "Errore", - "hex.builtin.common.fatal": "Errore Fatale", - "hex.builtin.common.file": "File", - "hex.builtin.common.filter": "", - "hex.builtin.common.hexadecimal": "Esadecimale", - "hex.builtin.common.info": "Informazioni", - "hex.builtin.common.instruction": "", - "hex.builtin.common.link": "Link", - "hex.builtin.common.little": "Little", - "hex.builtin.common.little_endian": "Little Endian", - "hex.builtin.common.load": "Carica", - "hex.builtin.common.match_selection": "Seleziona abbinamento", - "hex.builtin.common.name": "", - "hex.builtin.common.no": "No", - "hex.builtin.common.number_format": "", - "hex.builtin.common.octal": "Ottale", - "hex.builtin.common.offset": "Offset", - "hex.builtin.common.okay": "Okay", - "hex.builtin.common.open": "Apri", - "hex.builtin.common.percentage": "", - "hex.builtin.common.processing": "", - "hex.builtin.common.project": "", - "hex.builtin.common.question": "", - "hex.builtin.common.range": "", - "hex.builtin.common.range.entire_data": "", - "hex.builtin.common.range.selection": "", - "hex.builtin.common.region": "Regione", - "hex.builtin.common.reset": "", - "hex.builtin.common.set": "Imposta", - "hex.builtin.common.settings": "Impostazioni", - "hex.builtin.common.size": "Dimensione", - "hex.builtin.common.type": "", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "", - "hex.builtin.common.yes": "Sì", "hex.builtin.hash.crc.iv": "Valore Iniziale", "hex.builtin.hash.crc.poly": "Polinomio", "hex.builtin.hash.crc.refl_in": "", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "Mostra la colonna ASCII", - "hex.builtin.hex_editor.custom_encoding_view": "Mostra la colonna di decodifica avanzata", - "hex.builtin.hex_editor.human_readable_units_footer": "", - "hex.builtin.hex_editor.data_size": "", - "hex.builtin.hex_editor.gray_out_zero": "Taglia fuori gli zeri", - "hex.builtin.hex_editor.no_bytes": "", - "hex.builtin.hex_editor.page": "", - "hex.builtin.hex_editor.region": "", - "hex.builtin.hex_editor.selection": "", - "hex.builtin.hex_editor.selection.none": "", - "hex.builtin.hex_editor.uppercase_hex": "Caratteri esadecimali maiuscoli", - "hex.builtin.hex_editor.visualizer": "", "hex.builtin.inspector.ascii": "ASCII Character", "hex.builtin.inspector.binary": "Binary (8 bit)", "hex.builtin.inspector.bool": "bool", @@ -422,31 +340,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "", "hex.builtin.nodes.visualizer.layered_dist": "", "hex.builtin.nodes.visualizer.layered_dist.header": "", - "hex.builtin.pattern_drawer.color": "", - "hex.builtin.pattern_drawer.double_click": "", - "hex.builtin.pattern_drawer.end": "", - "hex.builtin.pattern_drawer.export": "", - "hex.builtin.pattern_drawer.favorites": "", - "hex.builtin.pattern_drawer.local": "", - "hex.builtin.pattern_drawer.size": "", - "hex.builtin.pattern_drawer.spec_name": "", - "hex.builtin.pattern_drawer.start": "", - "hex.builtin.pattern_drawer.tree_style.tree": "", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "", - "hex.builtin.pattern_drawer.tree_style.flattened": "", - "hex.builtin.pattern_drawer.type": "", - "hex.builtin.pattern_drawer.updating": "", - "hex.builtin.pattern_drawer.value": "", - "hex.builtin.pattern_drawer.var_name": "", - "hex.builtin.pattern_drawer.visualizer.unknown": "", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "", - "hex.builtin.pl_visualizer.3d.rotation": "", - "hex.builtin.pl_visualizer.3d.scale": "", - "hex.builtin.pl_visualizer.coordinates.latitude": "", - "hex.builtin.pl_visualizer.coordinates.longitude": "", - "hex.builtin.pl_visualizer.coordinates.query": "", - "hex.builtin.pl_visualizer.coordinates.querying": "", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "", "hex.builtin.popup.close_provider.desc": "", "hex.builtin.popup.close_provider.title": "", "hex.builtin.popup.docs_question.title": "", @@ -700,76 +593,6 @@ "hex.builtin.view.diff.provider_a": "", "hex.builtin.view.diff.provider_b": "", "hex.builtin.view.diff.removed": "", - "hex.builtin.view.disassembler.16bit": "16-bit", - "hex.builtin.view.disassembler.32bit": "32-bit", - "hex.builtin.view.disassembler.64bit": "64-bit", - "hex.builtin.view.disassembler.arch": "Architettura", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "Default", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "Indirizzo di base", - "hex.builtin.view.disassembler.bpf.classic": "Classico", - "hex.builtin.view.disassembler.bpf.extended": "Esteso", - "hex.builtin.view.disassembler.disassemble": "Disassembla", - "hex.builtin.view.disassembler.disassembling": "Disassemblaggio...", - "hex.builtin.view.disassembler.disassembly.address": "Indirizzo", - "hex.builtin.view.disassembler.disassembly.bytes": "Byte", - "hex.builtin.view.disassembler.disassembly.offset": "Offset", - "hex.builtin.view.disassembler.disassembly.title": "Disassembla", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "", - "hex.builtin.view.disassembler.sh.sh2a": "", - "hex.builtin.view.disassembler.sh.sh3": "", - "hex.builtin.view.disassembler.sh.sh4": "", - "hex.builtin.view.disassembler.sh.sh4a": "", - "hex.builtin.view.disassembler.sh.fpu": "", - "hex.builtin.view.disassembler.sh.dsp": "", - "hex.builtin.view.disassembler.tricore.110": "", - "hex.builtin.view.disassembler.tricore.120": "", - "hex.builtin.view.disassembler.tricore.130": "", - "hex.builtin.view.disassembler.tricore.131": "", - "hex.builtin.view.disassembler.tricore.160": "", - "hex.builtin.view.disassembler.tricore.161": "", - "hex.builtin.view.disassembler.tricore.162": "", - "hex.builtin.view.disassembler.name": "Disassembla", - "hex.builtin.view.disassembler.position": "Posiziona", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions", - "hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine", - "hex.builtin.view.disassembler.region": "Regione del Codice", - "hex.builtin.view.disassembler.riscv.compressed": "Compresso", - "hex.builtin.view.disassembler.settings.mode": "", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "", "hex.builtin.view.find.binary_pattern.alignment": "", "hex.builtin.view.find.context.copy": "", @@ -979,19 +802,6 @@ "hex.builtin.view.theme_manager.save_theme": "", "hex.builtin.view.theme_manager.styles": "", "hex.builtin.view.tools.name": "Strumenti", - "hex.builtin.view.yara.error": "Errore compilazione Yara: {0}", - "hex.builtin.view.yara.header.matches": "Abbinamenti", - "hex.builtin.view.yara.header.rules": "Regola", - "hex.builtin.view.yara.match": "Abbina Regole", - "hex.builtin.view.yara.matches.identifier": "Identificatore", - "hex.builtin.view.yara.matches.variable": "Variabile", - "hex.builtin.view.yara.matching": "Abbinamento...", - "hex.builtin.view.yara.name": "Regole di Yara", - "hex.builtin.view.yara.no_rules": "Nessuna regola di YARA. Aggiungile in nella cartella 'yara' di 'ImHex'", - "hex.builtin.view.yara.reload": "Ricarica", - "hex.builtin.view.yara.reset": "", - "hex.builtin.view.yara.rule_added": "Regola di Yara aggiunta!", - "hex.builtin.view.yara.whole_data": "Tutti i file combaciano!", "hex.builtin.visualizer.binary": "", "hex.builtin.visualizer.decimal.signed.16bit": "", "hex.builtin.visualizer.decimal.signed.32bit": "", diff --git a/plugins/builtin/romfs/lang/ja_JP.json b/plugins/builtin/romfs/lang/ja_JP.json index 5eeaaf7fe..8fa3d6433 100644 --- a/plugins/builtin/romfs/lang/ja_JP.json +++ b/plugins/builtin/romfs/lang/ja_JP.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "コマンド '{0}' を実行", "hex.builtin.command.web.desc": "ウェブサイト参照", "hex.builtin.command.web.result": "'{0}' を開く", - "hex.builtin.common.address": "アドレス", - "hex.builtin.common.allow": "", - "hex.builtin.common.begin": "", - "hex.builtin.common.big": "ビッグ", - "hex.builtin.common.big_endian": "ビッグエンディアン", - "hex.builtin.common.browse": "ファイルを参照…", - "hex.builtin.common.bytes": "", - "hex.builtin.common.cancel": "キャンセル", - "hex.builtin.common.choose_file": "ファイルを選択", - "hex.builtin.common.close": "閉じる", - "hex.builtin.common.comment": "コメント", - "hex.builtin.common.count": "", - "hex.builtin.common.decimal": "10進数", - "hex.builtin.common.deny": "", - "hex.builtin.common.dont_show_again": "再度表示しない", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "", - "hex.builtin.common.endian": "エンディアン", - "hex.builtin.common.warning": "", - "hex.builtin.common.error": "エラー", - "hex.builtin.common.fatal": "深刻なエラー", - "hex.builtin.common.file": "ファイル", - "hex.builtin.common.filter": "フィルタ", - "hex.builtin.common.hexadecimal": "16進数", - "hex.builtin.common.info": "情報", - "hex.builtin.common.instruction": "", - "hex.builtin.common.link": "リンク", - "hex.builtin.common.little": "リトル", - "hex.builtin.common.little_endian": "リトルエンディアン", - "hex.builtin.common.load": "読み込む", - "hex.builtin.common.match_selection": "選択範囲と一致", - "hex.builtin.common.name": "", - "hex.builtin.common.no": "いいえ", - "hex.builtin.common.number_format": "", - "hex.builtin.common.octal": "8進数", - "hex.builtin.common.offset": "オフセット", - "hex.builtin.common.okay": "OK", - "hex.builtin.common.open": "開く", - "hex.builtin.common.percentage": "", - "hex.builtin.common.processing": "", - "hex.builtin.common.project": "", - "hex.builtin.common.question": "", - "hex.builtin.common.range": "範囲", - "hex.builtin.common.range.entire_data": "データ全体", - "hex.builtin.common.range.selection": "選択範囲", - "hex.builtin.common.region": "領域", - "hex.builtin.common.reset": "", - "hex.builtin.common.set": "セット", - "hex.builtin.common.settings": "設定", - "hex.builtin.common.size": "サイズ", - "hex.builtin.common.type": "", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "値", - "hex.builtin.common.yes": "はい", "hex.builtin.hash.crc.iv": "初期値", "hex.builtin.hash.crc.poly": "多項式", "hex.builtin.hash.crc.refl_in": "入力を反映", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "ASCIIを表示", - "hex.builtin.hex_editor.custom_encoding_view": "他のデコード列を表示", - "hex.builtin.hex_editor.human_readable_units_footer": "", - "hex.builtin.hex_editor.data_size": "ファイルサイズ", - "hex.builtin.hex_editor.gray_out_zero": "ゼロをグレーアウト", - "hex.builtin.hex_editor.no_bytes": "", - "hex.builtin.hex_editor.page": "ページ", - "hex.builtin.hex_editor.region": "ページの領域", - "hex.builtin.hex_editor.selection": "選択中", - "hex.builtin.hex_editor.selection.none": "なし", - "hex.builtin.hex_editor.uppercase_hex": "16進数を大文字表記", - "hex.builtin.hex_editor.visualizer": "データ表示方式", "hex.builtin.inspector.ascii": "ASCII", "hex.builtin.inspector.binary": "バイナリ (8 bit)", "hex.builtin.inspector.bool": "bool", @@ -422,31 +340,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "", "hex.builtin.nodes.visualizer.layered_dist": "層状分布", "hex.builtin.nodes.visualizer.layered_dist.header": "層状分布", - "hex.builtin.pattern_drawer.color": "色", - "hex.builtin.pattern_drawer.double_click": "", - "hex.builtin.pattern_drawer.end": "", - "hex.builtin.pattern_drawer.export": "", - "hex.builtin.pattern_drawer.favorites": "", - "hex.builtin.pattern_drawer.local": "", - "hex.builtin.pattern_drawer.size": "サイズ", - "hex.builtin.pattern_drawer.spec_name": "", - "hex.builtin.pattern_drawer.start": "", - "hex.builtin.pattern_drawer.tree_style.tree": "", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "", - "hex.builtin.pattern_drawer.tree_style.flattened": "", - "hex.builtin.pattern_drawer.type": "型", - "hex.builtin.pattern_drawer.updating": "", - "hex.builtin.pattern_drawer.value": "値", - "hex.builtin.pattern_drawer.var_name": "名前", - "hex.builtin.pattern_drawer.visualizer.unknown": "", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "", - "hex.builtin.pl_visualizer.3d.rotation": "", - "hex.builtin.pl_visualizer.3d.scale": "", - "hex.builtin.pl_visualizer.coordinates.latitude": "", - "hex.builtin.pl_visualizer.coordinates.longitude": "", - "hex.builtin.pl_visualizer.coordinates.query": "", - "hex.builtin.pl_visualizer.coordinates.querying": "", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "", "hex.builtin.popup.close_provider.desc": "", "hex.builtin.popup.close_provider.title": "タブを閉じますか?", "hex.builtin.popup.docs_question.title": "", @@ -700,76 +593,6 @@ "hex.builtin.view.diff.provider_a": "", "hex.builtin.view.diff.provider_b": "", "hex.builtin.view.diff.removed": "", - "hex.builtin.view.disassembler.16bit": "16-bit", - "hex.builtin.view.disassembler.32bit": "32-bit", - "hex.builtin.view.disassembler.64bit": "64-bit", - "hex.builtin.view.disassembler.arch": "アーキテクチャ", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "デフォルト", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "ベースアドレス", - "hex.builtin.view.disassembler.bpf.classic": "クラシック", - "hex.builtin.view.disassembler.bpf.extended": "拡張", - "hex.builtin.view.disassembler.disassemble": "逆アセンブル", - "hex.builtin.view.disassembler.disassembling": "逆アセンブル中…", - "hex.builtin.view.disassembler.disassembly.address": "アドレス", - "hex.builtin.view.disassembler.disassembly.bytes": "バイト", - "hex.builtin.view.disassembler.disassembly.offset": "オフセット", - "hex.builtin.view.disassembler.disassembly.title": "逆アセンブル", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "", - "hex.builtin.view.disassembler.sh.sh2a": "", - "hex.builtin.view.disassembler.sh.sh3": "", - "hex.builtin.view.disassembler.sh.sh4": "", - "hex.builtin.view.disassembler.sh.sh4a": "", - "hex.builtin.view.disassembler.sh.fpu": "", - "hex.builtin.view.disassembler.sh.dsp": "", - "hex.builtin.view.disassembler.tricore.110": "", - "hex.builtin.view.disassembler.tricore.120": "", - "hex.builtin.view.disassembler.tricore.130": "", - "hex.builtin.view.disassembler.tricore.131": "", - "hex.builtin.view.disassembler.tricore.160": "", - "hex.builtin.view.disassembler.tricore.161": "", - "hex.builtin.view.disassembler.tricore.162": "", - "hex.builtin.view.disassembler.name": "逆アセンブラ", - "hex.builtin.view.disassembler.position": "位置", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "", - "hex.builtin.view.disassembler.ppc.spe": "信号処理エンジン", - "hex.builtin.view.disassembler.region": "コード領域", - "hex.builtin.view.disassembler.riscv.compressed": "圧縮済み", - "hex.builtin.view.disassembler.settings.mode": "モード", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "16進数", "hex.builtin.view.find.binary_pattern.alignment": "", "hex.builtin.view.find.context.copy": "値をコピー", @@ -979,19 +802,6 @@ "hex.builtin.view.theme_manager.save_theme": "", "hex.builtin.view.theme_manager.styles": "", "hex.builtin.view.tools.name": "ツール", - "hex.builtin.view.yara.error": "Yaraコンパイルエラー: {0}", - "hex.builtin.view.yara.header.matches": "マッチ結果", - "hex.builtin.view.yara.header.rules": "ルール", - "hex.builtin.view.yara.match": "検出", - "hex.builtin.view.yara.matches.identifier": "識別子", - "hex.builtin.view.yara.matches.variable": "変数", - "hex.builtin.view.yara.matching": "マッチ中…", - "hex.builtin.view.yara.name": "Yaraルール", - "hex.builtin.view.yara.no_rules": "YARAルールが見つかりませんでした。ImHexの'yara'フォルダ内に入れてください", - "hex.builtin.view.yara.reload": "リロード", - "hex.builtin.view.yara.reset": "", - "hex.builtin.view.yara.rule_added": "Yaraルールが追加されました。", - "hex.builtin.view.yara.whole_data": "ファイル全体が一致します。", "hex.builtin.visualizer.binary": "", "hex.builtin.visualizer.decimal.signed.16bit": "符号付き整数型 (16 bits)", "hex.builtin.visualizer.decimal.signed.32bit": "符号付き整数型 (32 bits)", diff --git a/plugins/builtin/romfs/lang/ko_KR.json b/plugins/builtin/romfs/lang/ko_KR.json index 894b63efb..aebf7f7c8 100644 --- a/plugins/builtin/romfs/lang/ko_KR.json +++ b/plugins/builtin/romfs/lang/ko_KR.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "'{0}' 명령 실행", "hex.builtin.command.web.desc": "웹사이트 탐색", "hex.builtin.command.web.result": "'{0}'(으)로 이동", - "hex.builtin.common.address": "주소", - "hex.builtin.common.allow": "허용", - "hex.builtin.common.begin": "시작", - "hex.builtin.common.big": "빅", - "hex.builtin.common.big_endian": "빅 엔디언", - "hex.builtin.common.browse": "찾아보기...", - "hex.builtin.common.bytes": "바이트", - "hex.builtin.common.cancel": "취소", - "hex.builtin.common.choose_file": "파일 선택", - "hex.builtin.common.close": "닫기", - "hex.builtin.common.comment": "주석", - "hex.builtin.common.count": "개수", - "hex.builtin.common.decimal": "10진수", - "hex.builtin.common.deny": "거부", - "hex.builtin.common.dont_show_again": "다시 보지 않기", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "끝", - "hex.builtin.common.endian": "엔디언", - "hex.builtin.common.warning": "경고", - "hex.builtin.common.error": "오류", - "hex.builtin.common.fatal": "치명적 오류", - "hex.builtin.common.file": "파일", - "hex.builtin.common.filter": "필터", - "hex.builtin.common.hexadecimal": "16진수", - "hex.builtin.common.info": "정보", - "hex.builtin.common.instruction": "지침", - "hex.builtin.common.link": "링크", - "hex.builtin.common.little": "리틀", - "hex.builtin.common.little_endian": "리틀 엔디언", - "hex.builtin.common.load": "불러오기", - "hex.builtin.common.match_selection": "선택 영역 일치", - "hex.builtin.common.name": "이름", - "hex.builtin.common.no": "아니요", - "hex.builtin.common.number_format": "포맷", - "hex.builtin.common.octal": "8진수", - "hex.builtin.common.offset": "오프셋", - "hex.builtin.common.okay": "확인", - "hex.builtin.common.open": "열기", - "hex.builtin.common.percentage": "비율", - "hex.builtin.common.processing": "작업 중", - "hex.builtin.common.project": "프로젝트", - "hex.builtin.common.question": "질문", - "hex.builtin.common.range": "범위", - "hex.builtin.common.range.entire_data": "전체 데이터", - "hex.builtin.common.range.selection": "선택 영역", - "hex.builtin.common.region": "영역", - "hex.builtin.common.reset": "재설정", - "hex.builtin.common.set": "설정", - "hex.builtin.common.settings": "설정", - "hex.builtin.common.size": "크기", - "hex.builtin.common.type": "유형", - "hex.builtin.common.type.f32": "플로트", - "hex.builtin.common.type.f64": "더블", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "값", - "hex.builtin.common.yes": "예", "hex.builtin.hash.crc.iv": "초기 값", "hex.builtin.hash.crc.poly": "다항식", "hex.builtin.hash.crc.refl_in": "입력에 반영", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "ASCII 열 표시", - "hex.builtin.hex_editor.custom_encoding_view": "추가 디코딩 열 표시", - "hex.builtin.hex_editor.human_readable_units_footer": "크기를 사람이 읽을 수 있는 단위로 변환", - "hex.builtin.hex_editor.data_size": "데이터 크기", - "hex.builtin.hex_editor.gray_out_zero": "00을 회색으로 표시", - "hex.builtin.hex_editor.no_bytes": "바이트가 없습니다", - "hex.builtin.hex_editor.page": "페이지", - "hex.builtin.hex_editor.region": "영역", - "hex.builtin.hex_editor.selection": "선택 영역", - "hex.builtin.hex_editor.selection.none": "없음", - "hex.builtin.hex_editor.uppercase_hex": "16진수 값을 대문자로 표시", - "hex.builtin.hex_editor.visualizer": "데이터 시각화", "hex.builtin.inspector.ascii": "ASCII 문자", "hex.builtin.inspector.binary": "2진수 (8비트)", "hex.builtin.inspector.bool": "부울", @@ -422,31 +340,13 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 이미지 시각화", "hex.builtin.nodes.visualizer.layered_dist": "계층적 분포", "hex.builtin.nodes.visualizer.layered_dist.header": "계층적 분포", - "hex.builtin.pattern_drawer.color": "색상", - "hex.builtin.pattern_drawer.double_click": "더 많은 항목을 보려면 두 번 클릭", - "hex.builtin.pattern_drawer.end": "끝", - "hex.builtin.pattern_drawer.export": "다른 이름으로 패턴 내보내기...", - "hex.builtin.pattern_drawer.favorites": "즐겨찾기", - "hex.builtin.pattern_drawer.local": "로컬", - "hex.builtin.pattern_drawer.size": "크기", - "hex.builtin.pattern_drawer.spec_name": "명세 이름 표시", - "hex.builtin.pattern_drawer.start": "시작", - "hex.builtin.pattern_drawer.tree_style.tree": "트리", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "자동 확장 트리", - "hex.builtin.pattern_drawer.tree_style.flattened": "접기", - "hex.builtin.pattern_drawer.type": "유형", - "hex.builtin.pattern_drawer.updating": "패턴 업데이트 중...", - "hex.builtin.pattern_drawer.value": "값", - "hex.builtin.pattern_drawer.var_name": "이름", - "hex.builtin.pattern_drawer.visualizer.unknown": "알 수 없는 시각화", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "잘못된 매개변수 수", - "hex.builtin.pl_visualizer.3d.rotation": "회전", - "hex.builtin.pl_visualizer.3d.scale": "배율", - "hex.builtin.pl_visualizer.coordinates.latitude": "위도", - "hex.builtin.pl_visualizer.coordinates.longitude": "경도", - "hex.builtin.pl_visualizer.coordinates.query": "주소 찾기", - "hex.builtin.pl_visualizer.coordinates.querying": "주소 쿼리 중...", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "찾은 주소가 없습니다", + "hex.visualizers.pl_visualizer.3d.rotation": "회전", + "hex.visualizers.pl_visualizer.3d.scale": "배율", + "hex.visualizers.pl_visualizer.coordinates.latitude": "위도", + "hex.visualizers.pl_visualizer.coordinates.longitude": "경도", + "hex.visualizers.pl_visualizer.coordinates.query": "주소 찾기", + "hex.visualizers.pl_visualizer.coordinates.querying": "주소 쿼리 중...", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "찾은 주소가 없습니다", "hex.builtin.popup.close_provider.desc": "이 공급자에 대해 아직 프로젝트에\n저장되지 않은 변경 사항이 있습니다.\n\n정말 종료하시겠습니까?", "hex.builtin.popup.close_provider.title": "공급자를 종료하시겠습니까?", "hex.builtin.popup.docs_question.title": "설명서 쿼리", @@ -714,76 +614,6 @@ "hex.builtin.view.diff.provider_a": "공급자 A", "hex.builtin.view.diff.provider_b": "공급자 B", "hex.builtin.view.diff.removed": "제거됨", - "hex.builtin.view.disassembler.16bit": "16비트", - "hex.builtin.view.disassembler.32bit": "32비트", - "hex.builtin.view.disassembler.64bit": "64비트", - "hex.builtin.view.disassembler.arch": "아키텍처", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "기본", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "베이스 주소", - "hex.builtin.view.disassembler.bpf.classic": "클래식", - "hex.builtin.view.disassembler.bpf.extended": "확장", - "hex.builtin.view.disassembler.disassemble": "디스어셈블", - "hex.builtin.view.disassembler.disassembling": "디스어셈블하는 중...", - "hex.builtin.view.disassembler.disassembly.address": "주소", - "hex.builtin.view.disassembler.disassembly.bytes": "바이트", - "hex.builtin.view.disassembler.disassembly.offset": "오프셋", - "hex.builtin.view.disassembler.disassembly.title": "디스어셈블리", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "SH2", - "hex.builtin.view.disassembler.sh.sh2a": "SH2A", - "hex.builtin.view.disassembler.sh.sh3": "SH3", - "hex.builtin.view.disassembler.sh.sh4": "SH4", - "hex.builtin.view.disassembler.sh.sh4a": "SH4A", - "hex.builtin.view.disassembler.sh.fpu": "FPU", - "hex.builtin.view.disassembler.sh.dsp": "DSP", - "hex.builtin.view.disassembler.tricore.110": "110", - "hex.builtin.view.disassembler.tricore.120": "120", - "hex.builtin.view.disassembler.tricore.130": "130", - "hex.builtin.view.disassembler.tricore.131": "131", - "hex.builtin.view.disassembler.tricore.160": "160", - "hex.builtin.view.disassembler.tricore.161": "161", - "hex.builtin.view.disassembler.tricore.162": "162", - "hex.builtin.view.disassembler.name": "디스어셈블러", - "hex.builtin.view.disassembler.position": "위치", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "쿼드 프로세싱 확장", - "hex.builtin.view.disassembler.ppc.spe": "시그널 프로세싱 엔진", - "hex.builtin.view.disassembler.region": "코드 영역", - "hex.builtin.view.disassembler.riscv.compressed": "압축됨", - "hex.builtin.view.disassembler.settings.mode": "모드", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "바이너리 패턴", "hex.builtin.view.find.binary_pattern.alignment": "정렬", "hex.builtin.view.find.context.copy": "값 복사", @@ -993,19 +823,6 @@ "hex.builtin.view.theme_manager.save_theme": "테마 저장", "hex.builtin.view.theme_manager.styles": "스타일", "hex.builtin.view.tools.name": "도구", - "hex.builtin.view.yara.error": "Yara 컴파일러 오류: {0}", - "hex.builtin.view.yara.header.matches": "일치", - "hex.builtin.view.yara.header.rules": "규칙", - "hex.builtin.view.yara.match": "규칙 일치 찾기", - "hex.builtin.view.yara.matches.identifier": "식별자", - "hex.builtin.view.yara.matches.variable": "변수", - "hex.builtin.view.yara.matching": "검색 중...", - "hex.builtin.view.yara.name": "Yara 규칙", - "hex.builtin.view.yara.no_rules": "Yara 규칙이 없습니다. ImHex의 'yara' 폴더에 Yara 규칙을 넣으세요", - "hex.builtin.view.yara.reload": "새로 고침", - "hex.builtin.view.yara.reset": "재설정", - "hex.builtin.view.yara.rule_added": "Yara 규칙 추가됨!", - "hex.builtin.view.yara.whole_data": "모든 파일을 검색했습니다!", "hex.builtin.visualizer.binary": "2진수", "hex.builtin.visualizer.decimal.signed.16bit": "부호 있는 10진수 (16비트)", "hex.builtin.visualizer.decimal.signed.32bit": "부호 있는 10진수 (32비트)", @@ -1104,7 +921,6 @@ "hex.builtin.view.help.about.release_notes": "릴리스 노트", "hex.builtin.menu.file.export.as_language": "텍스트 형식 바이트", "hex.builtin.view.help.about.commits": "커밋 기록", - "hex.builtin.common.loading": "불러오는 중...", "hex.builtin.undo_operation.remove": "{0} 제거", "hex.builtin.view.find.shortcut.select_all": "모든 발생 선택", "hex.builtin.view.hex_editor.menu.edit.cut": "자르기", @@ -1153,18 +969,8 @@ "hex.builtin.view.pattern_editor.shortcut.step_debugger": "스텝 디버거", "hex.builtin.welcome.learn.achievements.title": "도전 과제 진행 상황", "hex.builtin.welcome.learn.achievements.desc": "모든 도전 과제를 완료하여 ImHex의 사용 방법을 알아보세요", - "hex.builtin.common.remove": "제거", - "hex.builtin.common.edit": "편집", "hex.builtin.popup.blocking_task.desc": "현재 작업을 실행 중입니다.", "hex.builtin.popup.blocking_task.title": "작업 실행 중", - "hex.builtin.pl_visualizer.3d.light_position": "조명 위치", - "hex.builtin.pl_visualizer.3d.ambient_brightness": "주변 밝기", - "hex.builtin.pl_visualizer.3d.diffuse_brightness": "확산 밝기", - "hex.builtin.pl_visualizer.3d.specular_brightness": "반사 밝기", - "hex.builtin.pl_visualizer.3d.object_reflectiveness": "개체 반사도", - "hex.builtin.pl_visualizer.3d.light_color": "조명 색상", - "hex.builtin.pl_visualizer.3d.more_settings": "설정 더 보기", - "hex.builtin.pl_visualizer.3d.texture_file": "텍스처 파일 경로", "hex.builtin.menu.workspace.layout.lock": "레이아웃 잠금", "hex.builtin.welcome.drop_file": "시작하려면 여기에 파일을 놓으세요...", "hex.builtin.command.convert.desc": "단위 변환", diff --git a/plugins/builtin/romfs/lang/pt_BR.json b/plugins/builtin/romfs/lang/pt_BR.json index 7ec9ed35b..a0ded7fc2 100644 --- a/plugins/builtin/romfs/lang/pt_BR.json +++ b/plugins/builtin/romfs/lang/pt_BR.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "Iniciar Comando '{0}'", "hex.builtin.command.web.desc": "Website lookup", "hex.builtin.command.web.result": "Navegar para '{0}'", - "hex.builtin.common.address": "Address", - "hex.builtin.common.allow": "", - "hex.builtin.common.begin": "", - "hex.builtin.common.big": "Big", - "hex.builtin.common.big_endian": "Big Endian", - "hex.builtin.common.browse": "Navegar...", - "hex.builtin.common.bytes": "", - "hex.builtin.common.cancel": "Cancelar", - "hex.builtin.common.choose_file": "Escolher arquivo", - "hex.builtin.common.close": "Fechar", - "hex.builtin.common.comment": "", - "hex.builtin.common.count": "", - "hex.builtin.common.decimal": "Decimal", - "hex.builtin.common.deny": "", - "hex.builtin.common.dont_show_again": "Não Mostrar Novamente", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "", - "hex.builtin.common.endian": "Endian", - "hex.builtin.common.warning": "", - "hex.builtin.common.error": "Erro", - "hex.builtin.common.fatal": "Erro Fatal", - "hex.builtin.common.file": "Arquivo", - "hex.builtin.common.filter": "", - "hex.builtin.common.hexadecimal": "Hexadecimal", - "hex.builtin.common.info": "Informação", - "hex.builtin.common.instruction": "", - "hex.builtin.common.link": "Link", - "hex.builtin.common.little": "Little", - "hex.builtin.common.little_endian": "Little Endian", - "hex.builtin.common.load": "Carregar", - "hex.builtin.common.match_selection": "Seleção de correspondência", - "hex.builtin.common.name": "", - "hex.builtin.common.no": "Não", - "hex.builtin.common.number_format": "Format", - "hex.builtin.common.octal": "Octal", - "hex.builtin.common.offset": "Offset", - "hex.builtin.common.okay": "OK", - "hex.builtin.common.open": "Abrir", - "hex.builtin.common.percentage": "", - "hex.builtin.common.processing": "Processando", - "hex.builtin.common.project": "", - "hex.builtin.common.question": "Question", - "hex.builtin.common.range": "", - "hex.builtin.common.range.entire_data": "", - "hex.builtin.common.range.selection": "", - "hex.builtin.common.region": "Region", - "hex.builtin.common.reset": "", - "hex.builtin.common.set": "Colocar", - "hex.builtin.common.settings": "Configurações", - "hex.builtin.common.size": "Tamanho", - "hex.builtin.common.type": "", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "", - "hex.builtin.common.yes": "Sim", "hex.builtin.hash.crc.iv": "Initial Value", "hex.builtin.hash.crc.poly": "Polynomial", "hex.builtin.hash.crc.refl_in": "Reflect In", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "Exibir coluna ASCII", - "hex.builtin.hex_editor.custom_encoding_view": "", - "hex.builtin.hex_editor.human_readable_units_footer": "", - "hex.builtin.hex_editor.data_size": "Tamanho dos Dados", - "hex.builtin.hex_editor.gray_out_zero": "", - "hex.builtin.hex_editor.no_bytes": "Nenhum Byte Disponivel", - "hex.builtin.hex_editor.page": "Pagina", - "hex.builtin.hex_editor.region": "Região", - "hex.builtin.hex_editor.selection": "Seleção", - "hex.builtin.hex_editor.selection.none": "Nenhum", - "hex.builtin.hex_editor.uppercase_hex": "", - "hex.builtin.hex_editor.visualizer": "Visualizador de Dados", "hex.builtin.inspector.ascii": "ASCII Character", "hex.builtin.inspector.binary": "Binary (8 bit)", "hex.builtin.inspector.bool": "bool", @@ -422,31 +340,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "", "hex.builtin.nodes.visualizer.layered_dist": "Layered Distribution", "hex.builtin.nodes.visualizer.layered_dist.header": "Layered Distribution", - "hex.builtin.pattern_drawer.color": "Cor", - "hex.builtin.pattern_drawer.double_click": "", - "hex.builtin.pattern_drawer.end": "", - "hex.builtin.pattern_drawer.export": "", - "hex.builtin.pattern_drawer.favorites": "", - "hex.builtin.pattern_drawer.local": "", - "hex.builtin.pattern_drawer.size": "Tamanho", - "hex.builtin.pattern_drawer.spec_name": "", - "hex.builtin.pattern_drawer.start": "", - "hex.builtin.pattern_drawer.tree_style.tree": "", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "", - "hex.builtin.pattern_drawer.tree_style.flattened": "", - "hex.builtin.pattern_drawer.type": "Tipo", - "hex.builtin.pattern_drawer.updating": "", - "hex.builtin.pattern_drawer.value": "Valor", - "hex.builtin.pattern_drawer.var_name": "Nome", - "hex.builtin.pattern_drawer.visualizer.unknown": "", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "", - "hex.builtin.pl_visualizer.3d.rotation": "", - "hex.builtin.pl_visualizer.3d.scale": "", - "hex.builtin.pl_visualizer.coordinates.latitude": "", - "hex.builtin.pl_visualizer.coordinates.longitude": "", - "hex.builtin.pl_visualizer.coordinates.query": "", - "hex.builtin.pl_visualizer.coordinates.querying": "", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "", "hex.builtin.popup.close_provider.desc": "", "hex.builtin.popup.close_provider.title": "", "hex.builtin.popup.docs_question.title": "", @@ -700,76 +593,6 @@ "hex.builtin.view.diff.provider_a": "", "hex.builtin.view.diff.provider_b": "", "hex.builtin.view.diff.removed": "", - "hex.builtin.view.disassembler.16bit": "16-bit", - "hex.builtin.view.disassembler.32bit": "32-bit", - "hex.builtin.view.disassembler.64bit": "64-bit", - "hex.builtin.view.disassembler.arch": "Arquitetura", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "Default", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "Endereço base", - "hex.builtin.view.disassembler.bpf.classic": "Classico", - "hex.builtin.view.disassembler.bpf.extended": "Extendido", - "hex.builtin.view.disassembler.disassemble": "Desmontar", - "hex.builtin.view.disassembler.disassembling": "Desmontando...", - "hex.builtin.view.disassembler.disassembly.address": "Address", - "hex.builtin.view.disassembler.disassembly.bytes": "Byte", - "hex.builtin.view.disassembler.disassembly.offset": "Offset", - "hex.builtin.view.disassembler.disassembly.title": "Disassembly", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "", - "hex.builtin.view.disassembler.sh.sh2a": "", - "hex.builtin.view.disassembler.sh.sh3": "", - "hex.builtin.view.disassembler.sh.sh4": "", - "hex.builtin.view.disassembler.sh.sh4a": "", - "hex.builtin.view.disassembler.sh.fpu": "", - "hex.builtin.view.disassembler.sh.dsp": "", - "hex.builtin.view.disassembler.tricore.110": "", - "hex.builtin.view.disassembler.tricore.120": "", - "hex.builtin.view.disassembler.tricore.130": "", - "hex.builtin.view.disassembler.tricore.131": "", - "hex.builtin.view.disassembler.tricore.160": "", - "hex.builtin.view.disassembler.tricore.161": "", - "hex.builtin.view.disassembler.tricore.162": "", - "hex.builtin.view.disassembler.name": "Desmontador", - "hex.builtin.view.disassembler.position": "Posição", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions", - "hex.builtin.view.disassembler.ppc.spe": "Signal Processing Engine", - "hex.builtin.view.disassembler.region": "Região do código", - "hex.builtin.view.disassembler.riscv.compressed": "Compressed", - "hex.builtin.view.disassembler.settings.mode": "Modo", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "", "hex.builtin.view.find.binary_pattern.alignment": "", "hex.builtin.view.find.context.copy": "", @@ -979,19 +802,6 @@ "hex.builtin.view.theme_manager.save_theme": "", "hex.builtin.view.theme_manager.styles": "", "hex.builtin.view.tools.name": "Ferramentas", - "hex.builtin.view.yara.error": "Erro do compilador Yara: {0}", - "hex.builtin.view.yara.header.matches": "Combinações", - "hex.builtin.view.yara.header.rules": "Regras", - "hex.builtin.view.yara.match": "Combinar Regras", - "hex.builtin.view.yara.matches.identifier": "Identificador", - "hex.builtin.view.yara.matches.variable": "Variável", - "hex.builtin.view.yara.matching": "Combinando...", - "hex.builtin.view.yara.name": "Regras Yara", - "hex.builtin.view.yara.no_rules": "Nenhuma regra YARA encontrada. Coloque-os na pasta 'yara' do ImHex", - "hex.builtin.view.yara.reload": "Recarregar", - "hex.builtin.view.yara.reset": "", - "hex.builtin.view.yara.rule_added": "Regra Yara Adicionada!", - "hex.builtin.view.yara.whole_data": "O arquivo inteiro corresponde!", "hex.builtin.visualizer.binary": "", "hex.builtin.visualizer.decimal.signed.16bit": "Decimal Signed (16 bits)", "hex.builtin.visualizer.decimal.signed.32bit": "Decimal Signed (32 bits)", diff --git a/plugins/builtin/romfs/lang/zh_CN.json b/plugins/builtin/romfs/lang/zh_CN.json index 79fc0cc0b..16cd7a0f5 100644 --- a/plugins/builtin/romfs/lang/zh_CN.json +++ b/plugins/builtin/romfs/lang/zh_CN.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "运行指令 '{0}'", "hex.builtin.command.web.desc": "网站解析", "hex.builtin.command.web.result": "导航到 '{0}'", - "hex.builtin.common.address": "地址", - "hex.builtin.common.allow": "允许", - "hex.builtin.common.begin": "起始", - "hex.builtin.common.big": "大", - "hex.builtin.common.big_endian": "大端序", - "hex.builtin.common.browse": "浏览...", - "hex.builtin.common.bytes": "字节", - "hex.builtin.common.cancel": "取消", - "hex.builtin.common.choose_file": "选择文件", - "hex.builtin.common.close": "关闭", - "hex.builtin.common.comment": "注释", - "hex.builtin.common.count": "数量", - "hex.builtin.common.decimal": "十进制", - "hex.builtin.common.deny": "拒绝", - "hex.builtin.common.dont_show_again": "不要再次显示", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "末尾", - "hex.builtin.common.endian": "端序", - "hex.builtin.common.warning": "警告", - "hex.builtin.common.error": "错误", - "hex.builtin.common.fatal": "致命错误", - "hex.builtin.common.file": "文件", - "hex.builtin.common.filter": "过滤器", - "hex.builtin.common.hexadecimal": "十六进制", - "hex.builtin.common.info": "信息", - "hex.builtin.common.instruction": "指示", - "hex.builtin.common.link": "链接", - "hex.builtin.common.little": "小", - "hex.builtin.common.little_endian": "小端序", - "hex.builtin.common.load": "加载", - "hex.builtin.common.match_selection": "匹配选择", - "hex.builtin.common.name": "名称", - "hex.builtin.common.no": "否", - "hex.builtin.common.number_format": "数字进制", - "hex.builtin.common.octal": "八进制", - "hex.builtin.common.offset": "偏移", - "hex.builtin.common.okay": "好的", - "hex.builtin.common.open": "打开", - "hex.builtin.common.percentage": "百分比", - "hex.builtin.common.processing": "处理", - "hex.builtin.common.project": "项目", - "hex.builtin.common.question": "问题", - "hex.builtin.common.range": "范围", - "hex.builtin.common.range.entire_data": "所有数据", - "hex.builtin.common.range.selection": "选区", - "hex.builtin.common.region": "区域", - "hex.builtin.common.reset": "重置", - "hex.builtin.common.set": "设置", - "hex.builtin.common.settings": "设置", - "hex.builtin.common.size": "大小", - "hex.builtin.common.type": "类型", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "值", - "hex.builtin.common.yes": "是", "hex.builtin.hash.crc.iv": "初始值", "hex.builtin.hash.crc.poly": "多项式", "hex.builtin.hash.crc.refl_in": "输入值取反", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "显示 ASCII 栏", - "hex.builtin.hex_editor.custom_encoding_view": "显示高级解码栏", - "hex.builtin.hex_editor.human_readable_units_footer": "将数据转换为人类可读的单位", - "hex.builtin.hex_editor.data_size": "总大小", - "hex.builtin.hex_editor.gray_out_zero": "显示零字节为灰色", - "hex.builtin.hex_editor.no_bytes": "没有可显示的字节", - "hex.builtin.hex_editor.page": "分页", - "hex.builtin.hex_editor.region": "范围", - "hex.builtin.hex_editor.selection": "选区", - "hex.builtin.hex_editor.selection.none": "未选中", - "hex.builtin.hex_editor.uppercase_hex": "大写十六进制", - "hex.builtin.hex_editor.visualizer": "数据处理器的数据可视化格式", "hex.builtin.inspector.ascii": "ASCII 字符", "hex.builtin.inspector.binary": "二进制(8 位)", "hex.builtin.inspector.bool": "bool", @@ -422,31 +340,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 图像可视化", "hex.builtin.nodes.visualizer.layered_dist": "分层布局", "hex.builtin.nodes.visualizer.layered_dist.header": "分层布局", - "hex.builtin.pattern_drawer.color": "颜色", - "hex.builtin.pattern_drawer.double_click": "双击查看更多", - "hex.builtin.pattern_drawer.end": "结束", - "hex.builtin.pattern_drawer.export": "导出为...", - "hex.builtin.pattern_drawer.favorites": "收藏", - "hex.builtin.pattern_drawer.local": "本地", - "hex.builtin.pattern_drawer.size": "大小", - "hex.builtin.pattern_drawer.spec_name": "显示标准名称", - "hex.builtin.pattern_drawer.start": "开始", - "hex.builtin.pattern_drawer.tree_style.tree": "树", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "自动展开树", - "hex.builtin.pattern_drawer.tree_style.flattened": "扁平化", - "hex.builtin.pattern_drawer.type": "类型", - "hex.builtin.pattern_drawer.updating": "更新模式中...", - "hex.builtin.pattern_drawer.value": "值", - "hex.builtin.pattern_drawer.var_name": "名称", - "hex.builtin.pattern_drawer.visualizer.unknown": "未知可视化器", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "无效参数数", - "hex.builtin.pl_visualizer.3d.rotation": "旋转", - "hex.builtin.pl_visualizer.3d.scale": "缩放", - "hex.builtin.pl_visualizer.coordinates.latitude": "维度", - "hex.builtin.pl_visualizer.coordinates.longitude": "精度", - "hex.builtin.pl_visualizer.coordinates.query": "查找地址", - "hex.builtin.pl_visualizer.coordinates.querying": "正在查找地址...", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "找不到地址", "hex.builtin.popup.close_provider.desc": "", "hex.builtin.popup.close_provider.title": "关闭提供器?", "hex.builtin.popup.docs_question.title": "查找文档", @@ -714,76 +607,6 @@ "hex.builtin.view.diff.provider_a": "提供者A", "hex.builtin.view.diff.provider_b": "提供者B", "hex.builtin.view.diff.removed": "移除", - "hex.builtin.view.disassembler.16bit": "16 位", - "hex.builtin.view.disassembler.32bit": "32 位", - "hex.builtin.view.disassembler.64bit": "64 位", - "hex.builtin.view.disassembler.arch": "架构", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "默认", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "基地址", - "hex.builtin.view.disassembler.bpf.classic": "传统 BPF(cBPF)", - "hex.builtin.view.disassembler.bpf.extended": "扩展 BPF(eBPF)", - "hex.builtin.view.disassembler.disassemble": "反汇编", - "hex.builtin.view.disassembler.disassembling": "反汇编中...", - "hex.builtin.view.disassembler.disassembly.address": "地址", - "hex.builtin.view.disassembler.disassembly.bytes": "字节", - "hex.builtin.view.disassembler.disassembly.offset": "偏移", - "hex.builtin.view.disassembler.disassembly.title": "反汇编", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro MIPS", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "SH2", - "hex.builtin.view.disassembler.sh.sh2a": "SH2A", - "hex.builtin.view.disassembler.sh.sh3": "SH3", - "hex.builtin.view.disassembler.sh.sh4": "SH4", - "hex.builtin.view.disassembler.sh.sh4a": "SH4A", - "hex.builtin.view.disassembler.sh.fpu": "FPU", - "hex.builtin.view.disassembler.sh.dsp": "DSP", - "hex.builtin.view.disassembler.tricore.110": "110", - "hex.builtin.view.disassembler.tricore.120": "120", - "hex.builtin.view.disassembler.tricore.130": "130", - "hex.builtin.view.disassembler.tricore.131": "131", - "hex.builtin.view.disassembler.tricore.160": "160", - "hex.builtin.view.disassembler.tricore.161": "161", - "hex.builtin.view.disassembler.tricore.162": "162", - "hex.builtin.view.disassembler.name": "反汇编", - "hex.builtin.view.disassembler.position": "位置", - "hex.builtin.view.disassembler.ppc.booke": "PowerPC Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "PowerPC 四核处理扩展(QPX)", - "hex.builtin.view.disassembler.ppc.spe": "PowerPC 单核引擎(SPE)", - "hex.builtin.view.disassembler.region": "代码范围", - "hex.builtin.view.disassembler.riscv.compressed": "压缩的 RISC-V", - "hex.builtin.view.disassembler.settings.mode": "模式", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "二进制模式", "hex.builtin.view.find.binary_pattern.alignment": "对齐", "hex.builtin.view.find.context.copy": "复制值", @@ -993,19 +816,6 @@ "hex.builtin.view.theme_manager.save_theme": "保存主题", "hex.builtin.view.theme_manager.styles": "样式", "hex.builtin.view.tools.name": "工具", - "hex.builtin.view.yara.error": "Yara 编译器错误: {0}", - "hex.builtin.view.yara.header.matches": "匹配", - "hex.builtin.view.yara.header.rules": "规则", - "hex.builtin.view.yara.match": "匹配规则", - "hex.builtin.view.yara.matches.identifier": "标识符", - "hex.builtin.view.yara.matches.variable": "变量", - "hex.builtin.view.yara.matching": "匹配中...", - "hex.builtin.view.yara.name": "Yara 规则", - "hex.builtin.view.yara.no_rules": "没有找到 Yara 规则。请将规则放到 ImHex 的 'yara' 目录下。", - "hex.builtin.view.yara.reload": "重新加载", - "hex.builtin.view.yara.reset": "重置", - "hex.builtin.view.yara.rule_added": "Yara 规则已添加!", - "hex.builtin.view.yara.whole_data": "全文件匹配!", "hex.builtin.visualizer.binary": "二进制", "hex.builtin.visualizer.decimal.signed.16bit": "有符号十进制(16 位)", "hex.builtin.visualizer.decimal.signed.32bit": "有符号十进制(32 位)", diff --git a/plugins/builtin/romfs/lang/zh_TW.json b/plugins/builtin/romfs/lang/zh_TW.json index af6188d3e..0846d202a 100644 --- a/plugins/builtin/romfs/lang/zh_TW.json +++ b/plugins/builtin/romfs/lang/zh_TW.json @@ -63,76 +63,6 @@ "hex.builtin.command.cmd.result": "執行命令 '{0}'", "hex.builtin.command.web.desc": "網站查詢", "hex.builtin.command.web.result": "前往 '{0}'", - "hex.builtin.common.address": "位址", - "hex.builtin.common.allow": "允許", - "hex.builtin.common.begin": "起始", - "hex.builtin.common.big": "大", - "hex.builtin.common.big_endian": "大端序", - "hex.builtin.common.browse": "瀏覽...", - "hex.builtin.common.bytes": "位元組", - "hex.builtin.common.cancel": "取消", - "hex.builtin.common.choose_file": "選擇檔案", - "hex.builtin.common.close": "關閉", - "hex.builtin.common.comment": "註解", - "hex.builtin.common.count": "計數", - "hex.builtin.common.decimal": "十進位", - "hex.builtin.common.deny": "拒絕", - "hex.builtin.common.dont_show_again": "不再顯示", - "hex.builtin.common.encoding.ascii": "ASCII", - "hex.builtin.common.encoding.utf16be": "UTF-16BE", - "hex.builtin.common.encoding.utf16le": "UTF-16LE", - "hex.builtin.common.encoding.utf8": "UTF-8", - "hex.builtin.common.end": "結尾", - "hex.builtin.common.endian": "端序", - "hex.builtin.common.warning": "警告", - "hex.builtin.common.error": "錯誤", - "hex.builtin.common.fatal": "嚴重錯誤", - "hex.builtin.common.file": "檔案", - "hex.builtin.common.filter": "篩選", - "hex.builtin.common.hexadecimal": "十六進位", - "hex.builtin.common.info": "資訊", - "hex.builtin.common.instruction": "指令", - "hex.builtin.common.link": "連結", - "hex.builtin.common.little": "小", - "hex.builtin.common.little_endian": "小端序", - "hex.builtin.common.load": "載入", - "hex.builtin.common.match_selection": "符合選取", - "hex.builtin.common.name": "名稱", - "hex.builtin.common.no": "否", - "hex.builtin.common.number_format": "格式", - "hex.builtin.common.octal": "八進位", - "hex.builtin.common.offset": "位移", - "hex.builtin.common.okay": "好", - "hex.builtin.common.open": "開啟", - "hex.builtin.common.percentage": "百分比", - "hex.builtin.common.processing": "正在處理", - "hex.builtin.common.project": "專案", - "hex.builtin.common.question": "問題", - "hex.builtin.common.range": "範圍", - "hex.builtin.common.range.entire_data": "整筆資料", - "hex.builtin.common.range.selection": "所選", - "hex.builtin.common.region": "區域", - "hex.builtin.common.reset": "重設", - "hex.builtin.common.set": "設定", - "hex.builtin.common.settings": "設定", - "hex.builtin.common.size": "大小", - "hex.builtin.common.type": "類型", - "hex.builtin.common.type.f32": "float", - "hex.builtin.common.type.f64": "double", - "hex.builtin.common.type.i16": "int16_t", - "hex.builtin.common.type.i24": "int24_t", - "hex.builtin.common.type.i32": "int32_t", - "hex.builtin.common.type.i48": "int48_t", - "hex.builtin.common.type.i64": "int64_t", - "hex.builtin.common.type.i8": "int8_t", - "hex.builtin.common.type.u16": "uint16_t", - "hex.builtin.common.type.u24": "uint24_t", - "hex.builtin.common.type.u32": "uint32_t", - "hex.builtin.common.type.u48": "uint48_t", - "hex.builtin.common.type.u64": "uint64_t", - "hex.builtin.common.type.u8": "uint8_t", - "hex.builtin.common.value": "數值", - "hex.builtin.common.yes": "是", "hex.builtin.hash.crc.iv": "初始數值", "hex.builtin.hash.crc.poly": "多項式", "hex.builtin.hash.crc.refl_in": "Reflect In", @@ -150,18 +80,6 @@ "hex.builtin.hash.sha256": "SHA256", "hex.builtin.hash.sha384": "SHA384", "hex.builtin.hash.sha512": "SHA512", - "hex.builtin.hex_editor.ascii_view": "顯示 ASCII 欄", - "hex.builtin.hex_editor.custom_encoding_view": "顯示進階解碼欄", - "hex.builtin.hex_editor.human_readable_units_footer": "將大小轉換成較為易讀的單位", - "hex.builtin.hex_editor.data_size": "資料大小", - "hex.builtin.hex_editor.gray_out_zero": "Grey out zeros", - "hex.builtin.hex_editor.no_bytes": "無可用位元組", - "hex.builtin.hex_editor.page": "頁面", - "hex.builtin.hex_editor.region": "區域", - "hex.builtin.hex_editor.selection": "選取", - "hex.builtin.hex_editor.selection.none": "無", - "hex.builtin.hex_editor.uppercase_hex": "十六進位使用大寫字母", - "hex.builtin.hex_editor.visualizer": "資料可視化工具", "hex.builtin.inspector.ascii": "ASCII 字元", "hex.builtin.inspector.binary": "二進位 (8 位元)", "hex.builtin.inspector.bool": "bool", @@ -422,31 +340,6 @@ "hex.builtin.nodes.visualizer.image_rgba.header": "RGBA8 圖片視覺化工具", "hex.builtin.nodes.visualizer.layered_dist": "Layered Distribution", "hex.builtin.nodes.visualizer.layered_dist.header": "Layered Distribution", - "hex.builtin.pattern_drawer.color": "顏色", - "hex.builtin.pattern_drawer.double_click": "點擊兩下以檢視更多項目", - "hex.builtin.pattern_drawer.end": "結尾", - "hex.builtin.pattern_drawer.export": "匯出模式為...", - "hex.builtin.pattern_drawer.favorites": "", - "hex.builtin.pattern_drawer.local": "", - "hex.builtin.pattern_drawer.size": "大小", - "hex.builtin.pattern_drawer.spec_name": "Display specification names", - "hex.builtin.pattern_drawer.start": "起始", - "hex.builtin.pattern_drawer.tree_style.tree": "樹", - "hex.builtin.pattern_drawer.tree_style.auto_expanded": "", - "hex.builtin.pattern_drawer.tree_style.flattened": "", - "hex.builtin.pattern_drawer.type": "類型", - "hex.builtin.pattern_drawer.updating": "正在更新模式...", - "hex.builtin.pattern_drawer.value": "數值", - "hex.builtin.pattern_drawer.var_name": "名稱", - "hex.builtin.pattern_drawer.visualizer.unknown": "", - "hex.builtin.pattern_drawer.visualizer.invalid_parameter_count": "", - "hex.builtin.pl_visualizer.3d.rotation": "", - "hex.builtin.pl_visualizer.3d.scale": "", - "hex.builtin.pl_visualizer.coordinates.latitude": "緯度", - "hex.builtin.pl_visualizer.coordinates.longitude": "經度", - "hex.builtin.pl_visualizer.coordinates.query": "查詢地址", - "hex.builtin.pl_visualizer.coordinates.querying": "正在查詢地址...", - "hex.builtin.pl_visualizer.coordinates.querying_no_address": "找不到地址", "hex.builtin.popup.close_provider.desc": "", "hex.builtin.popup.close_provider.title": "關閉提供者?", "hex.builtin.popup.docs_question.title": "說明文件查詢", @@ -714,76 +607,6 @@ "hex.builtin.view.diff.provider_a": "提供者 A", "hex.builtin.view.diff.provider_b": "提供者 B", "hex.builtin.view.diff.removed": "已移除", - "hex.builtin.view.disassembler.16bit": "16 位元", - "hex.builtin.view.disassembler.32bit": "32 位元", - "hex.builtin.view.disassembler.64bit": "64 位元", - "hex.builtin.view.disassembler.arch": "架構", - "hex.builtin.view.disassembler.arm.arm": "ARM", - "hex.builtin.view.disassembler.arm.armv8": "ARMv8", - "hex.builtin.view.disassembler.arm.cortex_m": "Cortex-M", - "hex.builtin.view.disassembler.arm.default": "預設", - "hex.builtin.view.disassembler.arm.thumb": "Thumb", - "hex.builtin.view.disassembler.base": "基址", - "hex.builtin.view.disassembler.bpf.classic": "經典", - "hex.builtin.view.disassembler.bpf.extended": "擴充", - "hex.builtin.view.disassembler.disassemble": "解譯", - "hex.builtin.view.disassembler.disassembling": "正在反組譯...", - "hex.builtin.view.disassembler.disassembly.address": "位址", - "hex.builtin.view.disassembler.disassembly.bytes": "位元", - "hex.builtin.view.disassembler.disassembly.offset": "位移", - "hex.builtin.view.disassembler.disassembly.title": "反組譯", - "hex.builtin.view.disassembler.m680x.6301": "6301", - "hex.builtin.view.disassembler.m680x.6309": "6309", - "hex.builtin.view.disassembler.m680x.6800": "6800", - "hex.builtin.view.disassembler.m680x.6801": "6801", - "hex.builtin.view.disassembler.m680x.6805": "6805", - "hex.builtin.view.disassembler.m680x.6808": "6808", - "hex.builtin.view.disassembler.m680x.6809": "6809", - "hex.builtin.view.disassembler.m680x.6811": "6811", - "hex.builtin.view.disassembler.m680x.cpu12": "CPU12", - "hex.builtin.view.disassembler.m680x.hcs08": "HCS08", - "hex.builtin.view.disassembler.m68k.000": "000", - "hex.builtin.view.disassembler.m68k.010": "010", - "hex.builtin.view.disassembler.m68k.020": "020", - "hex.builtin.view.disassembler.m68k.030": "030", - "hex.builtin.view.disassembler.m68k.040": "040", - "hex.builtin.view.disassembler.m68k.060": "060", - "hex.builtin.view.disassembler.mips.micro": "Micro", - "hex.builtin.view.disassembler.mips.mips2": "MIPS II", - "hex.builtin.view.disassembler.mips.mips3": "MIPS III", - "hex.builtin.view.disassembler.mips.mips32": "MIPS32", - "hex.builtin.view.disassembler.mips.mips32R6": "MIPS32R6", - "hex.builtin.view.disassembler.mips.mips64": "MIPS64", - "hex.builtin.view.disassembler.mos65xx.6502": "6502", - "hex.builtin.view.disassembler.mos65xx.65816": "65816", - "hex.builtin.view.disassembler.mos65xx.65816_long_m": "65816 Long M", - "hex.builtin.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", - "hex.builtin.view.disassembler.mos65xx.65816_long_x": "65816 Long X", - "hex.builtin.view.disassembler.mos65xx.65c02": "65C02", - "hex.builtin.view.disassembler.mos65xx.w65c02": "W65C02", - "hex.builtin.view.disassembler.sh.sh2": "SH2", - "hex.builtin.view.disassembler.sh.sh2a": "SH2A", - "hex.builtin.view.disassembler.sh.sh3": "SH3", - "hex.builtin.view.disassembler.sh.sh4": "SH4", - "hex.builtin.view.disassembler.sh.sh4a": "SH4A", - "hex.builtin.view.disassembler.sh.fpu": "FPU", - "hex.builtin.view.disassembler.sh.dsp": "DSP", - "hex.builtin.view.disassembler.tricore.110": "110", - "hex.builtin.view.disassembler.tricore.120": "120", - "hex.builtin.view.disassembler.tricore.130": "130", - "hex.builtin.view.disassembler.tricore.131": "131", - "hex.builtin.view.disassembler.tricore.160": "160", - "hex.builtin.view.disassembler.tricore.161": "161", - "hex.builtin.view.disassembler.tricore.162": "162", - "hex.builtin.view.disassembler.name": "反組譯器", - "hex.builtin.view.disassembler.position": "位置", - "hex.builtin.view.disassembler.ppc.booke": "Book-E", - "hex.builtin.view.disassembler.ppc.qpx": "Quad Processing Extensions", - "hex.builtin.view.disassembler.ppc.spe": "訊號處理引擎", - "hex.builtin.view.disassembler.region": "程式碼區域", - "hex.builtin.view.disassembler.riscv.compressed": "Compressed", - "hex.builtin.view.disassembler.settings.mode": "模式", - "hex.builtin.view.disassembler.sparc.v9": "Sparc V9", "hex.builtin.view.find.binary_pattern": "二進位模式", "hex.builtin.view.find.binary_pattern.alignment": "", "hex.builtin.view.find.context.copy": "複製數值", @@ -993,19 +816,6 @@ "hex.builtin.view.theme_manager.save_theme": "儲存主題", "hex.builtin.view.theme_manager.styles": "樣式", "hex.builtin.view.tools.name": "工具", - "hex.builtin.view.yara.error": "Yara 編譯器錯誤:", - "hex.builtin.view.yara.header.matches": "Matches", - "hex.builtin.view.yara.header.rules": "規則", - "hex.builtin.view.yara.match": "Match Rules", - "hex.builtin.view.yara.matches.identifier": "識別碼", - "hex.builtin.view.yara.matches.variable": "變數", - "hex.builtin.view.yara.matching": "Matching...", - "hex.builtin.view.yara.name": "Yara 規則", - "hex.builtin.view.yara.no_rules": "找不到 YARA 規則。請放進 ImHex 的 'yara' 資料夾中", - "hex.builtin.view.yara.reload": "重新載入", - "hex.builtin.view.yara.reset": "重設", - "hex.builtin.view.yara.rule_added": " Yara 規則已新增!", - "hex.builtin.view.yara.whole_data": "Whole file matches!", "hex.builtin.visualizer.binary": "", "hex.builtin.visualizer.decimal.signed.16bit": "十進位有號數 (16 位元)", "hex.builtin.visualizer.decimal.signed.32bit": "十進位有號數 (32 位元)", diff --git a/plugins/builtin/romfs/layouts/default.hexlyt b/plugins/builtin/romfs/layouts/default.hexlyt index 88a45b4d4..79ea56677 100644 --- a/plugins/builtin/romfs/layouts/default.hexlyt +++ b/plugins/builtin/romfs/layouts/default.hexlyt @@ -55,7 +55,7 @@ Pos=-1889,-120 Size=510,420 Collapsed=0 -[Window][###hex.builtin.view.yara.name] +[Window][###hex.yara_rules.view.yara.name] Pos=720,38 Size=560,660 Collapsed=0 @@ -127,7 +127,7 @@ Pos=419,-124 Size=652,660 Collapsed=0 -[Window][###hex.builtin.view.disassembler.name] +[Window][###hex.disassembler.view.disassembler.name] Pos=1004,-204 Size=1336,1320 Collapsed=0 @@ -150,7 +150,7 @@ hex.builtin.view.constants.name=0 hex.builtin.view.data_inspector.name=1 hex.builtin.view.data_processor.name=0 hex.builtin.view.diff.name=0 -hex.builtin.view.disassembler.name=0 +hex.disassembler.view.disassembler.name=0 hex.builtin.view.find.name=0 hex.builtin.view.hashes.name=0 hex.builtin.view.help.about.name=0 @@ -164,5 +164,5 @@ hex.builtin.view.settings.name=0 hex.builtin.view.store.name=0 hex.builtin.view.theme_manager.name=0 hex.builtin.view.tools.name=0 -hex.builtin.view.yara.name=0 +hex.yara_rules.view.yara.name=0 hex.windows.view.tty_console.name=0 \ No newline at end of file diff --git a/plugins/builtin/romfs/layouts/minimal.hexlyt b/plugins/builtin/romfs/layouts/minimal.hexlyt index 42bc25cc8..d856cc544 100644 --- a/plugins/builtin/romfs/layouts/minimal.hexlyt +++ b/plugins/builtin/romfs/layouts/minimal.hexlyt @@ -55,7 +55,7 @@ Pos=-1889,-120 Size=510,420 Collapsed=0 -[Window][###hex.builtin.view.yara.name] +[Window][###hex.yara_rules.view.yara.name] Pos=720,38 Size=560,660 Collapsed=0 @@ -127,7 +127,7 @@ Pos=419,-124 Size=652,660 Collapsed=0 -[Window][###hex.builtin.view.disassembler.name] +[Window][###hex.disassembler.view.disassembler.name] Pos=1004,-204 Size=1336,1320 Collapsed=0 @@ -151,7 +151,7 @@ hex.builtin.view.constants.name=0 hex.builtin.view.data_inspector.name=0 hex.builtin.view.data_processor.name=0 hex.builtin.view.diff.name=0 -hex.builtin.view.disassembler.name=0 +hex.disassembler.view.disassembler.name=0 hex.builtin.view.find.name=0 hex.builtin.view.hashes.name=0 hex.builtin.view.help.about.name=0 @@ -167,7 +167,7 @@ hex.builtin.view.settings.name=0 hex.builtin.view.store.name=0 hex.builtin.view.theme_manager.name=0 hex.builtin.view.tools.name=0 -hex.builtin.view.yara.name=0 +hex.yara_rules.view.yara.name=0 hex.windows.view.tty_console.name=0 hex.builtin.tools.demangler=0 hex.builtin.tools.ascii_table=0 diff --git a/plugins/builtin/source/content/achievements.cpp b/plugins/builtin/source/content/achievements.cpp index 22141cc43..24b69b3eb 100644 --- a/plugins/builtin/source/content/achievements.cpp +++ b/plugins/builtin/source/content/achievements.cpp @@ -4,8 +4,8 @@ #include -#include -#include +#include +#include #include #include @@ -276,11 +276,11 @@ namespace hex::plugin::builtin { if (password.empty()) achievement.setUnlocked(true); else - PopupTextInput::open("Enter Password", "Enter the password to unlock this achievement", [password, &achievement](const std::string &input) { + ui::PopupTextInput::open("Enter Password", "Enter the password to unlock this achievement", [password, &achievement](const std::string &input) { if (input == password) achievement.setUnlocked(true); else - PopupInfo::open("The password you entered was incorrect."); + ui::PopupInfo::open("The password you entered was incorrect."); }); }); @@ -301,7 +301,7 @@ namespace hex::plugin::builtin { return false; } - PopupInfo::open(challengeDescription); + ui::PopupInfo::open(challengeDescription); return true; diff --git a/plugins/builtin/source/content/data_processor_nodes/other_nodes.cpp b/plugins/builtin/source/content/data_processor_nodes/other_nodes.cpp index fe9e76941..d3df0e975 100644 --- a/plugins/builtin/source/content/data_processor_nodes/other_nodes.cpp +++ b/plugins/builtin/source/content/data_processor_nodes/other_nodes.cpp @@ -197,7 +197,7 @@ namespace hex::plugin::builtin { class NodeBufferPatch : public dp::Node { public: - NodeBufferPatch() : Node("hex.builtin.nodes.buffer.patch.header", { dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.input"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.buffer.patch.input.patch"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Integer, "hex.builtin.common.address"), dp::Attribute(dp::Attribute::IOType::Out, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.output") }) { } + NodeBufferPatch() : Node("hex.builtin.nodes.buffer.patch.header", { dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.input"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Buffer, "hex.builtin.nodes.buffer.patch.input.patch"), dp::Attribute(dp::Attribute::IOType::In, dp::Attribute::Type::Integer, "hex.ui.common.address"), dp::Attribute(dp::Attribute::IOType::Out, dp::Attribute::Type::Buffer, "hex.builtin.nodes.common.output") }) { } void process() override { auto buffer = this->getBufferOnInput(0); diff --git a/plugins/builtin/source/content/events.cpp b/plugins/builtin/source/content/events.cpp index 0ba07ecf2..26ddb7150 100644 --- a/plugins/builtin/source/content/events.cpp +++ b/plugins/builtin/source/content/events.cpp @@ -14,8 +14,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -26,7 +26,7 @@ namespace hex::plugin::builtin { if (auto *fileProvider = dynamic_cast(provider); fileProvider != nullptr) { fileProvider->setPath(path); if (!provider->open() || !provider->isAvailable()) { - PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); + ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); }); } else { EventProviderOpened::post(fileProvider); @@ -41,7 +41,7 @@ namespace hex::plugin::builtin { imhexClosing = false; if (ImHexApi::Provider::isDirty() && !imhexClosing) { glfwSetWindowShouldClose(window, GLFW_FALSE); - PopupQuestion::open("hex.builtin.popup.exit_application.desc"_lang, + ui::PopupQuestion::open("hex.builtin.popup.exit_application.desc"_lang, [] { imhexClosing = true; for (const auto &provider : auto(ImHexApi::Provider::getProviders())) @@ -104,7 +104,7 @@ namespace hex::plugin::builtin { fs::openFileBrowser(fs::DialogMode::Open, { }, [](const auto &path) { if (path.extension() == ".hexproj") { if (!ProjectFile::load(path)) { - PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path))); + ui::PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path))); } } else { FileProvider* newProvider = static_cast( @@ -128,7 +128,7 @@ namespace hex::plugin::builtin { fs::openFileBrowser(fs::DialogMode::Open, { {"Project File", "hexproj"} }, [](const auto &path) { if (!ProjectFile::load(path)) { - PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path))); + ui::PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path))); } }); } @@ -149,7 +149,7 @@ namespace hex::plugin::builtin { return; } if (!provider->open()) { - PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); + ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); }); return; } @@ -158,7 +158,7 @@ namespace hex::plugin::builtin { } else if (!provider->hasLoadInterface()) { if (!provider->open() || !provider->isAvailable()) { - PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); + ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); }); return; } @@ -172,22 +172,22 @@ namespace hex::plugin::builtin { }); RequestOpenInfoPopup::subscribe([](const std::string &message) { - PopupInfo::open(message); + ui::PopupInfo::open(message); }); RequestOpenErrorPopup::subscribe([](const std::string &message) { - PopupError::open(message); + ui::PopupError::open(message); }); RequestOpenFatalPopup::subscribe([](const std::string &message) { - PopupFatal::open(message); + ui::PopupFatal::open(message); }); fs::setFileBrowserErrorCallback([](const std::string& errMsg){ #if defined(NFD_PORTAL) - PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.portal"_lang, errMsg)); + ui::PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.portal"_lang, errMsg)); #else - PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.common"_lang, errMsg)); + ui::PopupError::open(hex::format("hex.builtin.popup.error.file_dialog.common"_lang, errMsg)); #endif }); diff --git a/plugins/builtin/source/content/global_actions.cpp b/plugins/builtin/source/content/global_actions.cpp index 1822bca66..ad2484f9f 100644 --- a/plugins/builtin/source/content/global_actions.cpp +++ b/plugins/builtin/source/content/global_actions.cpp @@ -3,7 +3,7 @@ #include #include -#include +#include #include @@ -13,7 +13,7 @@ namespace hex::plugin::builtin { fs::openFileBrowser(fs::DialogMode::Open, { {"Project File", "hexproj"} }, [](const auto &path) { if (!ProjectFile::load(path)) { - PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path))); + ui::PopupError::open(hex::format("hex.builtin.popup.error.project.load"_lang, wolv::util::toUTF8String(path))); } }); } @@ -21,7 +21,7 @@ namespace hex::plugin::builtin { void saveProject() { if (ImHexApi::Provider::isValid() && ProjectFile::hasPath()) { if (!ProjectFile::store()) { - PopupError::open("hex.builtin.popup.error.project.save"_lang); + ui::PopupError::open("hex.builtin.popup.error.project.save"_lang); } else { log::debug("Project saved"); } @@ -36,7 +36,7 @@ namespace hex::plugin::builtin { } if (!ProjectFile::store(path)) { - PopupError::open("hex.builtin.popup.error.project.save"_lang); + ui::PopupError::open("hex.builtin.popup.error.project.save"_lang); } }); } diff --git a/plugins/builtin/source/content/helpers/notification.cpp b/plugins/builtin/source/content/helpers/notification.cpp index 7d0c295c1..1cb2fe37b 100644 --- a/plugins/builtin/source/content/helpers/notification.cpp +++ b/plugins/builtin/source/content/helpers/notification.cpp @@ -1,16 +1,16 @@ #include -#include +#include namespace hex::plugin::builtin { void showError(const std::string& message){ - PopupError::open(message); + ui::PopupError::open(message); log::error(message); } void showWarning(const std::string& message){ - PopupWarning::open(message); + ui::PopupWarning::open(message); log::warn(message); } } diff --git a/plugins/builtin/source/content/main_menu_items.cpp b/plugins/builtin/source/content/main_menu_items.cpp index b42e21fe1..797537678 100644 --- a/plugins/builtin/source/content/main_menu_items.cpp +++ b/plugins/builtin/source/content/main_menu_items.cpp @@ -14,8 +14,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -50,19 +50,19 @@ namespace hex::plugin::builtin { TaskManager::doLater([error]{ switch (error) { case IPSError::InvalidPatchHeader: - PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_header_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_header_error"_lang); break; case IPSError::AddressOutOfRange: - PopupError::open("hex.builtin.menu.file.export.ips.popup.address_out_of_range_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.address_out_of_range_error"_lang); break; case IPSError::PatchTooLarge: - PopupError::open("hex.builtin.menu.file.export.ips.popup.patch_too_large_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.patch_too_large_error"_lang); break; case IPSError::InvalidPatchFormat: - PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_format_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.invalid_patch_format_error"_lang); break; case IPSError::MissingEOF: - PopupError::open("hex.builtin.menu.file.export.ips.popup.missing_eof_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.missing_eof_error"_lang); break; } }); @@ -77,7 +77,7 @@ namespace hex::plugin::builtin { fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) { wolv::io::File inputFile(path, wolv::io::File::Mode::Read); if (!inputFile.isValid()) { - PopupError::open("hex.builtin.menu.file.import.base64.popup.open_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.import.base64.popup.open_error"_lang); return; } @@ -87,26 +87,26 @@ namespace hex::plugin::builtin { auto data = crypt::decode64(base64); if (data.empty()) - PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang); else { fs::openFileBrowser(fs::DialogMode::Save, {}, [&data](const std::fs::path &path) { wolv::io::File outputFile(path, wolv::io::File::Mode::Create); if (!outputFile.isValid()) - PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.import.base64.popup.import_error"_lang); outputFile.writeVector(data); }); } } else { - PopupError::open("hex.builtin.popup.file_open_error"_lang); + ui::PopupError::open("hex.builtin.popup.file_open_error"_lang); } }); } void importIPSPatch() { fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) { - TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &task) { + TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &task) { auto patchData = wolv::io::File(path, wolv::io::File::Mode::Read).readVector(); auto patch = Patches::fromIPSPatch(patchData); if (!patch.has_value()) { @@ -132,7 +132,7 @@ namespace hex::plugin::builtin { void importIPS32Patch() { fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) { - TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &task) { + TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &task) { auto patchData = wolv::io::File(path, wolv::io::File::Mode::Read).readVector(); auto patch = Patches::fromIPS32Patch(patchData); if (!patch.has_value()) { @@ -158,12 +158,12 @@ namespace hex::plugin::builtin { void importModifiedFile() { fs::openFileBrowser(fs::DialogMode::Open, {}, [](const auto &path) { - TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &task) { + TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &task) { auto provider = ImHexApi::Provider::get(); auto patchData = wolv::io::File(path, wolv::io::File::Mode::Read).readVector(); if (patchData.size() != provider->getActualSize()) { - PopupError::open("hex.builtin.menu.file.import.modified_file.popup.invalid_size"_lang); + ui::PopupError::open("hex.builtin.menu.file.import.modified_file.popup.invalid_size"_lang); return; } @@ -199,11 +199,11 @@ namespace hex::plugin::builtin { void exportBase64() { fs::openFileBrowser(fs::DialogMode::Save, {}, [](const auto &path) { - TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [path](auto &) { + TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [path](auto &) { wolv::io::File outputFile(path, wolv::io::File::Mode::Create); if (!outputFile.isValid()) { TaskManager::doLater([] { - PopupError::open("hex.builtin.menu.file.export.base64.popup.export_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.base64.popup.export_error"_lang); }); return; } @@ -238,7 +238,7 @@ namespace hex::plugin::builtin { wolv::io::File file(path, wolv::io::File::Mode::Create); if (!file.isValid()) { TaskManager::doLater([] { - PopupError::open("hex.builtin.menu.file.export.as_language.popup.export_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.as_language.popup.export_error"_lang); }); return; } @@ -251,7 +251,7 @@ namespace hex::plugin::builtin { } void exportReport() { - TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [](auto &) { + TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [](auto &) { std::string data; for (const auto &provider : ImHexApi::Provider::getProviders()) { @@ -269,7 +269,7 @@ namespace hex::plugin::builtin { fs::openFileBrowser(fs::DialogMode::Save, { { "Markdown File", "md" }}, [&data](const auto &path) { auto file = wolv::io::File(path, wolv::io::File::Mode::Create); if (!file.isValid()) { - PopupError::open("hex.builtin.menu.file.export.report.popup.export_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.report.popup.export_error"_lang); return; } @@ -295,14 +295,14 @@ namespace hex::plugin::builtin { patches->get().at(0x00454F45) = value; } - TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [patches](auto &) { + TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [patches](auto &) { auto data = patches->toIPSPatch(); TaskManager::doLater([data] { fs::openFileBrowser(fs::DialogMode::Save, {}, [&data](const auto &path) { auto file = wolv::io::File(path, wolv::io::File::Mode::Create); if (!file.isValid()) { - PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang); return; } @@ -334,14 +334,14 @@ namespace hex::plugin::builtin { patches->get().at(0x45454F45) = value; } - TaskManager::createTask("hex.builtin.common.processing", TaskManager::NoProgress, [patches](auto &) { + TaskManager::createTask("hex.ui.common.processing", TaskManager::NoProgress, [patches](auto &) { auto data = patches->toIPS32Patch(); TaskManager::doLater([data] { fs::openFileBrowser(fs::DialogMode::Save, {}, [&data](const auto &path) { auto file = wolv::io::File(path, wolv::io::File::Mode::Create); if (!file.isValid()) { - PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang); + ui::PopupError::open("hex.builtin.menu.file.export.ips.popup.export_error"_lang); return; } @@ -542,14 +542,14 @@ namespace hex::plugin::builtin { ContentRegistry::Interface::registerMainMenuItem("hex.builtin.menu.workspace", 4000); ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.workspace", "hex.builtin.menu.workspace.layout", "hex.builtin.menu.workspace.layout.save" }, 1100, Shortcut::None, [] { - PopupTextInput::open("hex.builtin.popup.save_layout.title", "hex.builtin.popup.save_layout.desc", [](const std::string &name) { + ui::PopupTextInput::open("hex.builtin.popup.save_layout.title", "hex.builtin.popup.save_layout.desc", [](const std::string &name) { LayoutManager::save(name); }); }, ImHexApi::Provider::isValid); ContentRegistry::Interface::addMenuItemSubMenu({ "hex.builtin.menu.workspace", "hex.builtin.menu.workspace.layout" }, 1150, [] { bool locked = LayoutManager::isLayoutLocked(); - if (ImGui::MenuItem("hex.builtin.menu.workspace.layout.lock", nullptr, &locked, ImHexApi::Provider::isValid())) { + if (ImGui::MenuItem("hex.builtin.menu.workspace.layout.lock"_lang, nullptr, &locked, ImHexApi::Provider::isValid())) { LayoutManager::lockLayout(locked); ContentRegistry::Settings::write("hex.builtin.setting.interface", "hex.builtin.setting.interface.layout_locked", locked); } @@ -584,7 +584,7 @@ namespace hex::plugin::builtin { ContentRegistry::Interface::addMenuItemSeparator({ "hex.builtin.menu.workspace" }, 3000); ContentRegistry::Interface::addMenuItem({ "hex.builtin.menu.workspace", "hex.builtin.menu.workspace.create" }, 3100, Shortcut::None, [] { - PopupTextInput::open("hex.builtin.popup.create_workspace.title", "hex.builtin.popup.create_workspace.desc", [](const std::string &name) { + ui::PopupTextInput::open("hex.builtin.popup.create_workspace.title", "hex.builtin.popup.create_workspace.desc", [](const std::string &name) { WorkspaceManager::createWorkspace(name); }); }, ImHexApi::Provider::isValid); diff --git a/plugins/builtin/source/content/pl_visualizers.cpp b/plugins/builtin/source/content/pl_visualizers.cpp index cbac31a53..498771be8 100644 --- a/plugins/builtin/source/content/pl_visualizers.cpp +++ b/plugins/builtin/source/content/pl_visualizers.cpp @@ -1,36 +1,18 @@ +#include #include -#include - +#include namespace hex::plugin::builtin { - void drawLinePlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawScatterPlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawImageVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawBitmapVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawDisassemblyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void draw3DVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawSoundVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawChunkBasedEntropyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); void drawHexVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawCoordinateVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); - void drawTimestampVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void drawChunkBasedEntropyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); void registerPatternLanguageVisualizers() { using ParamCount = pl::api::FunctionParameterCount; - ContentRegistry::PatternLanguage::addVisualizer("line_plot", drawLinePlotVisualizer, ParamCount::exactly(1)); - ContentRegistry::PatternLanguage::addVisualizer("scatter_plot", drawScatterPlotVisualizer, ParamCount::exactly(2)); - ContentRegistry::PatternLanguage::addVisualizer("image", drawImageVisualizer, ParamCount::exactly(1)); - ContentRegistry::PatternLanguage::addVisualizer("bitmap", drawBitmapVisualizer, ParamCount::exactly(3)); - ContentRegistry::PatternLanguage::addVisualizer("disassembler", drawDisassemblyVisualizer, ParamCount::exactly(4)); - ContentRegistry::PatternLanguage::addVisualizer("3d", draw3DVisualizer, ParamCount::between(2, 6)); - ContentRegistry::PatternLanguage::addVisualizer("sound", drawSoundVisualizer, ParamCount::exactly(3)); + ContentRegistry::PatternLanguage::addVisualizer("hex_viewer", drawHexVisualizer, ParamCount::exactly(1)); ContentRegistry::PatternLanguage::addVisualizer("chunk_entropy", drawChunkBasedEntropyVisualizer, ParamCount::exactly(2)); - ContentRegistry::PatternLanguage::addVisualizer("hex_viewer", drawHexVisualizer, ParamCount::exactly(1)); - ContentRegistry::PatternLanguage::addVisualizer("coordinates", drawCoordinateVisualizer, ParamCount::exactly(2)); - ContentRegistry::PatternLanguage::addVisualizer("timestamp", drawTimestampVisualizer, ParamCount::exactly(1)); } -} +} \ No newline at end of file diff --git a/plugins/builtin/source/content/pl_visualizers/chunk_entropy.cpp b/plugins/builtin/source/content/pl_visualizers/chunk_entropy.cpp index e3bf3e1bf..6bb1aa764 100644 --- a/plugins/builtin/source/content/pl_visualizers/chunk_entropy.cpp +++ b/plugins/builtin/source/content/pl_visualizers/chunk_entropy.cpp @@ -1,13 +1,11 @@ -#include - -#include - #include #include #include #include +#include + namespace hex::plugin::builtin { void drawChunkBasedEntropyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { diff --git a/plugins/builtin/source/content/pl_visualizers/hex_viewer.cpp b/plugins/builtin/source/content/pl_visualizers/hex_viewer.cpp index 9214f8ce1..921dd1b3f 100644 --- a/plugins/builtin/source/content/pl_visualizers/hex_viewer.cpp +++ b/plugins/builtin/source/content/pl_visualizers/hex_viewer.cpp @@ -1,9 +1,10 @@ #include -#include - #include +#include +#include + #include #include #include diff --git a/plugins/builtin/source/content/providers.cpp b/plugins/builtin/source/content/providers.cpp index 797f85b07..190c66333 100644 --- a/plugins/builtin/source/content/providers.cpp +++ b/plugins/builtin/source/content/providers.cpp @@ -9,7 +9,7 @@ #include "content/providers/memory_file_provider.hpp" #include "content/providers/view_provider.hpp" #include -#include "content/popups/popup_notification.hpp" +#include #include "content/helpers/notification.hpp" #include diff --git a/plugins/builtin/source/content/providers/gdb_provider.cpp b/plugins/builtin/source/content/providers/gdb_provider.cpp index b465dcbc2..3457cdaa8 100644 --- a/plugins/builtin/source/content/providers/gdb_provider.cpp +++ b/plugins/builtin/source/content/providers/gdb_provider.cpp @@ -289,7 +289,7 @@ namespace hex::plugin::builtin { ImGui::Separator(); - ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size, ImGuiInputTextFlags_CharsHexadecimal); + ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size, ImGuiInputTextFlags_CharsHexadecimal); if (m_port < 0) m_port = 0; diff --git a/plugins/builtin/source/content/providers/memory_file_provider.cpp b/plugins/builtin/source/content/providers/memory_file_provider.cpp index 9c9405977..b074cddde 100644 --- a/plugins/builtin/source/content/providers/memory_file_provider.cpp +++ b/plugins/builtin/source/content/providers/memory_file_provider.cpp @@ -1,6 +1,6 @@ #include "content/providers/memory_file_provider.hpp" #include "content/providers/file_provider.hpp" -#include "content/popups/popup_text_input.hpp" +#include #include @@ -146,7 +146,7 @@ namespace hex::plugin::builtin { } void MemoryFileProvider::renameFile() { - PopupTextInput::open("hex.builtin.provider.mem_file.rename", "hex.builtin.provider.mem_file.rename.desc", [this](const std::string &name) { + ui::PopupTextInput::open("hex.builtin.provider.mem_file.rename", "hex.builtin.provider.mem_file.rename.desc", [this](const std::string &name) { m_name = name; RequestUpdateWindowTitle::post(); }); diff --git a/plugins/builtin/source/content/providers/process_memory_provider.cpp b/plugins/builtin/source/content/providers/process_memory_provider.cpp index 131987a3c..2964d680c 100644 --- a/plugins/builtin/source/content/providers/process_memory_provider.cpp +++ b/plugins/builtin/source/content/providers/process_memory_provider.cpp @@ -252,9 +252,9 @@ namespace hex::plugin::builtin { #endif if (ImGui::BeginTable("##module_table", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_ScrollY, ImVec2(availableX, availableY))) { - ImGui::TableSetupColumn("hex.builtin.common.region"_lang); - ImGui::TableSetupColumn("hex.builtin.common.size"_lang); - ImGui::TableSetupColumn("hex.builtin.common.name"_lang); + ImGui::TableSetupColumn("hex.ui.common.region"_lang); + ImGui::TableSetupColumn("hex.ui.common.size"_lang); + ImGui::TableSetupColumn("hex.ui.common.name"_lang); ImGui::TableSetupScrollFreeze(0, 1); ImGui::TableHeadersRow(); diff --git a/plugins/builtin/source/content/recent.cpp b/plugins/builtin/source/content/recent.cpp index 7311d776c..d7958f6b8 100644 --- a/plugins/builtin/source/content/recent.cpp +++ b/plugins/builtin/source/content/recent.cpp @@ -15,7 +15,7 @@ #include #include -#include +#include #include namespace hex::plugin::builtin::recent { @@ -131,7 +131,7 @@ namespace hex::plugin::builtin::recent { if (!recentFile.isValid()) continue; - std::string displayName = hex::format("[{}] {}", "hex.builtin.common.project"_lang, wolv::util::toUTF8String(projectFileName)); + std::string displayName = hex::format("[{}] {}", "hex.ui.common.project"_lang, wolv::util::toUTF8String(projectFileName)); nlohmann::json recentEntry { {"type", "project"}, @@ -224,7 +224,7 @@ namespace hex::plugin::builtin::recent { provider->loadSettings(recentEntry.data); if (!provider->open() || !provider->isAvailable()) { - PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); + ui::PopupError::open(hex::format("hex.builtin.provider.error.open"_lang, provider->getErrorMessage())); TaskManager::doLater([provider] { ImHexApi::Provider::remove(provider); }); return; } @@ -269,21 +269,21 @@ namespace hex::plugin::builtin::recent { if (ImGui::BeginTable("##RecentEntryTooltip", 2, ImGuiTableFlags_RowBg)) { ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::TextUnformatted("hex.builtin.common.name"_lang); + ImGui::TextUnformatted("hex.ui.common.name"_lang); ImGui::TableNextColumn(); ImGui::TextUnformatted(recentEntry.displayName.c_str()); ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::TextUnformatted("hex.builtin.common.type"_lang); + ImGui::TextUnformatted("hex.ui.common.type"_lang); ImGui::TableNextColumn(); if (isProject) { - ImGui::TextUnformatted("hex.builtin.common.project"_lang); + ImGui::TextUnformatted("hex.ui.common.project"_lang); ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGui::TextUnformatted("hex.builtin.common.path"_lang); + ImGui::TextUnformatted("hex.ui.common.path"_lang); ImGui::TableNextColumn(); ImGui::TextUnformatted(recentEntry.data["path"].get().c_str()); } else { @@ -303,7 +303,7 @@ namespace hex::plugin::builtin::recent { } if (ImGui::BeginPopup(popupID.c_str())) { - if (ImGui::MenuItem("hex.builtin.common.remove"_lang)) { + if (ImGui::MenuItem("hex.ui.common.remove"_lang)) { shouldRemove = true; } ImGui::EndPopup(); diff --git a/plugins/builtin/source/content/settings_entries.cpp b/plugins/builtin/source/content/settings_entries.cpp index ec120a432..9f5685145 100644 --- a/plugins/builtin/source/content/settings_entries.cpp +++ b/plugins/builtin/source/content/settings_entries.cpp @@ -197,7 +197,7 @@ namespace hex::plugin::builtin { auto format = [this] -> std::string { auto value = m_value * 30; if (value == 0) - return "hex.builtin.common.off"_lang; + return "hex.ui.common.off"_lang; else if (value < 60) return hex::format("hex.builtin.setting.general.auto_backup_time.format.simple"_lang, value); else diff --git a/plugins/builtin/source/content/tools/file_tool_combiner.cpp b/plugins/builtin/source/content/tools/file_tool_combiner.cpp index 85d8284a1..32f02c7d7 100644 --- a/plugins/builtin/source/content/tools/file_tool_combiner.cpp +++ b/plugins/builtin/source/content/tools/file_tool_combiner.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include @@ -113,7 +113,7 @@ namespace hex::plugin::builtin { wolv::io::File output(outputPath, wolv::io::File::Mode::Create); if (!output.isValid()) { - PopupError::open("hex.builtin.tools.file_tools.combiner.error.open_output"_lang); + ui::PopupError::open("hex.builtin.tools.file_tools.combiner.error.open_output"_lang); return; } @@ -126,7 +126,7 @@ namespace hex::plugin::builtin { wolv::io::File input(file, wolv::io::File::Mode::Read); if (!input.isValid()) { - PopupError::open(hex::format("hex.builtin.tools.file_tools.combiner.open_input"_lang, wolv::util::toUTF8String(file))); + ui::PopupError::open(hex::format("hex.builtin.tools.file_tools.combiner.open_input"_lang, wolv::util::toUTF8String(file))); return; } @@ -142,7 +142,7 @@ namespace hex::plugin::builtin { selectedIndex = 0; outputPath.clear(); - PopupInfo::open("hex.builtin.tools.file_tools.combiner.success"_lang); + ui::PopupInfo::open("hex.builtin.tools.file_tools.combiner.success"_lang); }); } } diff --git a/plugins/builtin/source/content/tools/file_tool_shredder.cpp b/plugins/builtin/source/content/tools/file_tool_shredder.cpp index 69dfc5067..4bee6bd02 100644 --- a/plugins/builtin/source/content/tools/file_tool_shredder.cpp +++ b/plugins/builtin/source/content/tools/file_tool_shredder.cpp @@ -7,7 +7,7 @@ #include #include -#include +#include #include #include @@ -54,7 +54,7 @@ namespace hex::plugin::builtin { wolv::io::File file(selectedFile, wolv::io::File::Mode::Write); if (!file.isValid()) { - PopupError::open("hex.builtin.tools.file_tools.shredder.error.open"_lang); + ui::PopupError::open("hex.builtin.tools.file_tools.shredder.error.open"_lang); return; } @@ -128,7 +128,7 @@ namespace hex::plugin::builtin { file.remove(); - PopupInfo::open("hex.builtin.tools.file_tools.shredder.success"_lang); + ui::PopupInfo::open("hex.builtin.tools.file_tools.shredder.success"_lang); }); } } diff --git a/plugins/builtin/source/content/tools/file_tool_splitter.cpp b/plugins/builtin/source/content/tools/file_tool_splitter.cpp index b0b409146..1208a4323 100644 --- a/plugins/builtin/source/content/tools/file_tool_splitter.cpp +++ b/plugins/builtin/source/content/tools/file_tool_splitter.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include @@ -101,12 +101,12 @@ namespace hex::plugin::builtin { wolv::io::File file(selectedFile, wolv::io::File::Mode::Read); if (!file.isValid()) { - PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.open"_lang); + ui::PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.open"_lang); return; } if (file.getSize() < splitSize) { - PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.size"_lang); + ui::PopupError::open("hex.builtin.tools.file_tools.splitter.picker.error.size"_lang); return; } @@ -122,7 +122,7 @@ namespace hex::plugin::builtin { wolv::io::File partFile(path, wolv::io::File::Mode::Create); if (!partFile.isValid()) { - PopupError::open(hex::format("hex.builtin.tools.file_tools.splitter.picker.error.create"_lang, index)); + ui::PopupError::open(hex::format("hex.builtin.tools.file_tools.splitter.picker.error.create"_lang, index)); return; } @@ -135,7 +135,7 @@ namespace hex::plugin::builtin { index++; } - PopupInfo::open("hex.builtin.tools.file_tools.splitter.picker.success"_lang); + ui::PopupInfo::open("hex.builtin.tools.file_tools.splitter.picker.success"_lang); }); } } diff --git a/plugins/builtin/source/content/tools/file_uploader.cpp b/plugins/builtin/source/content/tools/file_uploader.cpp index 7c11e138d..524dc3adf 100644 --- a/plugins/builtin/source/content/tools/file_uploader.cpp +++ b/plugins/builtin/source/content/tools/file_uploader.cpp @@ -21,7 +21,7 @@ namespace hex::plugin::builtin { }); } } else { - if (ImGui::Button("hex.builtin.common.cancel"_lang)) { + if (ImGui::Button("hex.ui.common.cancel"_lang)) { request.cancel(); } } @@ -33,9 +33,9 @@ namespace hex::plugin::builtin { ImGuiExt::Header("hex.builtin.tools.file_uploader.recent"_lang); if (ImGui::BeginTable("##links", 3, ImGuiTableFlags_ScrollY | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg, ImVec2(0, 200))) { - ImGui::TableSetupColumn("hex.builtin.common.file"_lang); - ImGui::TableSetupColumn("hex.builtin.common.link"_lang); - ImGui::TableSetupColumn("hex.builtin.common.size"_lang); + ImGui::TableSetupColumn("hex.ui.common.file"_lang); + ImGui::TableSetupColumn("hex.ui.common.link"_lang); + ImGui::TableSetupColumn("hex.ui.common.size"_lang); ImGui::TableSetupScrollFreeze(0, 1); ImGui::TableHeadersRow(); @@ -81,11 +81,11 @@ namespace hex::plugin::builtin { json.at("data").at("file").at("metadata").at("size").at("readable") }); } catch (...) { - PopupError::open("hex.builtin.tools.file_uploader.invalid_response"_lang); + ui::PopupError::open("hex.builtin.tools.file_uploader.invalid_response"_lang); } } else if (response.getStatusCode() == 0) { // Canceled by user, no action needed - } else PopupError::open(hex::format("hex.builtin.tools.file_uploader.error"_lang, response.getStatusCode())); + } else ui::PopupError::open(hex::format("hex.builtin.tools.file_uploader.error"_lang, response.getStatusCode())); uploadProcess = {}; currFile.clear(); diff --git a/plugins/builtin/source/content/ui_items.cpp b/plugins/builtin/source/content/ui_items.cpp index 8e6263bf2..8a746c410 100644 --- a/plugins/builtin/source/content/ui_items.cpp +++ b/plugins/builtin/source/content/ui_items.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include namespace hex::plugin::builtin { @@ -46,7 +46,7 @@ namespace hex::plugin::builtin { // Task exception popup for (const auto &task : TaskManager::getRunningTasks()) { if (task->hadException()) { - PopupError::open(hex::format("hex.builtin.popup.error.task_exception"_lang, Lang(task->getUnlocalizedName()), task->getExceptionMessage())); + ui::PopupError::open(hex::format("hex.builtin.popup.error.task_exception"_lang, Lang(task->getUnlocalizedName()), task->getExceptionMessage())); task->clearException(); break; } diff --git a/plugins/builtin/source/content/views.cpp b/plugins/builtin/source/content/views.cpp index 0814bebcf..60e3f39ed 100644 --- a/plugins/builtin/source/content/views.cpp +++ b/plugins/builtin/source/content/views.cpp @@ -6,13 +6,11 @@ #include "content/views/view_about.hpp" #include "content/views/view_tools.hpp" #include "content/views/view_data_inspector.hpp" -#include "content/views/view_disassembler.hpp" #include "content/views/view_bookmarks.hpp" #include "content/views/view_patches.hpp" #include "content/views/view_command_palette.hpp" #include "content/views/view_settings.hpp" #include "content/views/view_data_processor.hpp" -#include "content/views/view_yara.hpp" #include "content/views/view_constants.hpp" #include "content/views/view_store.hpp" #include "content/views/view_diff.hpp" @@ -33,7 +31,6 @@ namespace hex::plugin::builtin { ContentRegistry::Views::add(); ContentRegistry::Views::add(); ContentRegistry::Views::add(); - ContentRegistry::Views::add(); ContentRegistry::Views::add(); ContentRegistry::Views::add(); ContentRegistry::Views::add(); @@ -41,7 +38,6 @@ namespace hex::plugin::builtin { ContentRegistry::Views::add(); ContentRegistry::Views::add(); ContentRegistry::Views::add(); - ContentRegistry::Views::add(); ContentRegistry::Views::add(); ContentRegistry::Views::add(); ContentRegistry::Views::add(); diff --git a/plugins/builtin/source/content/views/view_about.cpp b/plugins/builtin/source/content/views/view_about.cpp index 569372447..fd62aab3b 100644 --- a/plugins/builtin/source/content/views/view_about.cpp +++ b/plugins/builtin/source/content/views/view_about.cpp @@ -351,30 +351,24 @@ namespace hex::plugin::builtin { ImGui::TableHeadersRow(); - ImGuiListClipper clipper; - clipper.Begin(plugins.size()); + for (const auto &plugin : plugins) { + if (plugin.isLibraryPlugin()) + continue; - while (clipper.Step()) { - for (int i = clipper.DisplayStart; i < clipper.DisplayEnd; i++) { - const auto &plugin = plugins[i]; - - ImGui::TableNextRow(); - ImGui::TableNextColumn(); - ImGuiExt::TextFormattedColored( - plugin.isBuiltinPlugin() ? ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_Highlight) : ImGui::GetStyleColorVec4(ImGuiCol_Text), - "{}", plugin.getPluginName().c_str() - ); - ImGui::TableNextColumn(); - ImGui::TextUnformatted(plugin.getPluginAuthor().c_str()); - ImGui::TableNextColumn(); - ImGui::TextUnformatted(plugin.getPluginDescription().c_str()); - ImGui::TableNextColumn(); - ImGui::TextUnformatted(plugin.isLoaded() ? ICON_VS_CHECK : ICON_VS_CLOSE); - } + ImGui::TableNextRow(); + ImGui::TableNextColumn(); + ImGuiExt::TextFormattedColored( + plugin.isBuiltinPlugin() ? ImGuiExt::GetCustomColorVec4(ImGuiCustomCol_Highlight) : ImGui::GetStyleColorVec4(ImGuiCol_Text), + "{}", plugin.getPluginName().c_str() + ); + ImGui::TableNextColumn(); + ImGui::TextUnformatted(plugin.getPluginAuthor().c_str()); + ImGui::TableNextColumn(); + ImGui::TextUnformatted(plugin.getPluginDescription().c_str()); + ImGui::TableNextColumn(); + ImGui::TextUnformatted(plugin.isLoaded() ? ICON_VS_CHECK : ICON_VS_CLOSE); } - clipper.End(); - ImGui::EndTable(); } } @@ -480,7 +474,7 @@ namespace hex::plugin::builtin { } } else { // Draw a spinner while the release notes are loading - ImGuiExt::TextSpinner("hex.builtin.common.loading"_lang); + ImGuiExt::TextSpinner("hex.ui.common.loading"_lang); } } @@ -597,7 +591,7 @@ namespace hex::plugin::builtin { } catch (std::exception &e) { commits.emplace_back( - "hex.builtin.common.error"_lang, + "hex.ui.common.error"_lang, e.what(), "", "", @@ -607,7 +601,7 @@ namespace hex::plugin::builtin { } else { // An error occurred, display it commits.emplace_back( - "hex.builtin.common.error"_lang, + "hex.ui.common.error"_lang, "HTTP " + std::to_string(response.getStatusCode()), "", "", @@ -616,7 +610,7 @@ namespace hex::plugin::builtin { } } else { // Draw a spinner while the commits are loading - ImGuiExt::TextSpinner("hex.builtin.common.loading"_lang); + ImGuiExt::TextSpinner("hex.ui.common.loading"_lang); } } diff --git a/plugins/builtin/source/content/views/view_bookmarks.cpp b/plugins/builtin/source/content/views/view_bookmarks.cpp index 4e4621430..d286a00d4 100644 --- a/plugins/builtin/source/content/views/view_bookmarks.cpp +++ b/plugins/builtin/source/content/views/view_bookmarks.cpp @@ -104,7 +104,7 @@ namespace hex::plugin::builtin { // Draw region ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("{}: ", "hex.builtin.common.region"_lang.get()); + ImGuiExt::TextFormatted("{}: ", "hex.ui.common.region"_lang.get()); ImGui::TableNextColumn(); ImGuiExt::TextFormatted("[ 0x{:08X} - 0x{:08X} ] ", bookmark.region.getStartAddress(), bookmark.region.getEndAddress()); @@ -354,7 +354,7 @@ namespace hex::plugin::builtin { ImGui::TableNextRow(ImGuiTableRowFlags_None, rowHeight); ImGui::TableNextColumn(); - ImGui::TextUnformatted("hex.builtin.common.address"_lang); + ImGui::TextUnformatted("hex.ui.common.address"_lang); ImGui::TableNextColumn(); ImGui::TableNextColumn(); @@ -405,7 +405,7 @@ namespace hex::plugin::builtin { ImGui::TableNextColumn(); // Draw size of the bookmark - ImGui::TextUnformatted("hex.builtin.common.size"_lang); + ImGui::TextUnformatted("hex.ui.common.size"_lang); ImGui::TableNextColumn(); ImGui::TableNextColumn(); ImGuiExt::TextFormatted(hex::toByteString(region.size)); diff --git a/plugins/builtin/source/content/views/view_data_inspector.cpp b/plugins/builtin/source/content/views/view_data_inspector.cpp index 890825ef5..6f25ef5bd 100644 --- a/plugins/builtin/source/content/views/view_data_inspector.cpp +++ b/plugins/builtin/source/content/views/view_data_inspector.cpp @@ -332,7 +332,7 @@ namespace hex::plugin::builtin { ImGui::EndTable(); } - ImGuiExt::DimmedButtonToggle("hex.builtin.common.edit"_lang, &m_tableEditingModeEnabled, ImVec2(ImGui::GetContentRegionAvail().x, 0)); + ImGuiExt::DimmedButtonToggle("hex.ui.common.edit"_lang, &m_tableEditingModeEnabled, ImVec2(ImGui::GetContentRegionAvail().x, 0)); ImGui::NewLine(); ImGui::Separator(); @@ -350,9 +350,9 @@ namespace hex::plugin::builtin { } }(); - std::array options = { "hex.builtin.common.little"_lang, "hex.builtin.common.big"_lang }; + std::array options = { "hex.ui.common.little"_lang, "hex.ui.common.big"_lang }; - if (ImGui::SliderInt("hex.builtin.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) { + if (ImGui::SliderInt("hex.ui.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) { m_shouldInvalidate = true; switch (selection) { @@ -373,9 +373,9 @@ namespace hex::plugin::builtin { case NumberDisplayStyle::Octal: return 2; } }(); - std::array options = { "hex.builtin.common.decimal"_lang, "hex.builtin.common.hexadecimal"_lang, "hex.builtin.common.octal"_lang }; + std::array options = { "hex.ui.common.decimal"_lang, "hex.ui.common.hexadecimal"_lang, "hex.ui.common.octal"_lang }; - if (ImGui::SliderInt("hex.builtin.common.number_format"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) { + if (ImGui::SliderInt("hex.ui.common.number_format"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) { m_shouldInvalidate = true; switch (selection) { @@ -390,7 +390,7 @@ namespace hex::plugin::builtin { // Draw invert setting { int selection = m_invert ? 1 : 0; - std::array options = { "hex.builtin.common.no"_lang, "hex.builtin.common.yes"_lang }; + std::array options = { "hex.ui.common.no"_lang, "hex.ui.common.yes"_lang }; if (ImGui::SliderInt("hex.builtin.view.data_inspector.invert"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) { m_shouldInvalidate = true; diff --git a/plugins/builtin/source/content/views/view_data_processor.cpp b/plugins/builtin/source/content/views/view_data_processor.cpp index ee100ea98..c36ee7d34 100644 --- a/plugins/builtin/source/content/views/view_data_processor.cpp +++ b/plugins/builtin/source/content/views/view_data_processor.cpp @@ -1,5 +1,5 @@ #include "content/views/view_data_processor.hpp" -#include "content/popups/popup_notification.hpp" +#include #include #include @@ -852,7 +852,7 @@ namespace hex::plugin::builtin { int nodeId; if (ImNodes::IsNodeHovered(&nodeId) && workspace.currNodeError.has_value() && workspace.currNodeError->node->getId() == nodeId) { ImGui::BeginTooltip(); - ImGui::TextUnformatted("hex.builtin.common.error"_lang); + ImGui::TextUnformatted("hex.ui.common.error"_lang); ImGui::Separator(); ImGui::TextUnformatted(workspace.currNodeError->message.c_str()); ImGui::EndTooltip(); @@ -1194,7 +1194,7 @@ namespace hex::plugin::builtin { m_updateNodePositions = true; } catch (nlohmann::json::exception &e) { - PopupError::open(hex::format("Failed to load nodes: {}", e.what())); + ui::PopupError::open(hex::format("Failed to load nodes: {}", e.what())); } } diff --git a/plugins/builtin/source/content/views/view_diff.cpp b/plugins/builtin/source/content/views/view_diff.cpp index 2d0635a30..16b96a310 100644 --- a/plugins/builtin/source/content/views/view_diff.cpp +++ b/plugins/builtin/source/content/views/view_diff.cpp @@ -262,9 +262,9 @@ namespace hex::plugin::builtin { // Draw the differences table if (ImGui::BeginTable("##differences", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_ScrollY | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Resizable, ImVec2(0, 200_scaled))) { ImGui::TableSetupScrollFreeze(0, 1); - ImGui::TableSetupColumn("hex.builtin.common.begin"_lang); - ImGui::TableSetupColumn("hex.builtin.common.end"_lang); - ImGui::TableSetupColumn("hex.builtin.common.type"_lang); + ImGui::TableSetupColumn("hex.ui.common.begin"_lang); + ImGui::TableSetupColumn("hex.ui.common.end"_lang); + ImGui::TableSetupColumn("hex.ui.common.type"_lang); ImGui::TableHeadersRow(); // Draw the differences if the providers have been analyzed diff --git a/plugins/builtin/source/content/views/view_find.cpp b/plugins/builtin/source/content/views/view_find.cpp index 78fe18f44..8fb07fc48 100644 --- a/plugins/builtin/source/content/views/view_find.cpp +++ b/plugins/builtin/source/content/views/view_find.cpp @@ -62,7 +62,7 @@ namespace hex::plugin::builtin { ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("{}: ", "hex.builtin.common.region"_lang); + ImGuiExt::TextFormatted("{}: ", "hex.ui.common.region"_lang); ImGui::TableNextColumn(); ImGuiExt::TextFormatted("[ 0x{:08X} - 0x{:08X} ]", region.getStartAddress(), region.getEndAddress()); @@ -663,11 +663,11 @@ namespace hex::plugin::builtin { if (ImGui::BeginTabBar("SearchMethods")) { const std::array StringTypes = { - "hex.builtin.common.encoding.ascii"_lang, - "hex.builtin.common.encoding.utf16le"_lang, - "hex.builtin.common.encoding.utf16be"_lang, - hex::format("{} + {}", "hex.builtin.common.encoding.ascii"_lang, "hex.builtin.common.encoding.utf16le"_lang), - hex::format("{} + {}", "hex.builtin.common.encoding.ascii"_lang, "hex.builtin.common.encoding.utf16be"_lang) + "hex.ui.common.encoding.ascii"_lang, + "hex.ui.common.encoding.utf16le"_lang, + "hex.ui.common.encoding.utf16be"_lang, + hex::format("{} + {}", "hex.ui.common.encoding.ascii"_lang, "hex.ui.common.encoding.utf16le"_lang), + hex::format("{} + {}", "hex.ui.common.encoding.ascii"_lang, "hex.ui.common.encoding.utf16be"_lang) }; auto &mode = m_searchSettings.mode; @@ -679,7 +679,7 @@ namespace hex::plugin::builtin { if (settings.minLength < 1) settings.minLength = 1; - if (ImGui::BeginCombo("hex.builtin.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) { + if (ImGui::BeginCombo("hex.ui.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) { for (size_t i = 0; i < StringTypes.size(); i++) { auto type = static_cast(i); @@ -711,9 +711,9 @@ namespace hex::plugin::builtin { mode = SearchSettings::Mode::Sequence; - ImGuiExt::InputTextIcon("hex.builtin.common.value"_lang, ICON_VS_SYMBOL_KEY, settings.sequence); + ImGuiExt::InputTextIcon("hex.ui.common.value"_lang, ICON_VS_SYMBOL_KEY, settings.sequence); - if (ImGui::BeginCombo("hex.builtin.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) { + if (ImGui::BeginCombo("hex.ui.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) { for (size_t i = 0; i < StringTypes.size() - 2; i++) { auto type = static_cast(i); @@ -738,7 +738,7 @@ namespace hex::plugin::builtin { if (settings.minLength < 1) settings.minLength = 1; - if (ImGui::BeginCombo("hex.builtin.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) { + if (ImGui::BeginCombo("hex.ui.common.type"_lang, StringTypes[std::to_underlying(settings.type)].c_str())) { for (size_t i = 0; i < StringTypes.size(); i++) { auto type = static_cast(i); @@ -794,7 +794,7 @@ namespace hex::plugin::builtin { if (ImGuiExt::InputTextIcon("hex.builtin.view.find.value.min"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMin)) edited = true; if (ImGuiExt::InputTextIcon("hex.builtin.view.find.value.max"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMax)) edited = true; } else { - if (ImGuiExt::InputTextIcon("hex.builtin.common.value"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMin)) { + if (ImGuiExt::InputTextIcon("hex.ui.common.value"_lang, ICON_VS_SYMBOL_NUMERIC, settings.inputMin)) { edited = true; settings.inputMax = settings.inputMin; } @@ -810,19 +810,19 @@ namespace hex::plugin::builtin { ImGui::NewLine(); const std::array InputTypes = { - "hex.builtin.common.type.u8"_lang, - "hex.builtin.common.type.u16"_lang, - "hex.builtin.common.type.u32"_lang, - "hex.builtin.common.type.u64"_lang, - "hex.builtin.common.type.i8"_lang, - "hex.builtin.common.type.i16"_lang, - "hex.builtin.common.type.i32"_lang, - "hex.builtin.common.type.i64"_lang, - "hex.builtin.common.type.f32"_lang, - "hex.builtin.common.type.f64"_lang + "hex.ui.common.type.u8"_lang, + "hex.ui.common.type.u16"_lang, + "hex.ui.common.type.u32"_lang, + "hex.ui.common.type.u64"_lang, + "hex.ui.common.type.i8"_lang, + "hex.ui.common.type.i16"_lang, + "hex.ui.common.type.i32"_lang, + "hex.ui.common.type.i64"_lang, + "hex.ui.common.type.f32"_lang, + "hex.ui.common.type.f64"_lang }; - if (ImGui::BeginCombo("hex.builtin.common.type"_lang, InputTypes[std::to_underlying(settings.type)].c_str())) { + if (ImGui::BeginCombo("hex.ui.common.type"_lang, InputTypes[std::to_underlying(settings.type)].c_str())) { for (size_t i = 0; i < InputTypes.size(); i++) { auto type = static_cast(i); @@ -843,8 +843,8 @@ namespace hex::plugin::builtin { } }(); - std::array options = { "hex.builtin.common.little"_lang, "hex.builtin.common.big"_lang }; - if (ImGui::SliderInt("hex.builtin.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) { + std::array options = { "hex.ui.common.little"_lang, "hex.ui.common.big"_lang }; + if (ImGui::SliderInt("hex.ui.common.endian"_lang, &selection, 0, options.size() - 1, options[selection], ImGuiSliderFlags_NoInput)) { edited = true; switch (selection) { default: @@ -932,9 +932,9 @@ namespace hex::plugin::builtin { if (ImGui::BeginTable("##entries", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_Sortable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY, ImMax(ImGui::GetContentRegionAvail(), ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 5)))) { ImGui::TableSetupScrollFreeze(0, 1); - ImGui::TableSetupColumn("hex.builtin.common.offset"_lang, 0, -1, ImGui::GetID("offset")); - ImGui::TableSetupColumn("hex.builtin.common.size"_lang, 0, -1, ImGui::GetID("size")); - ImGui::TableSetupColumn("hex.builtin.common.value"_lang, 0, -1, ImGui::GetID("value")); + ImGui::TableSetupColumn("hex.ui.common.offset"_lang, 0, -1, ImGui::GetID("offset")); + ImGui::TableSetupColumn("hex.ui.common.size"_lang, 0, -1, ImGui::GetID("size")); + ImGui::TableSetupColumn("hex.ui.common.value"_lang, 0, -1, ImGui::GetID("value")); auto sortSpecs = ImGui::TableGetSortSpecs(); diff --git a/plugins/builtin/source/content/views/view_hex_editor.cpp b/plugins/builtin/source/content/views/view_hex_editor.cpp index 9cec7d85d..67518fb8c 100644 --- a/plugins/builtin/source/content/views/view_hex_editor.cpp +++ b/plugins/builtin/source/content/views/view_hex_editor.cpp @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include @@ -214,7 +214,7 @@ namespace hex::plugin::builtin { } if (!m_searchTask.isRunning() && !searchSequence.empty() && m_shouldSearch) { - m_searchTask = TaskManager::createTask("hex.builtin.common.processing", ImHexApi::Provider::get()->getActualSize(), [this, editor, searchSequence](auto &) { + m_searchTask = TaskManager::createTask("hex.ui.common.processing", ImHexApi::Provider::get()->getActualSize(), [this, editor, searchSequence](auto &) { for (u8 retry = 0; retry < 2; retry++) { auto region = this->findSequence(searchSequence, m_backwards); @@ -349,7 +349,7 @@ namespace hex::plugin::builtin { editor->closePopup(); } - ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang, + ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang, [&, this]{ setBaseAddress(m_baseAddress); editor->closePopup(); @@ -383,7 +383,7 @@ namespace hex::plugin::builtin { editor->closePopup(); } - ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang, + ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang, [&, this]{ setPageSize(m_pageSize); editor->closePopup(); @@ -421,7 +421,7 @@ namespace hex::plugin::builtin { editor->closePopup(); } - ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang, + ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang, [&, this]{ this->resize(m_size); editor->closePopup(); @@ -448,10 +448,10 @@ namespace hex::plugin::builtin { void draw(ViewHexEditor *editor) override { ImGui::TextUnformatted("hex.builtin.view.hex_editor.menu.edit.insert"_lang); - ImGuiExt::InputHexadecimal("hex.builtin.common.address"_lang, &m_address); - ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size); + ImGuiExt::InputHexadecimal("hex.ui.common.address"_lang, &m_address); + ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size); - ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang, + ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang, [&, this]{ insert(m_address, m_size); editor->closePopup(); @@ -479,10 +479,10 @@ namespace hex::plugin::builtin { void draw(ViewHexEditor *editor) override { ImGui::TextUnformatted("hex.builtin.view.hex_editor.menu.edit.remove"_lang); - ImGuiExt::InputHexadecimal("hex.builtin.common.address"_lang, &m_address); - ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size); + ImGuiExt::InputHexadecimal("hex.ui.common.address"_lang, &m_address); + ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size); - ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang, + ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang, [&, this]{ remove(m_address, m_size); editor->closePopup(); @@ -510,14 +510,14 @@ namespace hex::plugin::builtin { void draw(ViewHexEditor *editor) override { ImGui::TextUnformatted("hex.builtin.view.hex_editor.menu.edit.fill"_lang); - ImGuiExt::InputHexadecimal("hex.builtin.common.address"_lang, &m_address); - ImGuiExt::InputHexadecimal("hex.builtin.common.size"_lang, &m_size); + ImGuiExt::InputHexadecimal("hex.ui.common.address"_lang, &m_address); + ImGuiExt::InputHexadecimal("hex.ui.common.size"_lang, &m_size); ImGui::Separator(); - ImGuiExt::InputTextIcon("hex.builtin.common.bytes"_lang, ICON_VS_SYMBOL_NAMESPACE, m_input); + ImGuiExt::InputTextIcon("hex.ui.common.bytes"_lang, ICON_VS_SYMBOL_NAMESPACE, m_input); - ImGuiExt::ConfirmButtons("hex.builtin.common.set"_lang, "hex.builtin.common.cancel"_lang, + ImGuiExt::ConfirmButtons("hex.ui.common.set"_lang, "hex.ui.common.cancel"_lang, [&, this] { fill(m_address, m_size, m_input); editor->closePopup(); @@ -640,6 +640,9 @@ namespace hex::plugin::builtin { EventProviderChanged::unsubscribe(this); EventProviderOpened::unsubscribe(this); EventHighlightingChanged::unsubscribe(this); + EventSettingsChanged::unsubscribe(this); + + ContentRegistry::Settings::write("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.bytes_per_row", m_hexEditor.getBytesPerRow()); } void ViewHexEditor::drawPopup() { @@ -1037,6 +1040,14 @@ namespace hex::plugin::builtin { return true; } }); + + m_hexEditor.setBytesPerRow(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.bytes_per_row", m_hexEditor.getBytesPerRow())); + EventSettingsChanged::subscribe(this, [this] { + m_hexEditor.setSelectionColor(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.highlight_color", 0x60C08080)); + m_hexEditor.enableSyncScrolling(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.sync_scrolling", false)); + m_hexEditor.setByteCellPadding(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.byte_padding", 0)); + m_hexEditor.setCharacterCellPadding(ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.char_padding", 0)); + }); } void ViewHexEditor::registerMenuItems() { @@ -1079,7 +1090,7 @@ namespace hex::plugin::builtin { } } - PopupFileChooser::open(basePaths, paths, std::vector{ {"Thingy Table File", "tbl"} }, false, + ui::PopupFileChooser::open(basePaths, paths, std::vector{ {"Thingy Table File", "tbl"} }, false, [this](const auto &path) { TaskManager::createTask("Loading encoding file", 0, [this, path](auto&) { auto encoding = EncodingFile(EncodingFile::Type::Thingy, path); @@ -1280,13 +1291,13 @@ namespace hex::plugin::builtin { return (value >= provider->getBaseAddress()) && (value < (provider->getBaseAddress() + provider->getActualSize())); }; - if (ImGui::MenuItem(hex::format("0x{:08X}", littleEndianValue).c_str(), "hex.builtin.common.little_endian"_lang, false, canJumpTo(littleEndianValue))) { + if (ImGui::MenuItem(hex::format("0x{:08X}", littleEndianValue).c_str(), "hex.ui.common.little_endian"_lang, false, canJumpTo(littleEndianValue))) { if (value < provider->getBaseAddress() + provider->getActualSize()) { ImHexApi::HexEditor::setSelection(littleEndianValue, 1); } } - if (ImGui::MenuItem(hex::format("0x{:08X}", bigEndianValue).c_str(), "hex.builtin.common.big_endian"_lang, false, canJumpTo(bigEndianValue))) { + if (ImGui::MenuItem(hex::format("0x{:08X}", bigEndianValue).c_str(), "hex.ui.common.big_endian"_lang, false, canJumpTo(bigEndianValue))) { if (value < provider->getBaseAddress() + provider->getActualSize()) { ImHexApi::HexEditor::setSelection(bigEndianValue, 1); } diff --git a/plugins/builtin/source/content/views/view_information.cpp b/plugins/builtin/source/content/views/view_information.cpp index 8a3a6996f..65d2006e4 100644 --- a/plugins/builtin/source/content/views/view_information.cpp +++ b/plugins/builtin/source/content/views/view_information.cpp @@ -14,7 +14,7 @@ #include -#include +#include namespace hex::plugin::builtin { @@ -48,7 +48,7 @@ namespace hex::plugin::builtin { ContentRegistry::FileHandler::add({ ".mgc" }, [](const auto &path) { for (const auto &destPath : fs::getDefaultPaths(fs::ImHexPath::Magic)) { if (wolv::io::fs::copyFile(path, destPath / path.filename(), std::fs::copy_options::overwrite_existing)) { - PopupInfo::open("hex.builtin.view.information.magic_db_added"_lang); + ui::PopupInfo::open("hex.builtin.view.information.magic_db_added"_lang); return true; } } @@ -141,7 +141,7 @@ namespace hex::plugin::builtin { auto provider = ImHexApi::Provider::get(); if (ImHexApi::Provider::isValid() && provider->isReadable()) { ImGui::BeginDisabled(m_analyzerTask.isRunning()); - ImGuiExt::BeginSubWindow("hex.builtin.common.settings"_lang); + ImGuiExt::BeginSubWindow("hex.ui.common.settings"_lang); { if (ImGui::BeginTable("SettingsTable", 2, ImGuiTableFlags_BordersInner | ImGuiTableFlags_SizingFixedSame, ImVec2(ImGui::GetContentRegionAvail().x, 0))) { ImGui::TableSetupColumn("Left", ImGuiTableColumnFlags_WidthStretch, 0.5F); diff --git a/plugins/builtin/source/content/views/view_pattern_editor.cpp b/plugins/builtin/source/content/views/view_pattern_editor.cpp index 0d69dc326..c32fbfb9d 100644 --- a/plugins/builtin/source/content/views/view_pattern_editor.cpp +++ b/plugins/builtin/source/content/views/view_pattern_editor.cpp @@ -19,8 +19,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -360,7 +360,7 @@ namespace hex::plugin::builtin { } if (m_dangerousFunctionCalled && !ImGui::IsPopupOpen(ImGuiID(0), ImGuiPopupFlags_AnyPopup)) { - PopupQuestion::open("hex.builtin.view.pattern_editor.dangerous_function.desc"_lang, + ui::PopupQuestion::open("hex.builtin.view.pattern_editor.dangerous_function.desc"_lang, [this] { m_dangerousFunctionsAllowed = DangerousFunctionPerms::Allow; }, [this] { @@ -567,8 +567,8 @@ namespace hex::plugin::builtin { if (ImGui::BeginTable("##sections_table", 3, ImGuiTableFlags_SizingStretchProp | ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY, size)) { ImGui::TableSetupScrollFreeze(0, 1); - ImGui::TableSetupColumn("hex.builtin.common.name"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F); - ImGui::TableSetupColumn("hex.builtin.common.size"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F); + ImGui::TableSetupColumn("hex.ui.common.name"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F); + ImGui::TableSetupColumn("hex.ui.common.size"_lang, ImGuiTableColumnFlags_WidthStretch, 0.5F); ImGui::TableSetupColumn("##button", ImGuiTableColumnFlags_WidthFixed, 20_scaled); ImGui::TableHeadersRow(); @@ -903,32 +903,32 @@ namespace hex::plugin::builtin { ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("{} ", "hex.builtin.common.type"_lang); + ImGuiExt::TextFormatted("{} ", "hex.ui.common.type"_lang); ImGui::TableNextColumn(); ImGuiExt::TextFormatted(" {}", pattern->getTypeName()); ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("{} ", "hex.builtin.common.address"_lang); + ImGuiExt::TextFormatted("{} ", "hex.ui.common.address"_lang); ImGui::TableNextColumn(); ImGuiExt::TextFormatted(" 0x{:08X}", pattern->getOffset()); ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("{} ", "hex.builtin.common.size"_lang); + ImGuiExt::TextFormatted("{} ", "hex.ui.common.size"_lang); ImGui::TableNextColumn(); ImGuiExt::TextFormatted(" {}", hex::toByteString(pattern->getSize())); ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("{} ", "hex.builtin.common.endian"_lang); + ImGuiExt::TextFormatted("{} ", "hex.ui.common.endian"_lang); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted(" {}", pattern->getEndian() == std::endian::little ? "hex.builtin.common.little"_lang : "hex.builtin.common.big"_lang); + ImGuiExt::TextFormatted(" {}", pattern->getEndian() == std::endian::little ? "hex.ui.common.little"_lang : "hex.ui.common.big"_lang); if (const auto &comment = pattern->getComment(); !comment.empty()) { ImGui::TableNextRow(); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("{} ", "hex.builtin.common.comment"_lang); + ImGuiExt::TextFormatted("{} ", "hex.ui.common.comment"_lang); ImGui::TableNextColumn(); ImGui::TextWrapped(" \"%s\"", comment.c_str()); } @@ -1208,7 +1208,7 @@ namespace hex::plugin::builtin { } } - PopupFileChooser::open(basePaths, paths, std::vector{ { "Pattern File", "hexpat" } }, false, + ui::PopupFileChooser::open(basePaths, paths, std::vector{ { "Pattern File", "hexpat" } }, false, [this, provider](const std::fs::path &path) { this->loadPatternFile(path, provider); AchievementManager::unlockAchievement("hex.builtin.achievement.patterns", "hex.builtin.achievement.patterns.load_existing.name"); diff --git a/plugins/builtin/source/content/views/view_provider_settings.cpp b/plugins/builtin/source/content/views/view_provider_settings.cpp index f4405d180..61515200b 100644 --- a/plugins/builtin/source/content/views/view_provider_settings.cpp +++ b/plugins/builtin/source/content/views/view_provider_settings.cpp @@ -1,6 +1,6 @@ #include "content/views/view_provider_settings.hpp" -#include +#include #include namespace hex::plugin::builtin { @@ -37,7 +37,7 @@ namespace hex::plugin::builtin { ImGui::Separator(); ImGui::BeginDisabled(!settingsValid); - if (ImGui::Button("hex.builtin.common.open"_lang)) { + if (ImGui::Button("hex.ui.common.open"_lang)) { if (provider->open()) { EventProviderOpened::post(provider); @@ -49,9 +49,9 @@ namespace hex::plugin::builtin { ImGui::CloseCurrentPopup(); auto errorMessage = provider->getErrorMessage(); if (errorMessage.empty()) { - PopupError::open("hex.builtin.view.provider_settings.load_error"_lang); + ui::PopupError::open("hex.builtin.view.provider_settings.load_error"_lang); } else { - PopupError::open(hex::format("hex.builtin.view.provider_settings.load_error_details"_lang, errorMessage)); + ui::PopupError::open(hex::format("hex.builtin.view.provider_settings.load_error_details"_lang, errorMessage)); } TaskManager::doLater([=] { ImHexApi::Provider::remove(provider); }); } @@ -60,7 +60,7 @@ namespace hex::plugin::builtin { ImGui::SameLine(); - if (ImGui::Button("hex.builtin.common.cancel"_lang)) { + if (ImGui::Button("hex.ui.common.cancel"_lang)) { ImGui::CloseCurrentPopup(); this->getWindowOpenState() = false; TaskManager::doLater([=] { ImHexApi::Provider::remove(provider); }); diff --git a/plugins/builtin/source/content/views/view_settings.cpp b/plugins/builtin/source/content/views/view_settings.cpp index ed66dbcba..8ce745088 100644 --- a/plugins/builtin/source/content/views/view_settings.cpp +++ b/plugins/builtin/source/content/views/view_settings.cpp @@ -5,7 +5,7 @@ #include -#include +#include namespace hex::plugin::builtin { @@ -111,7 +111,7 @@ namespace hex::plugin::builtin { // If a restart is required, ask the user if they want to restart if (!this->getWindowOpenState() && m_triggerPopup) { m_triggerPopup = false; - PopupQuestion::open("hex.builtin.view.settings.restart_question"_lang, + ui::PopupQuestion::open("hex.builtin.view.settings.restart_question"_lang, ImHexApi::System::restartImHex, [this]{ m_restartRequested = false; diff --git a/plugins/builtin/source/content/views/view_store.cpp b/plugins/builtin/source/content/views/view_store.cpp index a645ea1aa..f83d76cc0 100644 --- a/plugins/builtin/source/content/views/view_store.cpp +++ b/plugins/builtin/source/content/views/view_store.cpp @@ -5,7 +5,7 @@ #include -#include +#include #include @@ -310,7 +310,7 @@ namespace hex::plugin::builtin { } if (!downloading) { - PopupError::open("hex.builtin.view.store.download_error"_lang); + ui::PopupError::open("hex.builtin.view.store.download_error"_lang); return false; } diff --git a/plugins/builtin/source/content/welcome_screen.cpp b/plugins/builtin/source/content/welcome_screen.cpp index 322854982..d05a6649c 100644 --- a/plugins/builtin/source/content/welcome_screen.cpp +++ b/plugins/builtin/source/content/welcome_screen.cpp @@ -29,7 +29,7 @@ #include #include -#include +#include #include #include @@ -126,13 +126,13 @@ namespace hex::plugin::builtin { ImGui::NewLine(); static bool dontShowAgain = false; - if (ImGui::Checkbox("hex.builtin.common.dont_show_again"_lang, &dontShowAgain)) { + if (ImGui::Checkbox("hex.ui.common.dont_show_again"_lang, &dontShowAgain)) { ContentRegistry::Settings::write("hex.builtin.setting.general", "hex.builtin.setting.general.show_tips", !dontShowAgain); } - ImGui::SameLine((ImGui::GetMainViewport()->Size / 3 - ImGui::CalcTextSize("hex.builtin.common.close"_lang) - ImGui::GetStyle().FramePadding).x); + ImGui::SameLine((ImGui::GetMainViewport()->Size / 3 - ImGui::CalcTextSize("hex.ui.common.close"_lang) - ImGui::GetStyle().FramePadding).x); - if (ImGui::Button("hex.builtin.common.close"_lang) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) + if (ImGui::Button("hex.ui.common.close"_lang) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) Popup::close(); } }; @@ -508,7 +508,7 @@ namespace hex::plugin::builtin { } if (ContentRegistry::Settings::read("hex.builtin.setting.general", "hex.builtin.setting.general.prev_launch_version", "") == "") { - PopupQuestion::open("hex.builtin.popup.play_tutorial.desc"_lang, + ui::PopupQuestion::open("hex.builtin.popup.play_tutorial.desc"_lang, []{ TutorialManager::startTutorial("hex.builtin.tutorial.introduction"); }, diff --git a/plugins/builtin/source/plugin_builtin.cpp b/plugins/builtin/source/plugin_builtin.cpp index 1909aef36..37843de7b 100644 --- a/plugins/builtin/source/plugin_builtin.cpp +++ b/plugins/builtin/source/plugin_builtin.cpp @@ -19,7 +19,6 @@ namespace hex::plugin::builtin { void registerPatternLanguageFunctions(); void registerPatternLanguagePragmas(); void registerPatternLanguageVisualizers(); - void registerPatternLanguageInlineVisualizers(); void registerCommandPaletteCommands(); void registerSettings(); void loadSettings(); @@ -91,7 +90,6 @@ IMHEX_PLUGIN_SETUP("Built-in", "WerWolv", "Default ImHex functionality") { registerPatternLanguageFunctions(); registerPatternLanguagePragmas(); registerPatternLanguageVisualizers(); - registerPatternLanguageInlineVisualizers(); registerCommandPaletteCommands(); registerThemes(); registerSettings(); diff --git a/plugins/disassembler/CMakeLists.txt b/plugins/disassembler/CMakeLists.txt new file mode 100644 index 000000000..c3c3e311b --- /dev/null +++ b/plugins/disassembler/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 3.16) + +include(ImHexPlugin) + +if (NOT USE_SYSTEM_CAPSTONE) + set(CAPSTONE_BUILD_STATIC_RUNTIME OFF CACHE BOOL "Disable shared library building") + set(CAPSTONE_BUILD_SHARED OFF CACHE BOOL "Disable shared library building") + set(CAPSTONE_BUILD_TESTS OFF CACHE BOOL "Disable tests") + add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/capstone ${CMAKE_CURRENT_BINARY_DIR}/capstone EXCLUDE_FROM_ALL) + set_target_properties(capstone PROPERTIES POSITION_INDEPENDENT_CODE ON) + target_compile_options(capstone PRIVATE -Wno-unused-function) + set(CAPSTONE_LIBRARIES "capstone") + set(CAPSTONE_INCLUDE_DIRS ${THIRD_PARTY_LIBS_FOLDER}/capstone/include) +else() + find_package(PkgConfig REQUIRED) + pkg_search_module(CAPSTONE 4.0.2 REQUIRED capstone) +endif() + +add_imhex_plugin( + NAME + disassembler + SOURCES + source/plugin_disassembler.cpp + + source/content/views/view_disassembler.cpp + + source/content/pl_visualizers/disassembler.cpp + INCLUDES + include + LIBRARIES + ${CAPSTONE_LIBRARIES} + ui +) diff --git a/plugins/builtin/include/content/helpers/disassembler.hpp b/plugins/disassembler/include/content/helpers/disassembler.hpp similarity index 98% rename from plugins/builtin/include/content/helpers/disassembler.hpp rename to plugins/disassembler/include/content/helpers/disassembler.hpp index 61ed618e5..640431c3f 100644 --- a/plugins/builtin/include/content/helpers/disassembler.hpp +++ b/plugins/disassembler/include/content/helpers/disassembler.hpp @@ -4,7 +4,7 @@ #include -namespace hex { +namespace hex::plugin::disasm { enum class Architecture : i32 { diff --git a/plugins/builtin/include/content/views/view_disassembler.hpp b/plugins/disassembler/include/content/views/view_disassembler.hpp similarity index 96% rename from plugins/builtin/include/content/views/view_disassembler.hpp rename to plugins/disassembler/include/content/views/view_disassembler.hpp index 4689b6eb6..3a29f190a 100644 --- a/plugins/builtin/include/content/views/view_disassembler.hpp +++ b/plugins/disassembler/include/content/views/view_disassembler.hpp @@ -10,7 +10,7 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::plugin::disasm { struct Disassembly { u64 address; diff --git a/plugins/disassembler/romfs/lang/de_DE.json b/plugins/disassembler/romfs/lang/de_DE.json new file mode 100644 index 000000000..c2e7c013b --- /dev/null +++ b/plugins/disassembler/romfs/lang/de_DE.json @@ -0,0 +1,78 @@ +{ + "code": "de-DE", + "language": "German", + "country": "Germany", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16-bit", + "hex.disassembler.view.disassembler.32bit": "32-bit", + "hex.disassembler.view.disassembler.64bit": "64-bit", + "hex.disassembler.view.disassembler.arch": "Architektur", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "Standard", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "Basisadresse", + "hex.disassembler.view.disassembler.bpf.classic": "Classic", + "hex.disassembler.view.disassembler.bpf.extended": "Extended", + "hex.disassembler.view.disassembler.disassemble": "Disassemble", + "hex.disassembler.view.disassembler.disassembling": "Disassemblen...", + "hex.disassembler.view.disassembler.disassembly.address": "Adresse", + "hex.disassembler.view.disassembler.disassembly.bytes": "Byte", + "hex.disassembler.view.disassembler.disassembly.offset": "Offset", + "hex.disassembler.view.disassembler.disassembly.title": "Disassembly", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "", + "hex.disassembler.view.disassembler.sh.sh2a": "", + "hex.disassembler.view.disassembler.sh.sh3": "", + "hex.disassembler.view.disassembler.sh.sh4": "", + "hex.disassembler.view.disassembler.sh.sh4a": "", + "hex.disassembler.view.disassembler.sh.fpu": "", + "hex.disassembler.view.disassembler.sh.dsp": "", + "hex.disassembler.view.disassembler.tricore.110": "", + "hex.disassembler.view.disassembler.tricore.120": "", + "hex.disassembler.view.disassembler.tricore.130": "", + "hex.disassembler.view.disassembler.tricore.131": "", + "hex.disassembler.view.disassembler.tricore.160": "", + "hex.disassembler.view.disassembler.tricore.161": "", + "hex.disassembler.view.disassembler.tricore.162": "", + "hex.disassembler.view.disassembler.name": "Disassembler", + "hex.disassembler.view.disassembler.position": "Position", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions", + "hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine", + "hex.disassembler.view.disassembler.region": "Code Region", + "hex.disassembler.view.disassembler.riscv.compressed": "Komprimiert", + "hex.disassembler.view.disassembler.settings.mode": "Modus", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/en_US.json b/plugins/disassembler/romfs/lang/en_US.json new file mode 100644 index 000000000..d380fe47b --- /dev/null +++ b/plugins/disassembler/romfs/lang/en_US.json @@ -0,0 +1,78 @@ +{ + "code": "en-US", + "language": "English", + "country": "United States", + "fallback": true, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16-bit", + "hex.disassembler.view.disassembler.32bit": "32-bit", + "hex.disassembler.view.disassembler.64bit": "64-bit", + "hex.disassembler.view.disassembler.arch": "Architecture", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "Default", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "Base address", + "hex.disassembler.view.disassembler.bpf.classic": "Classic", + "hex.disassembler.view.disassembler.bpf.extended": "Extended", + "hex.disassembler.view.disassembler.disassemble": "Disassemble", + "hex.disassembler.view.disassembler.disassembling": "Disassembling...", + "hex.disassembler.view.disassembler.disassembly.address": "Address", + "hex.disassembler.view.disassembler.disassembly.bytes": "Byte", + "hex.disassembler.view.disassembler.disassembly.offset": "Offset", + "hex.disassembler.view.disassembler.disassembly.title": "Disassembly", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "SH2", + "hex.disassembler.view.disassembler.sh.sh2a": "SH2A", + "hex.disassembler.view.disassembler.sh.sh3": "SH3", + "hex.disassembler.view.disassembler.sh.sh4": "SH4", + "hex.disassembler.view.disassembler.sh.sh4a": "SH4A", + "hex.disassembler.view.disassembler.sh.fpu": "FPU", + "hex.disassembler.view.disassembler.sh.dsp": "DSP", + "hex.disassembler.view.disassembler.tricore.110": "110", + "hex.disassembler.view.disassembler.tricore.120": "120", + "hex.disassembler.view.disassembler.tricore.130": "130", + "hex.disassembler.view.disassembler.tricore.131": "131", + "hex.disassembler.view.disassembler.tricore.160": "160", + "hex.disassembler.view.disassembler.tricore.161": "161", + "hex.disassembler.view.disassembler.tricore.162": "162", + "hex.disassembler.view.disassembler.name": "Disassembler", + "hex.disassembler.view.disassembler.position": "Position", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions", + "hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine", + "hex.disassembler.view.disassembler.region": "Code region", + "hex.disassembler.view.disassembler.riscv.compressed": "Compressed", + "hex.disassembler.view.disassembler.settings.mode": "Mode", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/es_ES.json b/plugins/disassembler/romfs/lang/es_ES.json new file mode 100644 index 000000000..c36969905 --- /dev/null +++ b/plugins/disassembler/romfs/lang/es_ES.json @@ -0,0 +1,78 @@ +{ + "code": "es_ES", + "language": "Spanish", + "country": "Spain", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16-bit", + "hex.disassembler.view.disassembler.32bit": "32-bit", + "hex.disassembler.view.disassembler.64bit": "64-bit", + "hex.disassembler.view.disassembler.arch": "Arquitectura", + "hex.disassembler.view.disassembler.arm.arm": "", + "hex.disassembler.view.disassembler.arm.armv8": "", + "hex.disassembler.view.disassembler.arm.cortex_m": "", + "hex.disassembler.view.disassembler.arm.default": "Estándar", + "hex.disassembler.view.disassembler.arm.thumb": "", + "hex.disassembler.view.disassembler.base": "Dirección base", + "hex.disassembler.view.disassembler.bpf.classic": "Clásica", + "hex.disassembler.view.disassembler.bpf.extended": "Extendida", + "hex.disassembler.view.disassembler.disassemble": "Desensamblar", + "hex.disassembler.view.disassembler.disassembling": "Desensamblando...", + "hex.disassembler.view.disassembler.disassembly.address": "Dirección", + "hex.disassembler.view.disassembler.disassembly.bytes": "Byte", + "hex.disassembler.view.disassembler.disassembly.offset": "Offset", + "hex.disassembler.view.disassembler.disassembly.title": "Desensamblado", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "", + "hex.disassembler.view.disassembler.sh.sh2a": "", + "hex.disassembler.view.disassembler.sh.sh3": "", + "hex.disassembler.view.disassembler.sh.sh4": "", + "hex.disassembler.view.disassembler.sh.sh4a": "", + "hex.disassembler.view.disassembler.sh.fpu": "", + "hex.disassembler.view.disassembler.sh.dsp": "", + "hex.disassembler.view.disassembler.tricore.110": "", + "hex.disassembler.view.disassembler.tricore.120": "", + "hex.disassembler.view.disassembler.tricore.130": "", + "hex.disassembler.view.disassembler.tricore.131": "", + "hex.disassembler.view.disassembler.tricore.160": "", + "hex.disassembler.view.disassembler.tricore.161": "", + "hex.disassembler.view.disassembler.tricore.162": "", + "hex.disassembler.view.disassembler.name": "Desensamblador", + "hex.disassembler.view.disassembler.position": "Posición", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions", + "hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine", + "hex.disassembler.view.disassembler.region": "Región de código", + "hex.disassembler.view.disassembler.riscv.compressed": "Comprimido", + "hex.disassembler.view.disassembler.settings.mode": "Modo", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/it_IT.json b/plugins/disassembler/romfs/lang/it_IT.json new file mode 100644 index 000000000..1f7e49ef0 --- /dev/null +++ b/plugins/disassembler/romfs/lang/it_IT.json @@ -0,0 +1,78 @@ +{ + "code": "it-IT", + "language": "Italian", + "country": "Italy", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16-bit", + "hex.disassembler.view.disassembler.32bit": "32-bit", + "hex.disassembler.view.disassembler.64bit": "64-bit", + "hex.disassembler.view.disassembler.arch": "Architettura", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "Default", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "Indirizzo di base", + "hex.disassembler.view.disassembler.bpf.classic": "Classico", + "hex.disassembler.view.disassembler.bpf.extended": "Esteso", + "hex.disassembler.view.disassembler.disassemble": "Disassembla", + "hex.disassembler.view.disassembler.disassembling": "Disassemblaggio...", + "hex.disassembler.view.disassembler.disassembly.address": "Indirizzo", + "hex.disassembler.view.disassembler.disassembly.bytes": "Byte", + "hex.disassembler.view.disassembler.disassembly.offset": "Offset", + "hex.disassembler.view.disassembler.disassembly.title": "Disassembla", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "", + "hex.disassembler.view.disassembler.sh.sh2a": "", + "hex.disassembler.view.disassembler.sh.sh3": "", + "hex.disassembler.view.disassembler.sh.sh4": "", + "hex.disassembler.view.disassembler.sh.sh4a": "", + "hex.disassembler.view.disassembler.sh.fpu": "", + "hex.disassembler.view.disassembler.sh.dsp": "", + "hex.disassembler.view.disassembler.tricore.110": "", + "hex.disassembler.view.disassembler.tricore.120": "", + "hex.disassembler.view.disassembler.tricore.130": "", + "hex.disassembler.view.disassembler.tricore.131": "", + "hex.disassembler.view.disassembler.tricore.160": "", + "hex.disassembler.view.disassembler.tricore.161": "", + "hex.disassembler.view.disassembler.tricore.162": "", + "hex.disassembler.view.disassembler.name": "Disassembla", + "hex.disassembler.view.disassembler.position": "Posiziona", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions", + "hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine", + "hex.disassembler.view.disassembler.region": "Regione del Codice", + "hex.disassembler.view.disassembler.riscv.compressed": "Compresso", + "hex.disassembler.view.disassembler.settings.mode": "", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/ja_JP.json b/plugins/disassembler/romfs/lang/ja_JP.json new file mode 100644 index 000000000..74bcc9671 --- /dev/null +++ b/plugins/disassembler/romfs/lang/ja_JP.json @@ -0,0 +1,78 @@ +{ + "code": "ja-JP", + "language": "Japanese", + "country": "Japan", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16-bit", + "hex.disassembler.view.disassembler.32bit": "32-bit", + "hex.disassembler.view.disassembler.64bit": "64-bit", + "hex.disassembler.view.disassembler.arch": "アーキテクチャ", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "デフォルト", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "ベースアドレス", + "hex.disassembler.view.disassembler.bpf.classic": "クラシック", + "hex.disassembler.view.disassembler.bpf.extended": "拡張", + "hex.disassembler.view.disassembler.disassemble": "逆アセンブル", + "hex.disassembler.view.disassembler.disassembling": "逆アセンブル中…", + "hex.disassembler.view.disassembler.disassembly.address": "アドレス", + "hex.disassembler.view.disassembler.disassembly.bytes": "バイト", + "hex.disassembler.view.disassembler.disassembly.offset": "オフセット", + "hex.disassembler.view.disassembler.disassembly.title": "逆アセンブル", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "", + "hex.disassembler.view.disassembler.sh.sh2a": "", + "hex.disassembler.view.disassembler.sh.sh3": "", + "hex.disassembler.view.disassembler.sh.sh4": "", + "hex.disassembler.view.disassembler.sh.sh4a": "", + "hex.disassembler.view.disassembler.sh.fpu": "", + "hex.disassembler.view.disassembler.sh.dsp": "", + "hex.disassembler.view.disassembler.tricore.110": "", + "hex.disassembler.view.disassembler.tricore.120": "", + "hex.disassembler.view.disassembler.tricore.130": "", + "hex.disassembler.view.disassembler.tricore.131": "", + "hex.disassembler.view.disassembler.tricore.160": "", + "hex.disassembler.view.disassembler.tricore.161": "", + "hex.disassembler.view.disassembler.tricore.162": "", + "hex.disassembler.view.disassembler.name": "逆アセンブラ", + "hex.disassembler.view.disassembler.position": "位置", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "", + "hex.disassembler.view.disassembler.ppc.spe": "信号処理エンジン", + "hex.disassembler.view.disassembler.region": "コード領域", + "hex.disassembler.view.disassembler.riscv.compressed": "圧縮済み", + "hex.disassembler.view.disassembler.settings.mode": "モード", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/ko_KR.json b/plugins/disassembler/romfs/lang/ko_KR.json new file mode 100644 index 000000000..ef10a23f4 --- /dev/null +++ b/plugins/disassembler/romfs/lang/ko_KR.json @@ -0,0 +1,78 @@ +{ + "code": "ko-KR", + "language": "Korean", + "country": "Korea", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16비트", + "hex.disassembler.view.disassembler.32bit": "32비트", + "hex.disassembler.view.disassembler.64bit": "64비트", + "hex.disassembler.view.disassembler.arch": "아키텍처", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "기본", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "베이스 주소", + "hex.disassembler.view.disassembler.bpf.classic": "클래식", + "hex.disassembler.view.disassembler.bpf.extended": "확장", + "hex.disassembler.view.disassembler.disassemble": "디스어셈블", + "hex.disassembler.view.disassembler.disassembling": "디스어셈블하는 중...", + "hex.disassembler.view.disassembler.disassembly.address": "주소", + "hex.disassembler.view.disassembler.disassembly.bytes": "바이트", + "hex.disassembler.view.disassembler.disassembly.offset": "오프셋", + "hex.disassembler.view.disassembler.disassembly.title": "디스어셈블리", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "SH2", + "hex.disassembler.view.disassembler.sh.sh2a": "SH2A", + "hex.disassembler.view.disassembler.sh.sh3": "SH3", + "hex.disassembler.view.disassembler.sh.sh4": "SH4", + "hex.disassembler.view.disassembler.sh.sh4a": "SH4A", + "hex.disassembler.view.disassembler.sh.fpu": "FPU", + "hex.disassembler.view.disassembler.sh.dsp": "DSP", + "hex.disassembler.view.disassembler.tricore.110": "110", + "hex.disassembler.view.disassembler.tricore.120": "120", + "hex.disassembler.view.disassembler.tricore.130": "130", + "hex.disassembler.view.disassembler.tricore.131": "131", + "hex.disassembler.view.disassembler.tricore.160": "160", + "hex.disassembler.view.disassembler.tricore.161": "161", + "hex.disassembler.view.disassembler.tricore.162": "162", + "hex.disassembler.view.disassembler.name": "디스어셈블러", + "hex.disassembler.view.disassembler.position": "위치", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "쿼드 프로세싱 확장", + "hex.disassembler.view.disassembler.ppc.spe": "시그널 프로세싱 엔진", + "hex.disassembler.view.disassembler.region": "코드 영역", + "hex.disassembler.view.disassembler.riscv.compressed": "압축됨", + "hex.disassembler.view.disassembler.settings.mode": "모드", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/pt_BR.json b/plugins/disassembler/romfs/lang/pt_BR.json new file mode 100644 index 000000000..e6cb44cc7 --- /dev/null +++ b/plugins/disassembler/romfs/lang/pt_BR.json @@ -0,0 +1,78 @@ +{ + "code": "pt-BR", + "language": "Portuguese", + "country": "Brazil", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16-bit", + "hex.disassembler.view.disassembler.32bit": "32-bit", + "hex.disassembler.view.disassembler.64bit": "64-bit", + "hex.disassembler.view.disassembler.arch": "Arquitetura", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "Default", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "Endereço base", + "hex.disassembler.view.disassembler.bpf.classic": "Classico", + "hex.disassembler.view.disassembler.bpf.extended": "Extendido", + "hex.disassembler.view.disassembler.disassemble": "Desmontar", + "hex.disassembler.view.disassembler.disassembling": "Desmontando...", + "hex.disassembler.view.disassembler.disassembly.address": "Address", + "hex.disassembler.view.disassembler.disassembly.bytes": "Byte", + "hex.disassembler.view.disassembler.disassembly.offset": "Offset", + "hex.disassembler.view.disassembler.disassembly.title": "Disassembly", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "", + "hex.disassembler.view.disassembler.sh.sh2a": "", + "hex.disassembler.view.disassembler.sh.sh3": "", + "hex.disassembler.view.disassembler.sh.sh4": "", + "hex.disassembler.view.disassembler.sh.sh4a": "", + "hex.disassembler.view.disassembler.sh.fpu": "", + "hex.disassembler.view.disassembler.sh.dsp": "", + "hex.disassembler.view.disassembler.tricore.110": "", + "hex.disassembler.view.disassembler.tricore.120": "", + "hex.disassembler.view.disassembler.tricore.130": "", + "hex.disassembler.view.disassembler.tricore.131": "", + "hex.disassembler.view.disassembler.tricore.160": "", + "hex.disassembler.view.disassembler.tricore.161": "", + "hex.disassembler.view.disassembler.tricore.162": "", + "hex.disassembler.view.disassembler.name": "Desmontador", + "hex.disassembler.view.disassembler.position": "Posição", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions", + "hex.disassembler.view.disassembler.ppc.spe": "Signal Processing Engine", + "hex.disassembler.view.disassembler.region": "Região do código", + "hex.disassembler.view.disassembler.riscv.compressed": "Compressed", + "hex.disassembler.view.disassembler.settings.mode": "Modo", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/zh_CN.json b/plugins/disassembler/romfs/lang/zh_CN.json new file mode 100644 index 000000000..01f305582 --- /dev/null +++ b/plugins/disassembler/romfs/lang/zh_CN.json @@ -0,0 +1,78 @@ +{ + "code": "zh-CN", + "language": "Chinese (Simplified)", + "country": "China", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16 位", + "hex.disassembler.view.disassembler.32bit": "32 位", + "hex.disassembler.view.disassembler.64bit": "64 位", + "hex.disassembler.view.disassembler.arch": "架构", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "默认", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "基地址", + "hex.disassembler.view.disassembler.bpf.classic": "传统 BPF(cBPF)", + "hex.disassembler.view.disassembler.bpf.extended": "扩展 BPF(eBPF)", + "hex.disassembler.view.disassembler.disassemble": "反汇编", + "hex.disassembler.view.disassembler.disassembling": "反汇编中...", + "hex.disassembler.view.disassembler.disassembly.address": "地址", + "hex.disassembler.view.disassembler.disassembly.bytes": "字节", + "hex.disassembler.view.disassembler.disassembly.offset": "偏移", + "hex.disassembler.view.disassembler.disassembly.title": "反汇编", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro MIPS", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "SH2", + "hex.disassembler.view.disassembler.sh.sh2a": "SH2A", + "hex.disassembler.view.disassembler.sh.sh3": "SH3", + "hex.disassembler.view.disassembler.sh.sh4": "SH4", + "hex.disassembler.view.disassembler.sh.sh4a": "SH4A", + "hex.disassembler.view.disassembler.sh.fpu": "FPU", + "hex.disassembler.view.disassembler.sh.dsp": "DSP", + "hex.disassembler.view.disassembler.tricore.110": "110", + "hex.disassembler.view.disassembler.tricore.120": "120", + "hex.disassembler.view.disassembler.tricore.130": "130", + "hex.disassembler.view.disassembler.tricore.131": "131", + "hex.disassembler.view.disassembler.tricore.160": "160", + "hex.disassembler.view.disassembler.tricore.161": "161", + "hex.disassembler.view.disassembler.tricore.162": "162", + "hex.disassembler.view.disassembler.name": "反汇编", + "hex.disassembler.view.disassembler.position": "位置", + "hex.disassembler.view.disassembler.ppc.booke": "PowerPC Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "PowerPC 四核处理扩展(QPX)", + "hex.disassembler.view.disassembler.ppc.spe": "PowerPC 单核引擎(SPE)", + "hex.disassembler.view.disassembler.region": "代码范围", + "hex.disassembler.view.disassembler.riscv.compressed": "压缩的 RISC-V", + "hex.disassembler.view.disassembler.settings.mode": "模式", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/disassembler/romfs/lang/zh_TW.json b/plugins/disassembler/romfs/lang/zh_TW.json new file mode 100644 index 000000000..ff87bae4c --- /dev/null +++ b/plugins/disassembler/romfs/lang/zh_TW.json @@ -0,0 +1,78 @@ +{ + "code": "zh-TW", + "language": "Chinese (Traditional)", + "country": "Taiwan", + "fallback": false, + "translations": { + "hex.disassembler.view.disassembler.16bit": "16 位元", + "hex.disassembler.view.disassembler.32bit": "32 位元", + "hex.disassembler.view.disassembler.64bit": "64 位元", + "hex.disassembler.view.disassembler.arch": "架構", + "hex.disassembler.view.disassembler.arm.arm": "ARM", + "hex.disassembler.view.disassembler.arm.armv8": "ARMv8", + "hex.disassembler.view.disassembler.arm.cortex_m": "Cortex-M", + "hex.disassembler.view.disassembler.arm.default": "預設", + "hex.disassembler.view.disassembler.arm.thumb": "Thumb", + "hex.disassembler.view.disassembler.base": "基址", + "hex.disassembler.view.disassembler.bpf.classic": "經典", + "hex.disassembler.view.disassembler.bpf.extended": "擴充", + "hex.disassembler.view.disassembler.disassemble": "解譯", + "hex.disassembler.view.disassembler.disassembling": "正在反組譯...", + "hex.disassembler.view.disassembler.disassembly.address": "位址", + "hex.disassembler.view.disassembler.disassembly.bytes": "位元", + "hex.disassembler.view.disassembler.disassembly.offset": "位移", + "hex.disassembler.view.disassembler.disassembly.title": "反組譯", + "hex.disassembler.view.disassembler.m680x.6301": "6301", + "hex.disassembler.view.disassembler.m680x.6309": "6309", + "hex.disassembler.view.disassembler.m680x.6800": "6800", + "hex.disassembler.view.disassembler.m680x.6801": "6801", + "hex.disassembler.view.disassembler.m680x.6805": "6805", + "hex.disassembler.view.disassembler.m680x.6808": "6808", + "hex.disassembler.view.disassembler.m680x.6809": "6809", + "hex.disassembler.view.disassembler.m680x.6811": "6811", + "hex.disassembler.view.disassembler.m680x.cpu12": "CPU12", + "hex.disassembler.view.disassembler.m680x.hcs08": "HCS08", + "hex.disassembler.view.disassembler.m68k.000": "000", + "hex.disassembler.view.disassembler.m68k.010": "010", + "hex.disassembler.view.disassembler.m68k.020": "020", + "hex.disassembler.view.disassembler.m68k.030": "030", + "hex.disassembler.view.disassembler.m68k.040": "040", + "hex.disassembler.view.disassembler.m68k.060": "060", + "hex.disassembler.view.disassembler.mips.micro": "Micro", + "hex.disassembler.view.disassembler.mips.mips2": "MIPS II", + "hex.disassembler.view.disassembler.mips.mips3": "MIPS III", + "hex.disassembler.view.disassembler.mips.mips32": "MIPS32", + "hex.disassembler.view.disassembler.mips.mips32R6": "MIPS32R6", + "hex.disassembler.view.disassembler.mips.mips64": "MIPS64", + "hex.disassembler.view.disassembler.mos65xx.6502": "6502", + "hex.disassembler.view.disassembler.mos65xx.65816": "65816", + "hex.disassembler.view.disassembler.mos65xx.65816_long_m": "65816 Long M", + "hex.disassembler.view.disassembler.mos65xx.65816_long_mx": "65816 Long MX", + "hex.disassembler.view.disassembler.mos65xx.65816_long_x": "65816 Long X", + "hex.disassembler.view.disassembler.mos65xx.65c02": "65C02", + "hex.disassembler.view.disassembler.mos65xx.w65c02": "W65C02", + "hex.disassembler.view.disassembler.sh.sh2": "SH2", + "hex.disassembler.view.disassembler.sh.sh2a": "SH2A", + "hex.disassembler.view.disassembler.sh.sh3": "SH3", + "hex.disassembler.view.disassembler.sh.sh4": "SH4", + "hex.disassembler.view.disassembler.sh.sh4a": "SH4A", + "hex.disassembler.view.disassembler.sh.fpu": "FPU", + "hex.disassembler.view.disassembler.sh.dsp": "DSP", + "hex.disassembler.view.disassembler.tricore.110": "110", + "hex.disassembler.view.disassembler.tricore.120": "120", + "hex.disassembler.view.disassembler.tricore.130": "130", + "hex.disassembler.view.disassembler.tricore.131": "131", + "hex.disassembler.view.disassembler.tricore.160": "160", + "hex.disassembler.view.disassembler.tricore.161": "161", + "hex.disassembler.view.disassembler.tricore.162": "162", + "hex.disassembler.view.disassembler.name": "反組譯器", + "hex.disassembler.view.disassembler.position": "位置", + "hex.disassembler.view.disassembler.ppc.booke": "Book-E", + "hex.disassembler.view.disassembler.ppc.qpx": "Quad Processing Extensions", + "hex.disassembler.view.disassembler.ppc.spe": "訊號處理引擎", + "hex.disassembler.view.disassembler.region": "程式碼區域", + "hex.disassembler.view.disassembler.riscv.compressed": "Compressed", + "hex.disassembler.view.disassembler.settings.mode": "模式", + "hex.disassembler.view.disassembler.sparc.v9": "Sparc V9" + } +} diff --git a/plugins/builtin/source/content/pl_visualizers/disassembler.cpp b/plugins/disassembler/source/content/pl_visualizers/disassembler.cpp similarity index 89% rename from plugins/builtin/source/content/pl_visualizers/disassembler.cpp rename to plugins/disassembler/source/content/pl_visualizers/disassembler.cpp index 3e977de3d..adbb737c6 100644 --- a/plugins/builtin/source/content/pl_visualizers/disassembler.cpp +++ b/plugins/disassembler/source/content/pl_visualizers/disassembler.cpp @@ -1,6 +1,7 @@ #include -#include +#include +#include #include @@ -9,7 +10,7 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::plugin::disasm { void drawDisassemblyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { struct Disassembly { @@ -45,9 +46,9 @@ namespace hex::plugin::builtin { if (ImGui::BeginTable("##disassembly", 3, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg | ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_SizingFixedFit | ImGuiTableFlags_ScrollY, scaled(ImVec2(0, 300)))) { ImGui::TableSetupScrollFreeze(0, 1); - ImGui::TableSetupColumn("hex.builtin.common.address"_lang); - ImGui::TableSetupColumn("hex.builtin.common.bytes"_lang); - ImGui::TableSetupColumn("hex.builtin.common.instruction"_lang); + ImGui::TableSetupColumn("hex.ui.common.address"_lang); + ImGui::TableSetupColumn("hex.ui.common.bytes"_lang); + ImGui::TableSetupColumn("hex.ui.common.instruction"_lang); ImGui::TableHeadersRow(); for (auto &entry : disassembly) { diff --git a/plugins/builtin/source/content/views/view_disassembler.cpp b/plugins/disassembler/source/content/views/view_disassembler.cpp similarity index 60% rename from plugins/builtin/source/content/views/view_disassembler.cpp rename to plugins/disassembler/source/content/views/view_disassembler.cpp index 935ee6ce9..01ad33553 100644 --- a/plugins/builtin/source/content/views/view_disassembler.cpp +++ b/plugins/disassembler/source/content/views/view_disassembler.cpp @@ -7,9 +7,9 @@ using namespace std::literals::string_literals; -namespace hex::plugin::builtin { +namespace hex::plugin::disasm { - ViewDisassembler::ViewDisassembler() : View::Window("hex.builtin.view.disassembler.name") { + ViewDisassembler::ViewDisassembler() : View::Window("hex.disassembler.view.disassembler.name") { EventProviderDeleted::subscribe(this, [this](const auto*) { m_disassembly.clear(); }); @@ -24,7 +24,7 @@ namespace hex::plugin::builtin { void ViewDisassembler::disassemble() { m_disassembly.clear(); - m_disassemblerTask = TaskManager::createTask("hex.builtin.view.disassembler.disassembling", m_codeRegion.getSize(), [this](auto &task) { + m_disassemblerTask = TaskManager::createTask("hex.disassembler.view.disassembler.disassembling", m_codeRegion.getSize(), [this](auto &task) { csh capstoneHandle; cs_insn *instructions = nullptr; @@ -93,20 +93,20 @@ namespace hex::plugin::builtin { void ViewDisassembler::drawContent() { auto provider = ImHexApi::Provider::get(); if (ImHexApi::Provider::isValid() && provider->isReadable()) { - ImGuiExt::Header("hex.builtin.view.disassembler.position"_lang, true); + ImGuiExt::Header("hex.disassembler.view.disassembler.position"_lang, true); // Draw base address input - ImGuiExt::InputHexadecimal("hex.builtin.view.disassembler.base"_lang, &m_baseAddress, ImGuiInputTextFlags_CharsHexadecimal); + ImGuiExt::InputHexadecimal("hex.disassembler.view.disassembler.base"_lang, &m_baseAddress, ImGuiInputTextFlags_CharsHexadecimal); // Draw region selection picker ui::regionSelectionPicker(&m_codeRegion, provider, &m_range); // Draw settings { - ImGuiExt::Header("hex.builtin.common.settings"_lang); + ImGuiExt::Header("hex.ui.common.settings"_lang); // Draw architecture selector - if (ImGui::Combo("hex.builtin.view.disassembler.arch"_lang, reinterpret_cast(&m_architecture), Disassembler::ArchitectureNames.data(), Disassembler::getArchitectureSupportedCount())) + if (ImGui::Combo("hex.disassembler.view.disassembler.arch"_lang, reinterpret_cast(&m_architecture), Disassembler::ArchitectureNames.data(), Disassembler::getArchitectureSupportedCount())) m_mode = cs_mode(0); // Draw sub-settings for each architecture @@ -114,9 +114,9 @@ namespace hex::plugin::builtin { // Draw endian radio buttons. This setting is available for all architectures static int littleEndian = true; - ImGui::RadioButton("hex.builtin.common.little_endian"_lang, &littleEndian, true); + ImGui::RadioButton("hex.ui.common.little_endian"_lang, &littleEndian, true); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.common.big_endian"_lang, &littleEndian, false); + ImGui::RadioButton("hex.ui.common.big_endian"_lang, &littleEndian, false); ImGui::NewLine(); @@ -125,16 +125,16 @@ namespace hex::plugin::builtin { case Architecture::ARM: { static int mode = CS_MODE_ARM; - ImGui::RadioButton("hex.builtin.view.disassembler.arm.arm"_lang, &mode, CS_MODE_ARM); + ImGui::RadioButton("hex.disassembler.view.disassembler.arm.arm"_lang, &mode, CS_MODE_ARM); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.arm.thumb"_lang, &mode, CS_MODE_THUMB); + ImGui::RadioButton("hex.disassembler.view.disassembler.arm.thumb"_lang, &mode, CS_MODE_THUMB); static int extraMode = 0; - ImGui::RadioButton("hex.builtin.view.disassembler.arm.default"_lang, &extraMode, 0); + ImGui::RadioButton("hex.disassembler.view.disassembler.arm.default"_lang, &extraMode, 0); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.arm.cortex_m"_lang, &extraMode, CS_MODE_MCLASS); + ImGui::RadioButton("hex.disassembler.view.disassembler.arm.cortex_m"_lang, &extraMode, CS_MODE_MCLASS); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.arm.armv8"_lang, &extraMode, CS_MODE_V8); + ImGui::RadioButton("hex.disassembler.view.disassembler.arm.armv8"_lang, &extraMode, CS_MODE_V8); m_mode = cs_mode(mode | extraMode); } @@ -142,18 +142,18 @@ namespace hex::plugin::builtin { case Architecture::MIPS: { static int mode = CS_MODE_MIPS32; - ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32"_lang, &mode, CS_MODE_MIPS32); + ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips32"_lang, &mode, CS_MODE_MIPS32); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips64"_lang, &mode, CS_MODE_MIPS64); + ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips64"_lang, &mode, CS_MODE_MIPS64); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips32R6"_lang, &mode, CS_MODE_MIPS32R6); + ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips32R6"_lang, &mode, CS_MODE_MIPS32R6); - ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips2"_lang, &mode, CS_MODE_MIPS2); + ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips2"_lang, &mode, CS_MODE_MIPS2); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.mips.mips3"_lang, &mode, CS_MODE_MIPS3); + ImGui::RadioButton("hex.disassembler.view.disassembler.mips.mips3"_lang, &mode, CS_MODE_MIPS3); static bool microMode; - ImGui::Checkbox("hex.builtin.view.disassembler.mips.micro"_lang, µMode); + ImGui::Checkbox("hex.disassembler.view.disassembler.mips.micro"_lang, µMode); m_mode = cs_mode(mode | (microMode ? CS_MODE_MICRO : cs_mode(0))); } @@ -161,11 +161,11 @@ namespace hex::plugin::builtin { case Architecture::X86: { static int mode = CS_MODE_32; - ImGui::RadioButton("hex.builtin.view.disassembler.16bit"_lang, &mode, CS_MODE_16); + ImGui::RadioButton("hex.disassembler.view.disassembler.16bit"_lang, &mode, CS_MODE_16); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_32); + ImGui::RadioButton("hex.disassembler.view.disassembler.32bit"_lang, &mode, CS_MODE_32); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_64); + ImGui::RadioButton("hex.disassembler.view.disassembler.64bit"_lang, &mode, CS_MODE_64); m_mode = cs_mode(mode); } @@ -173,18 +173,18 @@ namespace hex::plugin::builtin { case Architecture::PPC: { static int mode = CS_MODE_32; - ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_32); + ImGui::RadioButton("hex.disassembler.view.disassembler.32bit"_lang, &mode, CS_MODE_32); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_64); + ImGui::RadioButton("hex.disassembler.view.disassembler.64bit"_lang, &mode, CS_MODE_64); static bool qpx = false; - ImGui::Checkbox("hex.builtin.view.disassembler.ppc.qpx"_lang, &qpx); + ImGui::Checkbox("hex.disassembler.view.disassembler.ppc.qpx"_lang, &qpx); #if CS_API_MAJOR >= 5 static bool spe = false; - ImGui::Checkbox("hex.builtin.view.disassembler.ppc.spe"_lang, &spe); + ImGui::Checkbox("hex.disassembler.view.disassembler.ppc.spe"_lang, &spe); static bool booke = false; - ImGui::Checkbox("hex.builtin.view.disassembler.ppc.booke"_lang, &booke); + ImGui::Checkbox("hex.disassembler.view.disassembler.ppc.booke"_lang, &booke); m_mode = cs_mode(mode | (qpx ? CS_MODE_QPX : cs_mode(0)) | (spe ? CS_MODE_SPE : cs_mode(0)) | (booke ? CS_MODE_BOOKE : cs_mode(0))); #else @@ -195,7 +195,7 @@ namespace hex::plugin::builtin { case Architecture::SPARC: { static bool v9Mode = false; - ImGui::Checkbox("hex.builtin.view.disassembler.sparc.v9"_lang, &v9Mode); + ImGui::Checkbox("hex.disassembler.view.disassembler.sparc.v9"_lang, &v9Mode); m_mode = cs_mode(v9Mode ? CS_MODE_V9 : cs_mode(0)); } @@ -204,12 +204,12 @@ namespace hex::plugin::builtin { case Architecture::RISCV: { static int mode = CS_MODE_RISCV32; - ImGui::RadioButton("hex.builtin.view.disassembler.32bit"_lang, &mode, CS_MODE_RISCV32); + ImGui::RadioButton("hex.disassembler.view.disassembler.32bit"_lang, &mode, CS_MODE_RISCV32); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.64bit"_lang, &mode, CS_MODE_RISCV64); + ImGui::RadioButton("hex.disassembler.view.disassembler.64bit"_lang, &mode, CS_MODE_RISCV64); static bool compressed = false; - ImGui::Checkbox("hex.builtin.view.disassembler.riscv.compressed"_lang, &compressed); + ImGui::Checkbox("hex.disassembler.view.disassembler.riscv.compressed"_lang, &compressed); m_mode = cs_mode(mode | (compressed ? CS_MODE_RISCVC : cs_mode(0))); } @@ -220,15 +220,15 @@ namespace hex::plugin::builtin { static int selectedMode = 0; std::pair modes[] = { - {"hex.builtin.view.disassembler.m68k.000"_lang, CS_MODE_M68K_000}, - { "hex.builtin.view.disassembler.m68k.010"_lang, CS_MODE_M68K_010}, - { "hex.builtin.view.disassembler.m68k.020"_lang, CS_MODE_M68K_020}, - { "hex.builtin.view.disassembler.m68k.030"_lang, CS_MODE_M68K_030}, - { "hex.builtin.view.disassembler.m68k.040"_lang, CS_MODE_M68K_040}, - { "hex.builtin.view.disassembler.m68k.060"_lang, CS_MODE_M68K_060}, + {"hex.disassembler.view.disassembler.m68k.000"_lang, CS_MODE_M68K_000}, + { "hex.disassembler.view.disassembler.m68k.010"_lang, CS_MODE_M68K_010}, + { "hex.disassembler.view.disassembler.m68k.020"_lang, CS_MODE_M68K_020}, + { "hex.disassembler.view.disassembler.m68k.030"_lang, CS_MODE_M68K_030}, + { "hex.disassembler.view.disassembler.m68k.040"_lang, CS_MODE_M68K_040}, + { "hex.disassembler.view.disassembler.m68k.060"_lang, CS_MODE_M68K_060}, }; - if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { + if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { if (ImGui::Selectable(modes[i].first)) selectedMode = i; @@ -244,19 +244,19 @@ namespace hex::plugin::builtin { static int selectedMode = 0; std::pair modes[] = { - {"hex.builtin.view.disassembler.m680x.6301"_lang, CS_MODE_M680X_6301 }, - { "hex.builtin.view.disassembler.m680x.6309"_lang, CS_MODE_M680X_6309 }, - { "hex.builtin.view.disassembler.m680x.6800"_lang, CS_MODE_M680X_6800 }, - { "hex.builtin.view.disassembler.m680x.6801"_lang, CS_MODE_M680X_6801 }, - { "hex.builtin.view.disassembler.m680x.6805"_lang, CS_MODE_M680X_6805 }, - { "hex.builtin.view.disassembler.m680x.6808"_lang, CS_MODE_M680X_6808 }, - { "hex.builtin.view.disassembler.m680x.6809"_lang, CS_MODE_M680X_6809 }, - { "hex.builtin.view.disassembler.m680x.6811"_lang, CS_MODE_M680X_6811 }, - { "hex.builtin.view.disassembler.m680x.cpu12"_lang, CS_MODE_M680X_CPU12}, - { "hex.builtin.view.disassembler.m680x.hcs08"_lang, CS_MODE_M680X_HCS08}, + {"hex.disassembler.view.disassembler.m680x.6301"_lang, CS_MODE_M680X_6301 }, + { "hex.disassembler.view.disassembler.m680x.6309"_lang, CS_MODE_M680X_6309 }, + { "hex.disassembler.view.disassembler.m680x.6800"_lang, CS_MODE_M680X_6800 }, + { "hex.disassembler.view.disassembler.m680x.6801"_lang, CS_MODE_M680X_6801 }, + { "hex.disassembler.view.disassembler.m680x.6805"_lang, CS_MODE_M680X_6805 }, + { "hex.disassembler.view.disassembler.m680x.6808"_lang, CS_MODE_M680X_6808 }, + { "hex.disassembler.view.disassembler.m680x.6809"_lang, CS_MODE_M680X_6809 }, + { "hex.disassembler.view.disassembler.m680x.6811"_lang, CS_MODE_M680X_6811 }, + { "hex.disassembler.view.disassembler.m680x.cpu12"_lang, CS_MODE_M680X_CPU12}, + { "hex.disassembler.view.disassembler.m680x.hcs08"_lang, CS_MODE_M680X_HCS08}, }; - if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { + if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { if (ImGui::Selectable(modes[i].first)) selectedMode = i; @@ -273,16 +273,16 @@ namespace hex::plugin::builtin { static int selectedMode = 0; std::pair modes[] = { - {"hex.builtin.view.disassembler.mos65xx.6502"_lang, CS_MODE_MOS65XX_6502 }, - { "hex.builtin.view.disassembler.mos65xx.65c02"_lang, CS_MODE_MOS65XX_65C02 }, - { "hex.builtin.view.disassembler.mos65xx.w65c02"_lang, CS_MODE_MOS65XX_W65C02 }, - { "hex.builtin.view.disassembler.mos65xx.65816"_lang, CS_MODE_MOS65XX_65816 }, - { "hex.builtin.view.disassembler.mos65xx.65816_long_m"_lang, CS_MODE_MOS65XX_65816_LONG_M }, - { "hex.builtin.view.disassembler.mos65xx.65816_long_x"_lang, CS_MODE_MOS65XX_65816_LONG_X }, - { "hex.builtin.view.disassembler.mos65xx.65816_long_mx"_lang, CS_MODE_MOS65XX_65816_LONG_MX}, + {"hex.disassembler.view.disassembler.mos65xx.6502"_lang, CS_MODE_MOS65XX_6502 }, + { "hex.disassembler.view.disassembler.mos65xx.65c02"_lang, CS_MODE_MOS65XX_65C02 }, + { "hex.disassembler.view.disassembler.mos65xx.w65c02"_lang, CS_MODE_MOS65XX_W65C02 }, + { "hex.disassembler.view.disassembler.mos65xx.65816"_lang, CS_MODE_MOS65XX_65816 }, + { "hex.disassembler.view.disassembler.mos65xx.65816_long_m"_lang, CS_MODE_MOS65XX_65816_LONG_M }, + { "hex.disassembler.view.disassembler.mos65xx.65816_long_x"_lang, CS_MODE_MOS65XX_65816_LONG_X }, + { "hex.disassembler.view.disassembler.mos65xx.65816_long_mx"_lang, CS_MODE_MOS65XX_65816_LONG_MX}, }; - if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { + if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectedMode].first)) { for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { if (ImGui::Selectable(modes[i].first)) selectedMode = i; @@ -298,9 +298,9 @@ namespace hex::plugin::builtin { case Architecture::BPF: { static int mode = CS_MODE_BPF_CLASSIC; - ImGui::RadioButton("hex.builtin.view.disassembler.bpf.classic"_lang, &mode, CS_MODE_BPF_CLASSIC); + ImGui::RadioButton("hex.disassembler.view.disassembler.bpf.classic"_lang, &mode, CS_MODE_BPF_CLASSIC); ImGui::SameLine(); - ImGui::RadioButton("hex.builtin.view.disassembler.bpf.extended"_lang, &mode, CS_MODE_BPF_EXTENDED); + ImGui::RadioButton("hex.disassembler.view.disassembler.bpf.extended"_lang, &mode, CS_MODE_BPF_EXTENDED); m_mode = cs_mode(mode); } @@ -312,14 +312,14 @@ namespace hex::plugin::builtin { static bool dsp = false; std::pair modes[] = { - { "hex.builtin.view.disassembler.sh.sh2"_lang, CS_MODE_SH2 }, - { "hex.builtin.view.disassembler.sh.sh2a"_lang, CS_MODE_SH2A }, - { "hex.builtin.view.disassembler.sh.sh3"_lang, CS_MODE_SH3 }, - { "hex.builtin.view.disassembler.sh.sh4"_lang, CS_MODE_SH4 }, - { "hex.builtin.view.disassembler.sh.sh4a"_lang, CS_MODE_SH4A }, + { "hex.disassembler.view.disassembler.sh.sh2"_lang, CS_MODE_SH2 }, + { "hex.disassembler.view.disassembler.sh.sh2a"_lang, CS_MODE_SH2A }, + { "hex.disassembler.view.disassembler.sh.sh3"_lang, CS_MODE_SH3 }, + { "hex.disassembler.view.disassembler.sh.sh4"_lang, CS_MODE_SH4 }, + { "hex.disassembler.view.disassembler.sh.sh4a"_lang, CS_MODE_SH4A }, }; - if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) { + if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) { for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { if (ImGui::Selectable(modes[i].first)) selectionMode = i; @@ -327,9 +327,9 @@ namespace hex::plugin::builtin { ImGui::EndCombo(); } - ImGui::Checkbox("hex.builtin.view.disassembler.sh.fpu"_lang, &fpu); + ImGui::Checkbox("hex.disassembler.view.disassembler.sh.fpu"_lang, &fpu); ImGui::SameLine(); - ImGui::Checkbox("hex.builtin.view.disassembler.sh.dsp"_lang, &dsp); + ImGui::Checkbox("hex.disassembler.view.disassembler.sh.dsp"_lang, &dsp); m_mode = cs_mode(modes[selectionMode].second | (fpu ? CS_MODE_SHFPU : cs_mode(0)) | (dsp ? CS_MODE_SHDSP : cs_mode(0))); } @@ -339,16 +339,16 @@ namespace hex::plugin::builtin { static u32 selectionMode = 0; std::pair modes[] = { - { "hex.builtin.view.disassembler.tricore.110"_lang, CS_MODE_TRICORE_110 }, - { "hex.builtin.view.disassembler.tricore.120"_lang, CS_MODE_TRICORE_120 }, - { "hex.builtin.view.disassembler.tricore.130"_lang, CS_MODE_TRICORE_130 }, - { "hex.builtin.view.disassembler.tricore.131"_lang, CS_MODE_TRICORE_131 }, - { "hex.builtin.view.disassembler.tricore.160"_lang, CS_MODE_TRICORE_160 }, - { "hex.builtin.view.disassembler.tricore.161"_lang, CS_MODE_TRICORE_161 }, - { "hex.builtin.view.disassembler.tricore.162"_lang, CS_MODE_TRICORE_162 }, + { "hex.disassembler.view.disassembler.tricore.110"_lang, CS_MODE_TRICORE_110 }, + { "hex.disassembler.view.disassembler.tricore.120"_lang, CS_MODE_TRICORE_120 }, + { "hex.disassembler.view.disassembler.tricore.130"_lang, CS_MODE_TRICORE_130 }, + { "hex.disassembler.view.disassembler.tricore.131"_lang, CS_MODE_TRICORE_131 }, + { "hex.disassembler.view.disassembler.tricore.160"_lang, CS_MODE_TRICORE_160 }, + { "hex.disassembler.view.disassembler.tricore.161"_lang, CS_MODE_TRICORE_161 }, + { "hex.disassembler.view.disassembler.tricore.162"_lang, CS_MODE_TRICORE_162 }, }; - if (ImGui::BeginCombo("hex.builtin.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) { + if (ImGui::BeginCombo("hex.disassembler.view.disassembler.settings.mode"_lang, modes[selectionMode].first)) { for (u32 i = 0; i < IM_ARRAYSIZE(modes); i++) { if (ImGui::Selectable(modes[i].first)) selectionMode = i; @@ -377,7 +377,7 @@ namespace hex::plugin::builtin { // Draw disassemble button ImGui::BeginDisabled(m_disassemblerTask.isRunning()); { - if (ImGui::Button("hex.builtin.view.disassembler.disassemble"_lang)) + if (ImGui::Button("hex.disassembler.view.disassembler.disassemble"_lang)) this->disassemble(); } ImGui::EndDisabled(); @@ -385,21 +385,21 @@ namespace hex::plugin::builtin { // Draw a spinner if the disassembler is running if (m_disassemblerTask.isRunning()) { ImGui::SameLine(); - ImGuiExt::TextSpinner("hex.builtin.view.disassembler.disassembling"_lang); + ImGuiExt::TextSpinner("hex.disassembler.view.disassembler.disassembling"_lang); } ImGui::NewLine(); - ImGui::TextUnformatted("hex.builtin.view.disassembler.disassembly.title"_lang); + ImGui::TextUnformatted("hex.disassembler.view.disassembler.disassembly.title"_lang); ImGui::Separator(); // Draw disassembly table if (ImGui::BeginTable("##disassembly", 4, ImGuiTableFlags_ScrollY | ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_RowBg | ImGuiTableFlags_Reorderable | ImGuiTableFlags_Hideable)) { ImGui::TableSetupScrollFreeze(0, 1); - ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.address"_lang); - ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.offset"_lang); - ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.bytes"_lang); - ImGui::TableSetupColumn("hex.builtin.view.disassembler.disassembly.title"_lang); + ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.address"_lang); + ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.offset"_lang); + ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.bytes"_lang); + ImGui::TableSetupColumn("hex.disassembler.view.disassembler.disassembly.title"_lang); if (!m_disassemblerTask.isRunning()) { ImGuiListClipper clipper; diff --git a/plugins/disassembler/source/plugin_disassembler.cpp b/plugins/disassembler/source/plugin_disassembler.cpp new file mode 100644 index 000000000..c81f0d3b1 --- /dev/null +++ b/plugins/disassembler/source/plugin_disassembler.cpp @@ -0,0 +1,43 @@ +#include + +#include +#include + +#include + +#include + +#include "content/views/view_disassembler.hpp" + +using namespace hex; +using namespace hex::plugin::disasm; + +namespace hex::plugin::disasm { + + void drawDisassemblyVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + +} + +namespace { + + void registerViews() { + ContentRegistry::Views::add(); + } + + void registerPlVisualizers() { + using ParamCount = pl::api::FunctionParameterCount; + + ContentRegistry::PatternLanguage::addVisualizer("disassembler", drawDisassemblyVisualizer, ParamCount::exactly(4)); + } + +} + + +IMHEX_PLUGIN_SETUP("Disassembler", "WerWolv", "Disassembler support") { + hex::log::debug("Using romfs: '{}'", romfs::name()); + for (auto &path : romfs::list("lang")) + hex::ContentRegistry::Language::addLocalization(nlohmann::json::parse(romfs::get(path).string())); + + registerViews(); + registerPlVisualizers(); +} diff --git a/plugins/script_loader/CMakeLists.txt b/plugins/script_loader/CMakeLists.txt index 84c7e7be0..baa8ffcd9 100644 --- a/plugins/script_loader/CMakeLists.txt +++ b/plugins/script_loader/CMakeLists.txt @@ -1,52 +1,48 @@ cmake_minimum_required(VERSION 3.16) -if (NOT EMSCRIPTEN) +include(ImHexPlugin) +find_package(CoreClrEmbed) - include(ImHexPlugin) - find_package(CoreClrEmbed) +add_imhex_plugin( + NAME + script_loader - add_imhex_plugin( - NAME - script_loader + SOURCES + source/plugin_script_loader.cpp - SOURCES - source/plugin_script_loader.cpp + INCLUDES + include +) - INCLUDES - include +if (CoreClrEmbed_FOUND) + add_library(nethost SHARED IMPORTED) + target_include_directories(nethost INTERFACE "${CoreClrEmbed_INCLUDE_DIRS}") + get_filename_component(CoreClrEmbed_FOLDER ${CoreClrEmbed_SHARED_LIBRARIES} DIRECTORY) + set_target_properties(nethost + PROPERTIES + IMPORTED_IMPLIB ${CoreClrEmbed_SHARED_LIBRARIES} + IMPORTED_LOCATION ${CoreClrEmbed_LIBRARIES} + BUILD_RPATH ${CoreClrEmbed_FOLDER} + INSTALL_RPATH ${CoreClrEmbed_FOLDER}) + + target_link_directories(script_loader PRIVATE ${CoreClrEmbed_FOLDER}) + target_include_directories(script_loader PRIVATE ${CoreClrEmbed_INCLUDE_DIRS}) + target_compile_definitions(script_loader PRIVATE DOTNET_PLUGINS=1) + target_sources(script_loader PRIVATE + source/loaders/dotnet/dotnet_loader.cpp + + source/script_api/v1/mem.cpp + source/script_api/v1/bookmarks.cpp + source/script_api/v1/ui.cpp ) - if (CoreClrEmbed_FOUND) - add_library(nethost SHARED IMPORTED) - target_include_directories(nethost INTERFACE "${CoreClrEmbed_INCLUDE_DIRS}") - get_filename_component(CoreClrEmbed_FOLDER ${CoreClrEmbed_SHARED_LIBRARIES} DIRECTORY) - set_target_properties(nethost - PROPERTIES - IMPORTED_IMPLIB ${CoreClrEmbed_SHARED_LIBRARIES} - IMPORTED_LOCATION ${CoreClrEmbed_LIBRARIES} - BUILD_RPATH ${CoreClrEmbed_FOLDER} - INSTALL_RPATH ${CoreClrEmbed_FOLDER}) - - target_link_directories(script_loader PRIVATE ${CoreClrEmbed_FOLDER}) - target_include_directories(script_loader PRIVATE ${CoreClrEmbed_INCLUDE_DIRS}) - target_compile_definitions(script_loader PRIVATE DOTNET_PLUGINS=1) - target_sources(script_loader PRIVATE - source/loaders/dotnet/dotnet_loader.cpp - - source/script_api/v1/mem.cpp - source/script_api/v1/bookmarks.cpp - source/script_api/v1/ui.cpp - ) - - set(EXTRA_BUNDLE_LIBRARY_PATHS "${CoreClrEmbed_FOLDER}" PARENT_SCOPE) - - if (IMHEX_BUNDLE_DOTNET) - install(FILES ${CoreClrEmbed_SHARED_LIBRARIES} DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif () - - add_subdirectory(dotnet) - add_dependencies(script_loader AssemblyLoader) + set(EXTRA_BUNDLE_LIBRARY_PATHS "${CoreClrEmbed_FOLDER}" PARENT_SCOPE) + if (IMHEX_BUNDLE_DOTNET) + install(FILES ${CoreClrEmbed_SHARED_LIBRARIES} DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif () + add_subdirectory(dotnet) + add_dependencies(script_loader AssemblyLoader) + endif () \ No newline at end of file diff --git a/plugins/script_loader/source/script_api/v1/ui.cpp b/plugins/script_loader/source/script_api/v1/ui.cpp index 30782dbe6..e484ff591 100644 --- a/plugins/script_loader/source/script_api/v1/ui.cpp +++ b/plugins/script_loader/source/script_api/v1/ui.cpp @@ -28,13 +28,13 @@ public: auto width = ImGui::GetWindowWidth(); ImGui::SetCursorPosX(width / 9); - if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0))) { + if (ImGui::Button("hex.ui.common.yes"_lang, ImVec2(width / 3, 0))) { s_yesNoQuestionBoxResult = true; this->close(); } ImGui::SameLine(); ImGui::SetCursorPosX(width / 9 * 5); - if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { + if (ImGui::Button("hex.ui.common.no"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { s_yesNoQuestionBoxResult = false; this->close(); } @@ -80,14 +80,14 @@ public: auto width = ImGui::GetWindowWidth(); ImGui::SetCursorPosX(width / 9); ImGui::BeginDisabled(m_input.empty()); - if (ImGui::Button("hex.builtin.common.okay"_lang, ImVec2(width / 3, 0)) || submitted) { + if (ImGui::Button("hex.ui.common.okay"_lang, ImVec2(width / 3, 0)) || submitted) { s_inputTextBoxResult = m_input; this->close(); } ImGui::EndDisabled(); ImGui::SameLine(); ImGui::SetCursorPosX(width / 9 * 5); - if (ImGui::Button("hex.builtin.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { + if (ImGui::Button("hex.ui.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { s_inputTextBoxResult = ""; this->close(); } diff --git a/plugins/ui/CMakeLists.txt b/plugins/ui/CMakeLists.txt new file mode 100644 index 000000000..3cf1345e8 --- /dev/null +++ b/plugins/ui/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.16) + +include(ImHexPlugin) + +add_imhex_plugin( + NAME + ui + SOURCES + source/library_ui.cpp + + source/ui/hex_editor.cpp + source/ui/pattern_drawer.cpp + INCLUDES + include + LIBRARIES + libpl-gen + LIBRARY_PLUGIN +) diff --git a/plugins/builtin/include/content/popups/popup_file_chooser.hpp b/plugins/ui/include/popups/popup_file_chooser.hpp similarity index 93% rename from plugins/builtin/include/content/popups/popup_file_chooser.hpp rename to plugins/ui/include/popups/popup_file_chooser.hpp index 8e215ef31..99084281e 100644 --- a/plugins/builtin/include/content/popups/popup_file_chooser.hpp +++ b/plugins/ui/include/popups/popup_file_chooser.hpp @@ -9,12 +9,12 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::ui { class PopupFileChooser : public Popup { public: PopupFileChooser(const std::vector &basePaths, const std::vector &files, const std::vector &validExtensions, bool multiple, const std::function &callback) - : hex::Popup("hex.builtin.common.choose_file"), + : hex::Popup("hex.ui.common.choose_file"), m_indices({ }), m_openCallback(callback), m_validExtensions(validExtensions), m_multiple(multiple) { @@ -73,7 +73,7 @@ namespace hex::plugin::builtin { ImGui::EndListBox(); } - if (ImGui::Button("hex.builtin.common.open"_lang) || doubleClicked) { + if (ImGui::Button("hex.ui.common.open"_lang) || doubleClicked) { for (const auto &index : m_indices) m_openCallback(m_files[index].first); Popup::close(); @@ -81,7 +81,7 @@ namespace hex::plugin::builtin { ImGui::SameLine(); - if (ImGui::Button("hex.builtin.common.browse"_lang)) { + if (ImGui::Button("hex.ui.common.browse"_lang)) { fs::openFileBrowser(fs::DialogMode::Open, m_validExtensions, [this](const auto &path) { m_openCallback(path); Popup::close(); diff --git a/plugins/builtin/include/content/popups/popup_notification.hpp b/plugins/ui/include/popups/popup_notification.hpp similarity index 82% rename from plugins/builtin/include/content/popups/popup_notification.hpp rename to plugins/ui/include/popups/popup_notification.hpp index 84cce565d..888ce59dc 100644 --- a/plugins/builtin/include/content/popups/popup_notification.hpp +++ b/plugins/ui/include/popups/popup_notification.hpp @@ -8,7 +8,7 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::ui { namespace impl { @@ -23,7 +23,7 @@ namespace hex::plugin::builtin { ImGuiExt::TextFormattedWrapped("{}", m_message.c_str()); ImGui::NewLine(); ImGui::Separator(); - if (ImGui::Button("hex.builtin.common.okay"_lang) || ImGui::IsKeyDown(ImGuiKey_Escape)) + if (ImGui::Button("hex.ui.common.okay"_lang) || ImGui::IsKeyDown(ImGuiKey_Escape)) m_function(); ImGui::SetWindowPos((ImHexApi::System::getMainWindowSize() - ImGui::GetWindowSize()) / 2, ImGuiCond_Appearing); @@ -54,7 +54,7 @@ namespace hex::plugin::builtin { class PopupInfo : public impl::PopupNotification { public: explicit PopupInfo(std::string message) - : PopupNotification("hex.builtin.common.info", std::move(message), [this] { + : PopupNotification("hex.ui.common.info", std::move(message), [this] { Popup::close(); }) { } }; @@ -62,7 +62,7 @@ namespace hex::plugin::builtin { class PopupWarning : public impl::PopupNotification { public: explicit PopupWarning(std::string message) - : PopupNotification("hex.builtin.common.warning", std::move(message), [this] { + : PopupNotification("hex.ui.common.warning", std::move(message), [this] { Popup::close(); }) { } }; @@ -70,7 +70,7 @@ namespace hex::plugin::builtin { class PopupError : public impl::PopupNotification { public: explicit PopupError(std::string message) - : PopupNotification("hex.builtin.common.error", std::move(message), [this] { + : PopupNotification("hex.ui.common.error", std::move(message), [this] { Popup::close(); }) { } }; @@ -78,7 +78,7 @@ namespace hex::plugin::builtin { class PopupFatal : public impl::PopupNotification { public: explicit PopupFatal(std::string message) - : PopupNotification("hex.builtin.common.fatal", std::move(message), [this] { + : PopupNotification("hex.ui.common.fatal", std::move(message), [this] { ImHexApi::System::closeImHex(); Popup::close(); }) { } diff --git a/plugins/builtin/include/content/popups/popup_question.hpp b/plugins/ui/include/popups/popup_question.hpp similarity index 84% rename from plugins/builtin/include/content/popups/popup_question.hpp rename to plugins/ui/include/popups/popup_question.hpp index 4daf32892..6884591e0 100644 --- a/plugins/builtin/include/content/popups/popup_question.hpp +++ b/plugins/ui/include/popups/popup_question.hpp @@ -7,12 +7,12 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::ui { class PopupQuestion : public Popup { public: PopupQuestion(std::string message, std::function yesFunction, std::function noFunction) - : hex::Popup("hex.builtin.common.question", false), + : hex::Popup("hex.ui.common.question", false), m_message(std::move(message)), m_yesFunction(std::move(yesFunction)), m_noFunction(std::move(noFunction)) { } @@ -23,13 +23,13 @@ namespace hex::plugin::builtin { auto width = ImGui::GetWindowWidth(); ImGui::SetCursorPosX(width / 9); - if (ImGui::Button("hex.builtin.common.yes"_lang, ImVec2(width / 3, 0))) { + if (ImGui::Button("hex.ui.common.yes"_lang, ImVec2(width / 3, 0))) { m_yesFunction(); this->close(); } ImGui::SameLine(); ImGui::SetCursorPosX(width / 9 * 5); - if (ImGui::Button("hex.builtin.common.no"_lang, ImVec2(width / 3, 0))) { + if (ImGui::Button("hex.ui.common.no"_lang, ImVec2(width / 3, 0))) { m_noFunction(); this->close(); } diff --git a/plugins/builtin/include/content/popups/popup_text_input.hpp b/plugins/ui/include/popups/popup_text_input.hpp similarity index 85% rename from plugins/builtin/include/content/popups/popup_text_input.hpp rename to plugins/ui/include/popups/popup_text_input.hpp index fa2595f0f..a616cfabb 100644 --- a/plugins/builtin/include/content/popups/popup_text_input.hpp +++ b/plugins/ui/include/popups/popup_text_input.hpp @@ -10,7 +10,7 @@ #include -namespace hex::plugin::builtin { +namespace hex::ui { class PopupTextInput : public Popup { public: @@ -37,13 +37,13 @@ namespace hex::plugin::builtin { auto width = ImGui::GetWindowWidth(); ImGui::SetCursorPosX(width / 9); - if (ImGui::Button("hex.builtin.common.okay"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Enter))) { + if (ImGui::Button("hex.ui.common.okay"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Enter))) { m_function(m_input); this->close(); } ImGui::SameLine(); ImGui::SetCursorPosX(width / 9 * 5); - if (ImGui::Button("hex.builtin.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { + if (ImGui::Button("hex.ui.common.cancel"_lang, ImVec2(width / 3, 0)) || ImGui::IsKeyPressed(ImGui::GetKeyIndex(ImGuiKey_Escape))) { this->close(); } diff --git a/plugins/builtin/include/content/toasts/toast_notification.hpp b/plugins/ui/include/toasts/toast_notification.hpp similarity index 98% rename from plugins/builtin/include/content/toasts/toast_notification.hpp rename to plugins/ui/include/toasts/toast_notification.hpp index 80ecd07d0..5979e00af 100644 --- a/plugins/builtin/include/content/toasts/toast_notification.hpp +++ b/plugins/ui/include/toasts/toast_notification.hpp @@ -7,7 +7,7 @@ #include #include -namespace hex::plugin::builtin::ui { +namespace hex::ui { namespace impl { diff --git a/plugins/builtin/include/ui/hex_editor.hpp b/plugins/ui/include/ui/hex_editor.hpp similarity index 99% rename from plugins/builtin/include/ui/hex_editor.hpp rename to plugins/ui/include/ui/hex_editor.hpp index 677663cfc..3b74af62d 100644 --- a/plugins/builtin/include/ui/hex_editor.hpp +++ b/plugins/ui/include/ui/hex_editor.hpp @@ -9,7 +9,7 @@ #include #include -namespace hex::plugin::builtin::ui { +namespace hex::ui { class HexEditor { public: diff --git a/plugins/builtin/include/ui/pattern_drawer.hpp b/plugins/ui/include/ui/pattern_drawer.hpp similarity index 99% rename from plugins/builtin/include/ui/pattern_drawer.hpp rename to plugins/ui/include/ui/pattern_drawer.hpp index 12e2ced2f..2f7465e2c 100644 --- a/plugins/builtin/include/ui/pattern_drawer.hpp +++ b/plugins/ui/include/ui/pattern_drawer.hpp @@ -12,7 +12,7 @@ struct ImGuiTableSortSpecs; -namespace hex::plugin::builtin::ui { +namespace hex::ui { class PatternDrawer : public pl::PatternVisitor { public: diff --git a/plugins/builtin/include/ui/widgets.hpp b/plugins/ui/include/ui/widgets.hpp similarity index 81% rename from plugins/builtin/include/ui/widgets.hpp rename to plugins/ui/include/ui/widgets.hpp index c42f487c5..93f8ce1e7 100644 --- a/plugins/builtin/include/ui/widgets.hpp +++ b/plugins/ui/include/ui/widgets.hpp @@ -6,7 +6,7 @@ namespace pl::ptrn { class Pattern; } namespace hex::prv { class Provider; } -namespace hex::plugin::builtin::ui { +namespace hex::ui { enum class RegionType : int { @@ -17,13 +17,13 @@ namespace hex::plugin::builtin::ui { inline void regionSelectionPicker(Region *region, prv::Provider *provider, RegionType *type, bool showHeader = true, bool firstEntry = false) { if (showHeader) - ImGuiExt::Header("hex.builtin.common.range"_lang, firstEntry); + ImGuiExt::Header("hex.ui.common.range"_lang, firstEntry); - if (ImGui::RadioButton("hex.builtin.common.range.entire_data"_lang, *type == RegionType::EntireData)) + if (ImGui::RadioButton("hex.ui.common.range.entire_data"_lang, *type == RegionType::EntireData)) *type = RegionType::EntireData; - if (ImGui::RadioButton("hex.builtin.common.range.selection"_lang, *type == RegionType::Selection)) + if (ImGui::RadioButton("hex.ui.common.range.selection"_lang, *type == RegionType::Selection)) *type = RegionType::Selection; - if (ImGui::RadioButton("hex.builtin.common.region"_lang, *type == RegionType::Region)) + if (ImGui::RadioButton("hex.ui.common.region"_lang, *type == RegionType::Region)) *type = RegionType::Region; switch (*type) { diff --git a/plugins/ui/romfs/lang/de_DE.json b/plugins/ui/romfs/lang/de_DE.json new file mode 100644 index 000000000..51c357e85 --- /dev/null +++ b/plugins/ui/romfs/lang/de_DE.json @@ -0,0 +1,108 @@ +{ + "code": "de-DE", + "language": "German", + "country": "Germany", + "fallback": false, + "translations": { + "hex.ui.common.address": "Adresse", + "hex.ui.common.allow": "Erlauben", + "hex.ui.common.begin": "Anfangen", + "hex.ui.common.big": "Big", + "hex.ui.common.big_endian": "Big Endian", + "hex.ui.common.browse": "Durchsuchen...", + "hex.ui.common.bytes": "Bytes", + "hex.ui.common.cancel": "Abbrechen", + "hex.ui.common.choose_file": "Datei auswählen", + "hex.ui.common.close": "Schliessen", + "hex.ui.common.comment": "Kommentar", + "hex.ui.common.count": "Anzahl", + "hex.ui.common.decimal": "Dezimal", + "hex.ui.common.deny": "Verweigern", + "hex.ui.common.dont_show_again": "Nicht mehr anzeigen", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "Beenden", + "hex.ui.common.endian": "Endian", + "hex.ui.common.warning": "Warnung", + "hex.ui.common.error": "Fehler", + "hex.ui.common.fatal": "Fataler Fehler", + "hex.ui.common.file": "Datei", + "hex.ui.common.filter": "Filter", + "hex.ui.common.hexadecimal": "Hexadezimal", + "hex.ui.common.info": "Information", + "hex.ui.common.instruction": "Instruktion", + "hex.ui.common.link": "Link", + "hex.ui.common.little": "Little", + "hex.ui.common.little_endian": "Little Endian", + "hex.ui.common.load": "Laden", + "hex.ui.common.match_selection": "Arbeitsbereich synchronisieren", + "hex.ui.common.name": "Name", + "hex.ui.common.no": "Nein", + "hex.ui.common.number_format": "Format", + "hex.ui.common.octal": "Oktal", + "hex.ui.common.offset": "Offset", + "hex.ui.common.okay": "Okay", + "hex.ui.common.open": "Öffnen", + "hex.ui.common.percentage": "Prozent", + "hex.ui.common.processing": "Verarbeiten", + "hex.ui.common.project": "Projekt", + "hex.ui.common.question": "Frage", + "hex.ui.common.range": "Bereich", + "hex.ui.common.range.entire_data": "Gesamte Daten", + "hex.ui.common.range.selection": "Auswahl", + "hex.ui.common.region": "Region", + "hex.ui.common.reset": "Zurücksetzen", + "hex.ui.common.set": "Setzen", + "hex.ui.common.settings": "Einstellungen", + "hex.ui.common.size": "Länge", + "hex.ui.common.type": "Typ", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "Wert", + "hex.ui.common.yes": "Ja", + "hex.ui.hex_editor.ascii_view": "ASCII Spalte anzeigen", + "hex.ui.hex_editor.custom_encoding_view": "Erweiterte Dekodierungsspalte anzeigen", + "hex.ui.hex_editor.human_readable_units_footer": "", + "hex.ui.hex_editor.data_size": "Datengrösse", + "hex.ui.hex_editor.gray_out_zero": "Nullen ausgrauen", + "hex.ui.hex_editor.no_bytes": "Keine Bytes verfügbar", + "hex.ui.hex_editor.page": "Seite", + "hex.ui.hex_editor.region": "Region", + "hex.ui.hex_editor.selection": "Auswahl", + "hex.ui.hex_editor.selection.none": "Keine", + "hex.ui.hex_editor.uppercase_hex": "Hex Zeichen als Grossbuchstaben", + "hex.ui.hex_editor.visualizer": "Daten Anzeige", + "hex.ui.pattern_drawer.color": "Farbe", + "hex.ui.pattern_drawer.double_click": "Doppelklicken um mehr Einträge zu sehen", + "hex.ui.pattern_drawer.end": "Ende", + "hex.ui.pattern_drawer.export": "Pattern exportieren als...", + "hex.ui.pattern_drawer.favorites": "Favoriten", + "hex.ui.pattern_drawer.local": "Local", + "hex.ui.pattern_drawer.size": "Grösse", + "hex.ui.pattern_drawer.spec_name": "", + "hex.ui.pattern_drawer.start": "Start", + "hex.ui.pattern_drawer.tree_style.tree": "Baum", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "Automatisch geöffneter Baum", + "hex.ui.pattern_drawer.tree_style.flattened": "Flach", + "hex.ui.pattern_drawer.type": "Typ", + "hex.ui.pattern_drawer.updating": "", + "hex.ui.pattern_drawer.value": "Wert", + "hex.ui.pattern_drawer.var_name": "Name", + "hex.ui.pattern_drawer.visualizer.unknown": "Unbekannter Visualizer", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "Falsche anzahl Parameter" + } +} diff --git a/plugins/ui/romfs/lang/en_US.json b/plugins/ui/romfs/lang/en_US.json new file mode 100644 index 000000000..e779fc27b --- /dev/null +++ b/plugins/ui/romfs/lang/en_US.json @@ -0,0 +1,114 @@ +{ + "code": "en-US", + "language": "English", + "country": "United States", + "fallback": true, + "translations": { + "hex.ui.common.address": "Address", + "hex.ui.common.allow": "Allow", + "hex.ui.common.begin": "Begin", + "hex.ui.common.big": "Big", + "hex.ui.common.big_endian": "Big Endian", + "hex.ui.common.browse": "Browse...", + "hex.ui.common.bytes": "Bytes", + "hex.ui.common.cancel": "Cancel", + "hex.ui.common.choose_file": "Choose file", + "hex.ui.common.close": "Close", + "hex.ui.common.comment": "Comment", + "hex.ui.common.count": "Count", + "hex.ui.common.decimal": "Decimal", + "hex.ui.common.deny": "Deny", + "hex.ui.common.dont_show_again": "Don't show again", + "hex.ui.common.edit": "Edit", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "End", + "hex.ui.common.endian": "Endian", + "hex.ui.common.warning": "Warning", + "hex.ui.common.error": "Error", + "hex.ui.common.fatal": "Fatal Error", + "hex.ui.common.file": "File", + "hex.ui.common.filter": "Filter", + "hex.ui.common.hexadecimal": "Hexadecimal", + "hex.ui.common.info": "Information", + "hex.ui.common.instruction": "Instruction", + "hex.ui.common.link": "Link", + "hex.ui.common.little": "Little", + "hex.ui.common.little_endian": "Little Endian", + "hex.ui.common.load": "Load", + "hex.ui.common.loading": "Loading...", + "hex.ui.common.match_selection": "Match Selection", + "hex.ui.common.name": "Name", + "hex.ui.common.no": "No", + "hex.ui.common.number_format": "Format", + "hex.ui.common.octal": "Octal", + "hex.ui.common.offset": "Offset", + "hex.ui.common.okay": "Okay", + "hex.ui.common.open": "Open", + "hex.ui.common.on": "On", + "hex.ui.common.off": "Off", + "hex.ui.common.path": "Path", + "hex.ui.common.percentage": "Percentage", + "hex.ui.common.processing": "Processing", + "hex.ui.common.project": "Project", + "hex.ui.common.question": "Question", + "hex.ui.common.range": "Range", + "hex.ui.common.range.entire_data": "Entire Data", + "hex.ui.common.range.selection": "Selection", + "hex.ui.common.region": "Region", + "hex.ui.common.remove": "Remove", + "hex.ui.common.reset": "Reset", + "hex.ui.common.set": "Set", + "hex.ui.common.settings": "Settings", + "hex.ui.common.size": "Size", + "hex.ui.common.type": "Type", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "Value", + "hex.ui.common.yes": "Yes", + "hex.ui.hex_editor.ascii_view": "Display ASCII column", + "hex.ui.hex_editor.custom_encoding_view": "Display advanced decoding column", + "hex.ui.hex_editor.human_readable_units_footer": "Convert sizes to human-readable units", + "hex.ui.hex_editor.data_size": "Data Size", + "hex.ui.hex_editor.gray_out_zero": "Grey out zeros", + "hex.ui.hex_editor.no_bytes": "No bytes available", + "hex.ui.hex_editor.page": "Page", + "hex.ui.hex_editor.region": "Region", + "hex.ui.hex_editor.selection": "Selection", + "hex.ui.hex_editor.selection.none": "None", + "hex.ui.hex_editor.uppercase_hex": "Upper case Hex characters", + "hex.ui.hex_editor.visualizer": "Data visualizer", + "hex.ui.pattern_drawer.color": "Color", + "hex.ui.pattern_drawer.double_click": "Double-click to see more items", + "hex.ui.pattern_drawer.end": "End", + "hex.ui.pattern_drawer.export": "Export Patterns as...", + "hex.ui.pattern_drawer.favorites": "Favorites", + "hex.ui.pattern_drawer.local": "Local", + "hex.ui.pattern_drawer.size": "Size", + "hex.ui.pattern_drawer.spec_name": "Display specification names", + "hex.ui.pattern_drawer.start": "Start", + "hex.ui.pattern_drawer.tree_style.tree": "Tree", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "Auto Expanded Tree", + "hex.ui.pattern_drawer.tree_style.flattened": "Flattened", + "hex.ui.pattern_drawer.type": "Type", + "hex.ui.pattern_drawer.updating": "Updating patterns...", + "hex.ui.pattern_drawer.value": "Value", + "hex.ui.pattern_drawer.var_name": "Name", + "hex.ui.pattern_drawer.visualizer.unknown": "Unknown visualizer", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "Invalid parameter count" + } +} diff --git a/plugins/ui/romfs/lang/es_ES.json b/plugins/ui/romfs/lang/es_ES.json new file mode 100644 index 000000000..d0ddffdc9 --- /dev/null +++ b/plugins/ui/romfs/lang/es_ES.json @@ -0,0 +1,108 @@ +{ + "code": "es_ES", + "language": "Spanish", + "country": "Spain", + "fallback": false, + "translations": { + "hex.ui.common.address": "Dirección", + "hex.ui.common.allow": "", + "hex.ui.common.begin": "Inicio", + "hex.ui.common.big": "Big", + "hex.ui.common.big_endian": "Big Endian", + "hex.ui.common.browse": "Navegar...", + "hex.ui.common.bytes": "Bytes", + "hex.ui.common.cancel": "Cancelar", + "hex.ui.common.choose_file": "Escoger archivo", + "hex.ui.common.close": "Cerrar", + "hex.ui.common.comment": "Comentario", + "hex.ui.common.count": "Cantidad", + "hex.ui.common.decimal": "Decimal", + "hex.ui.common.deny": "", + "hex.ui.common.dont_show_again": "No mostrar de nuevo", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "Fin", + "hex.ui.common.endian": "Endian", + "hex.ui.common.warning": "", + "hex.ui.common.error": "Error", + "hex.ui.common.fatal": "Error Crítico", + "hex.ui.common.file": "Archivo", + "hex.ui.common.filter": "Filtro", + "hex.ui.common.hexadecimal": "Hexadecimal", + "hex.ui.common.info": "Información", + "hex.ui.common.instruction": "Instrucción", + "hex.ui.common.link": "Enlace", + "hex.ui.common.little": "Little", + "hex.ui.common.little_endian": "Little Endian", + "hex.ui.common.load": "Cargar", + "hex.ui.common.match_selection": "Match Selection", + "hex.ui.common.name": "Nombre", + "hex.ui.common.no": "No", + "hex.ui.common.number_format": "Formato", + "hex.ui.common.octal": "Octal", + "hex.ui.common.offset": "Offset", + "hex.ui.common.okay": "Okey", + "hex.ui.common.open": "Abrir", + "hex.ui.common.percentage": "Porcentaje", + "hex.ui.common.processing": "Procesado", + "hex.ui.common.project": "", + "hex.ui.common.question": "Pregunta", + "hex.ui.common.range": "Rango", + "hex.ui.common.range.entire_data": "Todos los Datos", + "hex.ui.common.range.selection": "Selección", + "hex.ui.common.region": "Región", + "hex.ui.common.reset": "", + "hex.ui.common.set": "Establecer", + "hex.ui.common.settings": "Ajustes", + "hex.ui.common.size": "Tamaño", + "hex.ui.common.type": "Tipo", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "Valor", + "hex.ui.common.yes": "Sí", + "hex.ui.hex_editor.ascii_view": "Mostrar columna ASCII", + "hex.ui.hex_editor.custom_encoding_view": "Mostrar columna de decodificación avanzada", + "hex.ui.hex_editor.human_readable_units_footer": "", + "hex.ui.hex_editor.data_size": "Tamaño de Datos", + "hex.ui.hex_editor.gray_out_zero": "Mostrar ceros en gris", + "hex.ui.hex_editor.no_bytes": "No hay bytes disponibles", + "hex.ui.hex_editor.page": "Página", + "hex.ui.hex_editor.region": "Región", + "hex.ui.hex_editor.selection": "Selección", + "hex.ui.hex_editor.selection.none": "Ninguno", + "hex.ui.hex_editor.uppercase_hex": "Caracteres hexadecimales mayúscula", + "hex.ui.hex_editor.visualizer": "Visualizador de datos", + "hex.ui.pattern_drawer.color": "Color", + "hex.ui.pattern_drawer.double_click": "Haga doble clic para ver más elementos", + "hex.ui.pattern_drawer.end": "", + "hex.ui.pattern_drawer.export": "", + "hex.ui.pattern_drawer.favorites": "", + "hex.ui.pattern_drawer.local": "", + "hex.ui.pattern_drawer.size": "Tamaño", + "hex.ui.pattern_drawer.spec_name": "", + "hex.ui.pattern_drawer.start": "", + "hex.ui.pattern_drawer.tree_style.tree": "Árbol", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "Árbol Automáticamente Expandido", + "hex.ui.pattern_drawer.tree_style.flattened": "Allanado", + "hex.ui.pattern_drawer.type": "Tipo", + "hex.ui.pattern_drawer.updating": "", + "hex.ui.pattern_drawer.value": "Valor", + "hex.ui.pattern_drawer.var_name": "Nombre", + "hex.ui.pattern_drawer.visualizer.unknown": "Visualizador Desconocido", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "Cantidad de parámetros inválida" + } +} diff --git a/plugins/ui/romfs/lang/it_IT.json b/plugins/ui/romfs/lang/it_IT.json new file mode 100644 index 000000000..689b343a3 --- /dev/null +++ b/plugins/ui/romfs/lang/it_IT.json @@ -0,0 +1,108 @@ +{ + "code": "it-IT", + "language": "Italian", + "country": "Italy", + "fallback": false, + "translations": { + "hex.ui.common.address": "Indirizzo", + "hex.ui.common.allow": "", + "hex.ui.common.begin": "", + "hex.ui.common.big": "Big", + "hex.ui.common.big_endian": "Big Endian", + "hex.ui.common.browse": "Esplora...", + "hex.ui.common.bytes": "", + "hex.ui.common.cancel": "Cancella", + "hex.ui.common.choose_file": "Scegli file", + "hex.ui.common.close": "Chiudi", + "hex.ui.common.comment": "", + "hex.ui.common.count": "", + "hex.ui.common.decimal": "Decimale", + "hex.ui.common.deny": "", + "hex.ui.common.dont_show_again": "Non mostrare di nuovo", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "", + "hex.ui.common.endian": "Endian", + "hex.ui.common.warning": "", + "hex.ui.common.error": "Errore", + "hex.ui.common.fatal": "Errore Fatale", + "hex.ui.common.file": "File", + "hex.ui.common.filter": "", + "hex.ui.common.hexadecimal": "Esadecimale", + "hex.ui.common.info": "Informazioni", + "hex.ui.common.instruction": "", + "hex.ui.common.link": "Link", + "hex.ui.common.little": "Little", + "hex.ui.common.little_endian": "Little Endian", + "hex.ui.common.load": "Carica", + "hex.ui.common.match_selection": "Seleziona abbinamento", + "hex.ui.common.name": "", + "hex.ui.common.no": "No", + "hex.ui.common.number_format": "", + "hex.ui.common.octal": "Ottale", + "hex.ui.common.offset": "Offset", + "hex.ui.common.okay": "Okay", + "hex.ui.common.open": "Apri", + "hex.ui.common.percentage": "", + "hex.ui.common.processing": "", + "hex.ui.common.project": "", + "hex.ui.common.question": "", + "hex.ui.common.range": "", + "hex.ui.common.range.entire_data": "", + "hex.ui.common.range.selection": "", + "hex.ui.common.region": "Regione", + "hex.ui.common.reset": "", + "hex.ui.common.set": "Imposta", + "hex.ui.common.settings": "Impostazioni", + "hex.ui.common.size": "Dimensione", + "hex.ui.common.type": "", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "", + "hex.ui.common.yes": "Sì", + "hex.ui.hex_editor.ascii_view": "Mostra la colonna ASCII", + "hex.ui.hex_editor.custom_encoding_view": "Mostra la colonna di decodifica avanzata", + "hex.ui.hex_editor.human_readable_units_footer": "", + "hex.ui.hex_editor.data_size": "", + "hex.ui.hex_editor.gray_out_zero": "Taglia fuori gli zeri", + "hex.ui.hex_editor.no_bytes": "", + "hex.ui.hex_editor.page": "", + "hex.ui.hex_editor.region": "", + "hex.ui.hex_editor.selection": "", + "hex.ui.hex_editor.selection.none": "", + "hex.ui.hex_editor.uppercase_hex": "Caratteri esadecimali maiuscoli", + "hex.ui.hex_editor.visualizer": "", + "hex.ui.pattern_drawer.color": "", + "hex.ui.pattern_drawer.double_click": "", + "hex.ui.pattern_drawer.end": "", + "hex.ui.pattern_drawer.export": "", + "hex.ui.pattern_drawer.favorites": "", + "hex.ui.pattern_drawer.local": "", + "hex.ui.pattern_drawer.size": "", + "hex.ui.pattern_drawer.spec_name": "", + "hex.ui.pattern_drawer.start": "", + "hex.ui.pattern_drawer.tree_style.tree": "", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "", + "hex.ui.pattern_drawer.tree_style.flattened": "", + "hex.ui.pattern_drawer.type": "", + "hex.ui.pattern_drawer.updating": "", + "hex.ui.pattern_drawer.value": "", + "hex.ui.pattern_drawer.var_name": "", + "hex.ui.pattern_drawer.visualizer.unknown": "", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "" + } +} diff --git a/plugins/ui/romfs/lang/ja_JP.json b/plugins/ui/romfs/lang/ja_JP.json new file mode 100644 index 000000000..40ebf05b0 --- /dev/null +++ b/plugins/ui/romfs/lang/ja_JP.json @@ -0,0 +1,108 @@ +{ + "code": "ja-JP", + "language": "Japanese", + "country": "Japan", + "fallback": false, + "translations": { + "hex.ui.common.address": "アドレス", + "hex.ui.common.allow": "", + "hex.ui.common.begin": "", + "hex.ui.common.big": "ビッグ", + "hex.ui.common.big_endian": "ビッグエンディアン", + "hex.ui.common.browse": "ファイルを参照…", + "hex.ui.common.bytes": "", + "hex.ui.common.cancel": "キャンセル", + "hex.ui.common.choose_file": "ファイルを選択", + "hex.ui.common.close": "閉じる", + "hex.ui.common.comment": "コメント", + "hex.ui.common.count": "", + "hex.ui.common.decimal": "10進数", + "hex.ui.common.deny": "", + "hex.ui.common.dont_show_again": "再度表示しない", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "", + "hex.ui.common.endian": "エンディアン", + "hex.ui.common.warning": "", + "hex.ui.common.error": "エラー", + "hex.ui.common.fatal": "深刻なエラー", + "hex.ui.common.file": "ファイル", + "hex.ui.common.filter": "フィルタ", + "hex.ui.common.hexadecimal": "16進数", + "hex.ui.common.info": "情報", + "hex.ui.common.instruction": "", + "hex.ui.common.link": "リンク", + "hex.ui.common.little": "リトル", + "hex.ui.common.little_endian": "リトルエンディアン", + "hex.ui.common.load": "読み込む", + "hex.ui.common.match_selection": "選択範囲と一致", + "hex.ui.common.name": "", + "hex.ui.common.no": "いいえ", + "hex.ui.common.number_format": "", + "hex.ui.common.octal": "8進数", + "hex.ui.common.offset": "オフセット", + "hex.ui.common.okay": "OK", + "hex.ui.common.open": "開く", + "hex.ui.common.percentage": "", + "hex.ui.common.processing": "", + "hex.ui.common.project": "", + "hex.ui.common.question": "", + "hex.ui.common.range": "範囲", + "hex.ui.common.range.entire_data": "データ全体", + "hex.ui.common.range.selection": "選択範囲", + "hex.ui.common.region": "領域", + "hex.ui.common.reset": "", + "hex.ui.common.set": "セット", + "hex.ui.common.settings": "設定", + "hex.ui.common.size": "サイズ", + "hex.ui.common.type": "", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "値", + "hex.ui.common.yes": "はい", + "hex.ui.hex_editor.ascii_view": "ASCIIを表示", + "hex.ui.hex_editor.custom_encoding_view": "他のデコード列を表示", + "hex.ui.hex_editor.human_readable_units_footer": "", + "hex.ui.hex_editor.data_size": "ファイルサイズ", + "hex.ui.hex_editor.gray_out_zero": "ゼロをグレーアウト", + "hex.ui.hex_editor.no_bytes": "", + "hex.ui.hex_editor.page": "ページ", + "hex.ui.hex_editor.region": "ページの領域", + "hex.ui.hex_editor.selection": "選択中", + "hex.ui.hex_editor.selection.none": "なし", + "hex.ui.hex_editor.uppercase_hex": "16進数を大文字表記", + "hex.ui.hex_editor.visualizer": "データ表示方式", + "hex.ui.pattern_drawer.color": "色", + "hex.ui.pattern_drawer.double_click": "", + "hex.ui.pattern_drawer.end": "", + "hex.ui.pattern_drawer.export": "", + "hex.ui.pattern_drawer.favorites": "", + "hex.ui.pattern_drawer.local": "", + "hex.ui.pattern_drawer.size": "サイズ", + "hex.ui.pattern_drawer.spec_name": "", + "hex.ui.pattern_drawer.start": "", + "hex.ui.pattern_drawer.tree_style.tree": "", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "", + "hex.ui.pattern_drawer.tree_style.flattened": "", + "hex.ui.pattern_drawer.type": "型", + "hex.ui.pattern_drawer.updating": "", + "hex.ui.pattern_drawer.value": "値", + "hex.ui.pattern_drawer.var_name": "名前", + "hex.ui.pattern_drawer.visualizer.unknown": "", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "" + } +} diff --git a/plugins/ui/romfs/lang/ko_KR.json b/plugins/ui/romfs/lang/ko_KR.json new file mode 100644 index 000000000..1fbdc697b --- /dev/null +++ b/plugins/ui/romfs/lang/ko_KR.json @@ -0,0 +1,108 @@ +{ + "code": "ko-KR", + "language": "Korean", + "country": "Korea", + "fallback": false, + "translations": { + "hex.ui.common.address": "주소", + "hex.ui.common.allow": "허용", + "hex.ui.common.begin": "시작", + "hex.ui.common.big": "빅", + "hex.ui.common.big_endian": "빅 엔디언", + "hex.ui.common.browse": "찾아보기...", + "hex.ui.common.bytes": "바이트", + "hex.ui.common.cancel": "취소", + "hex.ui.common.choose_file": "파일 선택", + "hex.ui.common.close": "닫기", + "hex.ui.common.comment": "주석", + "hex.ui.common.count": "개수", + "hex.ui.common.decimal": "10진수", + "hex.ui.common.deny": "거부", + "hex.ui.common.dont_show_again": "다시 보지 않기", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "끝", + "hex.ui.common.endian": "엔디언", + "hex.ui.common.warning": "경고", + "hex.ui.common.error": "오류", + "hex.ui.common.fatal": "치명적 오류", + "hex.ui.common.file": "파일", + "hex.ui.common.filter": "필터", + "hex.ui.common.hexadecimal": "16진수", + "hex.ui.common.info": "정보", + "hex.ui.common.instruction": "지침", + "hex.ui.common.link": "링크", + "hex.ui.common.little": "리틀", + "hex.ui.common.little_endian": "리틀 엔디언", + "hex.ui.common.load": "불러오기", + "hex.ui.common.match_selection": "선택 영역 일치", + "hex.ui.common.name": "이름", + "hex.ui.common.no": "아니요", + "hex.ui.common.number_format": "포맷", + "hex.ui.common.octal": "8진수", + "hex.ui.common.offset": "오프셋", + "hex.ui.common.okay": "확인", + "hex.ui.common.open": "열기", + "hex.ui.common.percentage": "비율", + "hex.ui.common.processing": "작업 중", + "hex.ui.common.project": "프로젝트", + "hex.ui.common.question": "질문", + "hex.ui.common.range": "범위", + "hex.ui.common.range.entire_data": "전체 데이터", + "hex.ui.common.range.selection": "선택 영역", + "hex.ui.common.region": "영역", + "hex.ui.common.reset": "재설정", + "hex.ui.common.set": "설정", + "hex.ui.common.settings": "설정", + "hex.ui.common.size": "크기", + "hex.ui.common.type": "유형", + "hex.ui.common.type.f32": "플로트", + "hex.ui.common.type.f64": "더블", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "값", + "hex.ui.common.yes": "예", + "hex.ui.hex_editor.ascii_view": "ASCII 열 표시", + "hex.ui.hex_editor.custom_encoding_view": "추가 디코딩 열 표시", + "hex.ui.hex_editor.human_readable_units_footer": "크기를 사람이 읽을 수 있는 단위로 변환", + "hex.ui.hex_editor.data_size": "데이터 크기", + "hex.ui.hex_editor.gray_out_zero": "00을 회색으로 표시", + "hex.ui.hex_editor.no_bytes": "바이트가 없습니다", + "hex.ui.hex_editor.page": "페이지", + "hex.ui.hex_editor.region": "영역", + "hex.ui.hex_editor.selection": "선택 영역", + "hex.ui.hex_editor.selection.none": "없음", + "hex.ui.hex_editor.uppercase_hex": "16진수 값을 대문자로 표시", + "hex.ui.hex_editor.visualizer": "데이터 시각화", + "hex.ui.pattern_drawer.color": "색상", + "hex.ui.pattern_drawer.double_click": "더 많은 항목을 보려면 두 번 클릭", + "hex.ui.pattern_drawer.end": "끝", + "hex.ui.pattern_drawer.export": "다른 이름으로 패턴 내보내기...", + "hex.ui.pattern_drawer.favorites": "즐겨찾기", + "hex.ui.pattern_drawer.local": "로컬", + "hex.ui.pattern_drawer.size": "크기", + "hex.ui.pattern_drawer.spec_name": "명세 이름 표시", + "hex.ui.pattern_drawer.start": "시작", + "hex.ui.pattern_drawer.tree_style.tree": "트리", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "자동 확장 트리", + "hex.ui.pattern_drawer.tree_style.flattened": "접기", + "hex.ui.pattern_drawer.type": "유형", + "hex.ui.pattern_drawer.updating": "패턴 업데이트 중...", + "hex.ui.pattern_drawer.value": "값", + "hex.ui.pattern_drawer.var_name": "이름", + "hex.ui.pattern_drawer.visualizer.unknown": "알 수 없는 시각화", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "잘못된 매개변수 수" + } +} diff --git a/plugins/ui/romfs/lang/pt_BR.json b/plugins/ui/romfs/lang/pt_BR.json new file mode 100644 index 000000000..e0908d17e --- /dev/null +++ b/plugins/ui/romfs/lang/pt_BR.json @@ -0,0 +1,108 @@ +{ + "code": "pt-BR", + "language": "Portuguese", + "country": "Brazil", + "fallback": false, + "translations": { + "hex.ui.common.address": "Address", + "hex.ui.common.allow": "", + "hex.ui.common.begin": "", + "hex.ui.common.big": "Big", + "hex.ui.common.big_endian": "Big Endian", + "hex.ui.common.browse": "Navegar...", + "hex.ui.common.bytes": "", + "hex.ui.common.cancel": "Cancelar", + "hex.ui.common.choose_file": "Escolher arquivo", + "hex.ui.common.close": "Fechar", + "hex.ui.common.comment": "", + "hex.ui.common.count": "", + "hex.ui.common.decimal": "Decimal", + "hex.ui.common.deny": "", + "hex.ui.common.dont_show_again": "Não Mostrar Novamente", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "", + "hex.ui.common.endian": "Endian", + "hex.ui.common.warning": "", + "hex.ui.common.error": "Erro", + "hex.ui.common.fatal": "Erro Fatal", + "hex.ui.common.file": "Arquivo", + "hex.ui.common.filter": "", + "hex.ui.common.hexadecimal": "Hexadecimal", + "hex.ui.common.info": "Informação", + "hex.ui.common.instruction": "", + "hex.ui.common.link": "Link", + "hex.ui.common.little": "Little", + "hex.ui.common.little_endian": "Little Endian", + "hex.ui.common.load": "Carregar", + "hex.ui.common.match_selection": "Seleção de correspondência", + "hex.ui.common.name": "", + "hex.ui.common.no": "Não", + "hex.ui.common.number_format": "Format", + "hex.ui.common.octal": "Octal", + "hex.ui.common.offset": "Offset", + "hex.ui.common.okay": "OK", + "hex.ui.common.open": "Abrir", + "hex.ui.common.percentage": "", + "hex.ui.common.processing": "Processando", + "hex.ui.common.project": "", + "hex.ui.common.question": "Question", + "hex.ui.common.range": "", + "hex.ui.common.range.entire_data": "", + "hex.ui.common.range.selection": "", + "hex.ui.common.region": "Region", + "hex.ui.common.reset": "", + "hex.ui.common.set": "Colocar", + "hex.ui.common.settings": "Configurações", + "hex.ui.common.size": "Tamanho", + "hex.ui.common.type": "", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "", + "hex.ui.common.yes": "Sim", + "hex.ui.hex_editor.ascii_view": "Exibir coluna ASCII", + "hex.ui.hex_editor.custom_encoding_view": "", + "hex.ui.hex_editor.human_readable_units_footer": "", + "hex.ui.hex_editor.data_size": "Tamanho dos Dados", + "hex.ui.hex_editor.gray_out_zero": "", + "hex.ui.hex_editor.no_bytes": "Nenhum Byte Disponivel", + "hex.ui.hex_editor.page": "Pagina", + "hex.ui.hex_editor.region": "Região", + "hex.ui.hex_editor.selection": "Seleção", + "hex.ui.hex_editor.selection.none": "Nenhum", + "hex.ui.hex_editor.uppercase_hex": "", + "hex.ui.hex_editor.visualizer": "Visualizador de Dados", + "hex.ui.pattern_drawer.color": "Cor", + "hex.ui.pattern_drawer.double_click": "", + "hex.ui.pattern_drawer.end": "", + "hex.ui.pattern_drawer.export": "", + "hex.ui.pattern_drawer.favorites": "", + "hex.ui.pattern_drawer.local": "", + "hex.ui.pattern_drawer.size": "Tamanho", + "hex.ui.pattern_drawer.spec_name": "", + "hex.ui.pattern_drawer.start": "", + "hex.ui.pattern_drawer.tree_style.tree": "", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "", + "hex.ui.pattern_drawer.tree_style.flattened": "", + "hex.ui.pattern_drawer.type": "Tipo", + "hex.ui.pattern_drawer.updating": "", + "hex.ui.pattern_drawer.value": "Valor", + "hex.ui.pattern_drawer.var_name": "Nome", + "hex.ui.pattern_drawer.visualizer.unknown": "", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "" + } +} diff --git a/plugins/ui/romfs/lang/zh_CN.json b/plugins/ui/romfs/lang/zh_CN.json new file mode 100644 index 000000000..9a2b803bf --- /dev/null +++ b/plugins/ui/romfs/lang/zh_CN.json @@ -0,0 +1,108 @@ +{ + "code": "zh-CN", + "language": "Chinese (Simplified)", + "country": "China", + "fallback": false, + "translations": { + "hex.ui.common.address": "地址", + "hex.ui.common.allow": "允许", + "hex.ui.common.begin": "起始", + "hex.ui.common.big": "大", + "hex.ui.common.big_endian": "大端序", + "hex.ui.common.browse": "浏览...", + "hex.ui.common.bytes": "字节", + "hex.ui.common.cancel": "取消", + "hex.ui.common.choose_file": "选择文件", + "hex.ui.common.close": "关闭", + "hex.ui.common.comment": "注释", + "hex.ui.common.count": "数量", + "hex.ui.common.decimal": "十进制", + "hex.ui.common.deny": "拒绝", + "hex.ui.common.dont_show_again": "不要再次显示", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "末尾", + "hex.ui.common.endian": "端序", + "hex.ui.common.warning": "警告", + "hex.ui.common.error": "错误", + "hex.ui.common.fatal": "致命错误", + "hex.ui.common.file": "文件", + "hex.ui.common.filter": "过滤器", + "hex.ui.common.hexadecimal": "十六进制", + "hex.ui.common.info": "信息", + "hex.ui.common.instruction": "指示", + "hex.ui.common.link": "链接", + "hex.ui.common.little": "小", + "hex.ui.common.little_endian": "小端序", + "hex.ui.common.load": "加载", + "hex.ui.common.match_selection": "匹配选择", + "hex.ui.common.name": "名称", + "hex.ui.common.no": "否", + "hex.ui.common.number_format": "数字进制", + "hex.ui.common.octal": "八进制", + "hex.ui.common.offset": "偏移", + "hex.ui.common.okay": "好的", + "hex.ui.common.open": "打开", + "hex.ui.common.percentage": "百分比", + "hex.ui.common.processing": "处理", + "hex.ui.common.project": "项目", + "hex.ui.common.question": "问题", + "hex.ui.common.range": "范围", + "hex.ui.common.range.entire_data": "所有数据", + "hex.ui.common.range.selection": "选区", + "hex.ui.common.region": "区域", + "hex.ui.common.reset": "重置", + "hex.ui.common.set": "设置", + "hex.ui.common.settings": "设置", + "hex.ui.common.size": "大小", + "hex.ui.common.type": "类型", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "值", + "hex.ui.common.yes": "是", + "hex.ui.hex_editor.ascii_view": "显示 ASCII 栏", + "hex.ui.hex_editor.custom_encoding_view": "显示高级解码栏", + "hex.ui.hex_editor.human_readable_units_footer": "将数据转换为人类可读的单位", + "hex.ui.hex_editor.data_size": "总大小", + "hex.ui.hex_editor.gray_out_zero": "显示零字节为灰色", + "hex.ui.hex_editor.no_bytes": "没有可显示的字节", + "hex.ui.hex_editor.page": "分页", + "hex.ui.hex_editor.region": "范围", + "hex.ui.hex_editor.selection": "选区", + "hex.ui.hex_editor.selection.none": "未选中", + "hex.ui.hex_editor.uppercase_hex": "大写十六进制", + "hex.ui.hex_editor.visualizer": "数据处理器的数据可视化格式", + "hex.ui.pattern_drawer.color": "颜色", + "hex.ui.pattern_drawer.double_click": "双击查看更多", + "hex.ui.pattern_drawer.end": "结束", + "hex.ui.pattern_drawer.export": "导出为...", + "hex.ui.pattern_drawer.favorites": "收藏", + "hex.ui.pattern_drawer.local": "本地", + "hex.ui.pattern_drawer.size": "大小", + "hex.ui.pattern_drawer.spec_name": "显示标准名称", + "hex.ui.pattern_drawer.start": "开始", + "hex.ui.pattern_drawer.tree_style.tree": "树", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "自动展开树", + "hex.ui.pattern_drawer.tree_style.flattened": "扁平化", + "hex.ui.pattern_drawer.type": "类型", + "hex.ui.pattern_drawer.updating": "更新模式中...", + "hex.ui.pattern_drawer.value": "值", + "hex.ui.pattern_drawer.var_name": "名称", + "hex.ui.pattern_drawer.visualizer.unknown": "未知可视化器", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "无效参数数" + } +} diff --git a/plugins/ui/romfs/lang/zh_TW.json b/plugins/ui/romfs/lang/zh_TW.json new file mode 100644 index 000000000..6d44f364f --- /dev/null +++ b/plugins/ui/romfs/lang/zh_TW.json @@ -0,0 +1,108 @@ +{ + "code": "zh-TW", + "language": "Chinese (Traditional)", + "country": "Taiwan", + "fallback": false, + "translations": { + "hex.ui.common.address": "位址", + "hex.ui.common.allow": "允許", + "hex.ui.common.begin": "起始", + "hex.ui.common.big": "大", + "hex.ui.common.big_endian": "大端序", + "hex.ui.common.browse": "瀏覽...", + "hex.ui.common.bytes": "位元組", + "hex.ui.common.cancel": "取消", + "hex.ui.common.choose_file": "選擇檔案", + "hex.ui.common.close": "關閉", + "hex.ui.common.comment": "註解", + "hex.ui.common.count": "計數", + "hex.ui.common.decimal": "十進位", + "hex.ui.common.deny": "拒絕", + "hex.ui.common.dont_show_again": "不再顯示", + "hex.ui.common.encoding.ascii": "ASCII", + "hex.ui.common.encoding.utf16be": "UTF-16BE", + "hex.ui.common.encoding.utf16le": "UTF-16LE", + "hex.ui.common.encoding.utf8": "UTF-8", + "hex.ui.common.end": "結尾", + "hex.ui.common.endian": "端序", + "hex.ui.common.warning": "警告", + "hex.ui.common.error": "錯誤", + "hex.ui.common.fatal": "嚴重錯誤", + "hex.ui.common.file": "檔案", + "hex.ui.common.filter": "篩選", + "hex.ui.common.hexadecimal": "十六進位", + "hex.ui.common.info": "資訊", + "hex.ui.common.instruction": "指令", + "hex.ui.common.link": "連結", + "hex.ui.common.little": "小", + "hex.ui.common.little_endian": "小端序", + "hex.ui.common.load": "載入", + "hex.ui.common.match_selection": "符合選取", + "hex.ui.common.name": "名稱", + "hex.ui.common.no": "否", + "hex.ui.common.number_format": "格式", + "hex.ui.common.octal": "八進位", + "hex.ui.common.offset": "位移", + "hex.ui.common.okay": "好", + "hex.ui.common.open": "開啟", + "hex.ui.common.percentage": "百分比", + "hex.ui.common.processing": "正在處理", + "hex.ui.common.project": "專案", + "hex.ui.common.question": "問題", + "hex.ui.common.range": "範圍", + "hex.ui.common.range.entire_data": "整筆資料", + "hex.ui.common.range.selection": "所選", + "hex.ui.common.region": "區域", + "hex.ui.common.reset": "重設", + "hex.ui.common.set": "設定", + "hex.ui.common.settings": "設定", + "hex.ui.common.size": "大小", + "hex.ui.common.type": "類型", + "hex.ui.common.type.f32": "float", + "hex.ui.common.type.f64": "double", + "hex.ui.common.type.i16": "int16_t", + "hex.ui.common.type.i24": "int24_t", + "hex.ui.common.type.i32": "int32_t", + "hex.ui.common.type.i48": "int48_t", + "hex.ui.common.type.i64": "int64_t", + "hex.ui.common.type.i8": "int8_t", + "hex.ui.common.type.u16": "uint16_t", + "hex.ui.common.type.u24": "uint24_t", + "hex.ui.common.type.u32": "uint32_t", + "hex.ui.common.type.u48": "uint48_t", + "hex.ui.common.type.u64": "uint64_t", + "hex.ui.common.type.u8": "uint8_t", + "hex.ui.common.value": "數值", + "hex.ui.common.yes": "是", + "hex.ui.hex_editor.ascii_view": "顯示 ASCII 欄", + "hex.ui.hex_editor.custom_encoding_view": "顯示進階解碼欄", + "hex.ui.hex_editor.human_readable_units_footer": "將大小轉換成較為易讀的單位", + "hex.ui.hex_editor.data_size": "資料大小", + "hex.ui.hex_editor.gray_out_zero": "Grey out zeros", + "hex.ui.hex_editor.no_bytes": "無可用位元組", + "hex.ui.hex_editor.page": "頁面", + "hex.ui.hex_editor.region": "區域", + "hex.ui.hex_editor.selection": "選取", + "hex.ui.hex_editor.selection.none": "無", + "hex.ui.hex_editor.uppercase_hex": "十六進位使用大寫字母", + "hex.ui.hex_editor.visualizer": "資料可視化工具", + "hex.ui.pattern_drawer.color": "顏色", + "hex.ui.pattern_drawer.double_click": "點擊兩下以檢視更多項目", + "hex.ui.pattern_drawer.end": "結尾", + "hex.ui.pattern_drawer.export": "匯出模式為...", + "hex.ui.pattern_drawer.favorites": "", + "hex.ui.pattern_drawer.local": "", + "hex.ui.pattern_drawer.size": "大小", + "hex.ui.pattern_drawer.spec_name": "Display specification names", + "hex.ui.pattern_drawer.start": "起始", + "hex.ui.pattern_drawer.tree_style.tree": "樹", + "hex.ui.pattern_drawer.tree_style.auto_expanded": "", + "hex.ui.pattern_drawer.tree_style.flattened": "", + "hex.ui.pattern_drawer.type": "類型", + "hex.ui.pattern_drawer.updating": "正在更新模式...", + "hex.ui.pattern_drawer.value": "數值", + "hex.ui.pattern_drawer.var_name": "名稱", + "hex.ui.pattern_drawer.visualizer.unknown": "", + "hex.ui.pattern_drawer.visualizer.invalid_parameter_count": "" + } +} diff --git a/plugins/ui/source/library_ui.cpp b/plugins/ui/source/library_ui.cpp new file mode 100644 index 000000000..5e78f7366 --- /dev/null +++ b/plugins/ui/source/library_ui.cpp @@ -0,0 +1,16 @@ +#include + +#include +#include + +#include + +#include +#include +#include + +IMHEX_LIBRARY_SETUP() { + hex::log::debug("Using romfs: '{}'", romfs::name()); + for (auto &path : romfs::list("lang")) + hex::ContentRegistry::Language::addLocalization(nlohmann::json::parse(romfs::get(path).string())); +} \ No newline at end of file diff --git a/plugins/builtin/source/ui/hex_editor.cpp b/plugins/ui/source/ui/hex_editor.cpp similarity index 94% rename from plugins/builtin/source/ui/hex_editor.cpp rename to plugins/ui/source/ui/hex_editor.cpp index 9d56f9345..c502b3fdd 100644 --- a/plugins/builtin/source/ui/hex_editor.cpp +++ b/plugins/ui/source/ui/hex_editor.cpp @@ -7,7 +7,7 @@ #include #include -namespace hex::plugin::builtin::ui { +namespace hex::ui { /* Data Visualizer */ @@ -72,14 +72,6 @@ namespace hex::plugin::builtin::ui { HexEditor::HexEditor(prv::Provider *provider) : m_provider(provider) { m_currDataVisualizer = ContentRegistry::HexEditor::getVisualizerByName("hex.builtin.visualizer.hexadecimal.8bit"); - m_bytesPerRow = ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.bytes_per_row", m_bytesPerRow); - - EventSettingsChanged::subscribe(this, [this] { - m_selectionColor = ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.highlight_color", 0x60C08080); - m_syncScrolling = ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.sync_scrolling", false); - m_byteCellPadding = ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.byte_padding", false); - m_characterCellPadding = ContentRegistry::Settings::read("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.char_padding", false); - }); } HexEditor::~HexEditor() { @@ -305,14 +297,13 @@ namespace hex::plugin::builtin::ui { if (byteColumnCount >= IMGUI_TABLE_MAX_COLUMNS) { m_bytesPerRow = 64; - ContentRegistry::Settings::write("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.bytes_per_row", m_bytesPerRow); return; } const auto selection = getSelection(); if (m_provider == nullptr || m_provider->getActualSize() == 0) { - ImGuiExt::TextFormattedCentered("{}", "hex.builtin.hex_editor.no_bytes"_lang); + ImGuiExt::TextFormattedCentered("{}", "hex.ui.hex_editor.no_bytes"_lang); } if (ImGui::BeginChild("Hex View", size, ImGuiChildFlags_None, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse)) { @@ -353,7 +344,7 @@ namespace hex::plugin::builtin::ui { ImGui::TableSetupScrollFreeze(0, 2); // Row address column - ImGui::TableSetupColumn("hex.builtin.common.address"_lang); + ImGui::TableSetupColumn("hex.ui.common.address"_lang); ImGui::TableSetupColumn(""); // Byte columns @@ -368,7 +359,7 @@ namespace hex::plugin::builtin::ui { ImGui::TableSetupColumn(""); if (m_showAscii) { - ImGui::TableSetupColumn("hex.builtin.common.encoding.ascii"_lang, ImGuiTableColumnFlags_WidthFixed, (CharacterSize.x + m_characterCellPadding * 1_scaled) * m_bytesPerRow); + ImGui::TableSetupColumn("hex.ui.common.encoding.ascii"_lang, ImGuiTableColumnFlags_WidthFixed, (CharacterSize.x + m_characterCellPadding * 1_scaled) * m_bytesPerRow); } else ImGui::TableSetupColumn("", ImGuiTableColumnFlags_WidthFixed, 0); @@ -727,7 +718,7 @@ namespace hex::plugin::builtin::ui { { u32 page = m_provider->getCurrentPage() + 1; - ImGuiExt::TextFormatted("{}: ", "hex.builtin.hex_editor.page"_lang); + ImGuiExt::TextFormatted("{}: ", "hex.ui.hex_editor.page"_lang); ImGui::SameLine(); ImGui::BeginDisabled(pageCount <= 1); @@ -752,7 +743,7 @@ namespace hex::plugin::builtin::ui { { const auto pageAddress = m_provider->getCurrentPageAddress(); const auto pageSize = m_provider->getSize(); - ImGuiExt::TextFormatted("{}:", "hex.builtin.hex_editor.region"_lang); + ImGuiExt::TextFormatted("{}:", "hex.ui.hex_editor.region"_lang); ImGui::SameLine(); ImGuiExt::TextFormattedSelectable("0x{0:08X} - 0x{1:08X} ({0} - {1})", pageAddress, @@ -779,9 +770,9 @@ namespace hex::plugin::builtin::ui { ); } else - value = std::string("hex.builtin.hex_editor.selection.none"_lang); + value = std::string("hex.ui.hex_editor.selection.none"_lang); - ImGuiExt::TextFormatted("{}:", "hex.builtin.hex_editor.selection"_lang); + ImGuiExt::TextFormatted("{}:", "hex.ui.hex_editor.selection"_lang); ImGui::SameLine(); ImGuiExt::TextFormattedSelectable(value); } @@ -791,7 +782,7 @@ namespace hex::plugin::builtin::ui { // Loaded data size ImGui::TableNextColumn(); { - ImGuiExt::TextFormatted("{}:", "hex.builtin.hex_editor.data_size"_lang); + ImGuiExt::TextFormatted("{}:", "hex.ui.hex_editor.data_size"_lang); ImGui::SameLine(); ImGuiExt::TextFormattedSelectable("0x{0:08X} (0x{1:X} | {2})", m_provider->getBaseAddress(), @@ -809,19 +800,19 @@ namespace hex::plugin::builtin::ui { // Upper/lower case hex ImGuiExt::DimmedIconToggle(ICON_VS_CASE_SENSITIVE, &m_upperCaseHex); - ImGuiExt::InfoTooltip("hex.builtin.hex_editor.uppercase_hex"_lang); + ImGuiExt::InfoTooltip("hex.ui.hex_editor.uppercase_hex"_lang); ImGui::SameLine(); // Grayed out zeros ImGuiExt::DimmedIconToggle(ICON_VS_LIGHTBULB, &m_grayOutZero); - ImGuiExt::InfoTooltip("hex.builtin.hex_editor.gray_out_zero"_lang); + ImGuiExt::InfoTooltip("hex.ui.hex_editor.gray_out_zero"_lang); ImGui::SameLine(); // ASCII view ImGuiExt::DimmedIconToggle(ICON_VS_SYMBOL_KEY, &m_showAscii); - ImGuiExt::InfoTooltip("hex.builtin.hex_editor.ascii_view"_lang); + ImGuiExt::InfoTooltip("hex.ui.hex_editor.ascii_view"_lang); ImGui::SameLine(0, 1_scaled); @@ -830,13 +821,13 @@ namespace hex::plugin::builtin::ui { ImGuiExt::DimmedIconToggle(ICON_VS_WHITESPACE, &m_showCustomEncoding); ImGui::EndDisabled(); - ImGuiExt::InfoTooltip("hex.builtin.hex_editor.custom_encoding_view"_lang); + ImGuiExt::InfoTooltip("hex.ui.hex_editor.custom_encoding_view"_lang); ImGui::SameLine(); // Human-readable units ImGuiExt::DimmedIconToggle(ICON_VS_SYMBOL_NUMERIC, &m_showHumanReadableUnits); - ImGuiExt::InfoTooltip("hex.builtin.hex_editor.human_readable_units_footer"_lang); + ImGuiExt::InfoTooltip("hex.ui.hex_editor.human_readable_units_footer"_lang); } ImGui::TableNextColumn(); @@ -846,7 +837,7 @@ namespace hex::plugin::builtin::ui { { auto &visualizers = ContentRegistry::HexEditor::impl::getVisualizers(); - ImGuiExt::TextFormatted("{}: ", "hex.builtin.hex_editor.visualizer"_lang); + ImGuiExt::TextFormatted("{}: ", "hex.ui.hex_editor.visualizer"_lang); ImGui::SameLine(0, 0); @@ -860,7 +851,7 @@ namespace hex::plugin::builtin::ui { { int sliderPos = m_dataVisualizerEndianness == std::endian::little ? 0 : 1; ImGui::PushItemWidth(60_scaled); - ImGui::SliderInt("##visualizer_endianness", &sliderPos, 0, 1, sliderPos == 0 ? "hex.builtin.common.little"_lang : "hex.builtin.common.big"_lang); + ImGui::SliderInt("##visualizer_endianness", &sliderPos, 0, 1, sliderPos == 0 ? "hex.ui.common.little"_lang : "hex.ui.common.big"_lang); ImGui::PopItemWidth(); m_dataVisualizerEndianness = sliderPos == 0 ? std::endian::little : std::endian::big; } @@ -891,8 +882,6 @@ namespace hex::plugin::builtin::ui { if (ImGui::SliderInt("##row_size", &bytesPerRow, 1, 32 / this->getBytesPerCell(), hex::format("{}", bytesPerRow * this->getBytesPerCell()).c_str())) { m_bytesPerRow = bytesPerRow * this->getBytesPerCell(); m_encodingLineStartAddresses.clear(); - - ContentRegistry::Settings::write("hex.builtin.setting.hex_editor", "hex.builtin.setting.hex_editor.bytes_per_row", m_bytesPerRow); } ImGui::PopItemWidth(); } diff --git a/plugins/builtin/source/ui/pattern_drawer.cpp b/plugins/ui/source/ui/pattern_drawer.cpp similarity index 94% rename from plugins/builtin/source/ui/pattern_drawer.cpp rename to plugins/ui/source/ui/pattern_drawer.cpp index 631aafe4e..bb0034a29 100644 --- a/plugins/builtin/source/ui/pattern_drawer.cpp +++ b/plugins/ui/source/ui/pattern_drawer.cpp @@ -34,7 +34,7 @@ #include -namespace hex::plugin::builtin::ui { +namespace hex::ui { namespace { @@ -90,9 +90,9 @@ namespace hex::plugin::builtin::ui { void drawOffsetColumnForBitfieldMember(const pl::ptrn::PatternBitfieldMember &pattern) { if (pattern.isPatternLocal()) { - ImGuiExt::TextFormatted("[{}]", "hex.builtin.pattern_drawer.local"_lang); + ImGuiExt::TextFormatted("[{}]", "hex.ui.pattern_drawer.local"_lang); ImGui::TableNextColumn(); - ImGuiExt::TextFormatted("[{}]", "hex.builtin.pattern_drawer.local"_lang); + ImGuiExt::TextFormatted("[{}]", "hex.ui.pattern_drawer.local"_lang); ImGui::TableNextColumn(); } else { ImGuiExt::TextFormatted("0x{0:08X}, bit {1}", pattern.getOffset(), pattern.getBitOffsetForDisplay()); @@ -110,7 +110,7 @@ namespace hex::plugin::builtin::ui { } if (pattern.isPatternLocal()) { - ImGuiExt::TextFormatted("[{}]", "hex.builtin.pattern_drawer.local"_lang); + ImGuiExt::TextFormatted("[{}]", "hex.ui.pattern_drawer.local"_lang); } else { ImGuiExt::TextFormatted("0x{0:08X}", pattern.getOffset()); } @@ -118,7 +118,7 @@ namespace hex::plugin::builtin::ui { ImGui::TableNextColumn(); if (pattern.isPatternLocal()) { - ImGuiExt::TextFormatted("[{}]", "hex.builtin.pattern_drawer.local"_lang); + ImGuiExt::TextFormatted("[{}]", "hex.ui.pattern_drawer.local"_lang); } else { ImGuiExt::TextFormatted("0x{0:08X}", pattern.getOffset() + pattern.getSize() - (pattern.getSize() == 0 ? 0 : 1)); } @@ -273,10 +273,10 @@ namespace hex::plugin::builtin::ui { m_lastVisualizerError = e.what(); } } else { - ImGui::TextUnformatted("hex.builtin.pattern_drawer.visualizer.invalid_parameter_count"_lang); + ImGui::TextUnformatted("hex.ui.pattern_drawer.visualizer.invalid_parameter_count"_lang); } } else { - ImGui::TextUnformatted("hex.builtin.pattern_drawer.visualizer.unknown"_lang); + ImGui::TextUnformatted("hex.ui.pattern_drawer.visualizer.unknown"_lang); } if (!m_lastVisualizerError.empty()) @@ -911,7 +911,7 @@ namespace hex::plugin::builtin::ui { ImGui::TableNextColumn(); ImGui::TableNextColumn(); - ImGui::Selectable(hex::format("... ({})", "hex.builtin.pattern_drawer.double_click"_lang).c_str(), false, ImGuiSelectableFlags_SpanAllColumns); + ImGui::Selectable(hex::format("... ({})", "hex.ui.pattern_drawer.double_click"_lang).c_str(), false, ImGuiSelectableFlags_SpanAllColumns); if (ImGui::IsItemHovered() && ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) displayEnd += DisplayEndStep; break; @@ -1032,13 +1032,13 @@ namespace hex::plugin::builtin::ui { ImGui::TableSetupScrollFreeze(0, 1); ImGui::TableSetupColumn("##favorite", ImGuiTableColumnFlags_NoSort | ImGuiTableColumnFlags_WidthFixed | ImGuiTableColumnFlags_NoResize | ImGuiTableColumnFlags_NoReorder | ImGuiTableColumnFlags_NoHide | ImGuiTableColumnFlags_IndentDisable, ImGui::GetTextLineHeight(), ImGui::GetID("favorite")); - ImGui::TableSetupColumn("hex.builtin.pattern_drawer.var_name"_lang, ImGuiTableColumnFlags_PreferSortAscending | ImGuiTableColumnFlags_NoHide | ImGuiTableColumnFlags_IndentEnable, 0, ImGui::GetID("name")); - ImGui::TableSetupColumn("hex.builtin.pattern_drawer.color"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("color")); - ImGui::TableSetupColumn("hex.builtin.pattern_drawer.start"_lang, ImGuiTableColumnFlags_PreferSortAscending | ImGuiTableColumnFlags_DefaultSort, 0, ImGui::GetID("start")); - ImGui::TableSetupColumn("hex.builtin.pattern_drawer.end"_lang, ImGuiTableColumnFlags_PreferSortAscending | ImGuiTableColumnFlags_DefaultSort, 0, ImGui::GetID("end")); - ImGui::TableSetupColumn("hex.builtin.pattern_drawer.size"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("size")); - ImGui::TableSetupColumn("hex.builtin.pattern_drawer.type"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("type")); - ImGui::TableSetupColumn("hex.builtin.pattern_drawer.value"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("value")); + ImGui::TableSetupColumn("hex.ui.pattern_drawer.var_name"_lang, ImGuiTableColumnFlags_PreferSortAscending | ImGuiTableColumnFlags_NoHide | ImGuiTableColumnFlags_IndentEnable, 0, ImGui::GetID("name")); + ImGui::TableSetupColumn("hex.ui.pattern_drawer.color"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("color")); + ImGui::TableSetupColumn("hex.ui.pattern_drawer.start"_lang, ImGuiTableColumnFlags_PreferSortAscending | ImGuiTableColumnFlags_DefaultSort, 0, ImGui::GetID("start")); + ImGui::TableSetupColumn("hex.ui.pattern_drawer.end"_lang, ImGuiTableColumnFlags_PreferSortAscending | ImGuiTableColumnFlags_DefaultSort, 0, ImGui::GetID("end")); + ImGui::TableSetupColumn("hex.ui.pattern_drawer.size"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("size")); + ImGui::TableSetupColumn("hex.ui.pattern_drawer.type"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("type")); + ImGui::TableSetupColumn("hex.ui.pattern_drawer.value"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("value")); auto sortSpecs = ImGui::TableGetSortSpecs(); @@ -1115,15 +1115,15 @@ namespace hex::plugin::builtin::ui { ImGui::SameLine(); ImGuiExt::DimmedIconToggle(ICON_VS_BOOK, &m_showSpecName); - ImGuiExt::InfoTooltip("hex.builtin.pattern_drawer.spec_name"_lang); + ImGuiExt::InfoTooltip("hex.ui.pattern_drawer.spec_name"_lang); ImGui::SameLine(); - treeStyleButton(ICON_VS_SYMBOL_KEYWORD, TreeStyle::Default, "hex.builtin.pattern_drawer.tree_style.tree"_lang); + treeStyleButton(ICON_VS_SYMBOL_KEYWORD, TreeStyle::Default, "hex.ui.pattern_drawer.tree_style.tree"_lang); ImGui::SameLine(0, 0); - treeStyleButton(ICON_VS_LIST_TREE, TreeStyle::AutoExpanded, "hex.builtin.pattern_drawer.tree_style.auto_expanded"_lang); + treeStyleButton(ICON_VS_LIST_TREE, TreeStyle::AutoExpanded, "hex.ui.pattern_drawer.tree_style.auto_expanded"_lang); ImGui::SameLine(0, 0); - treeStyleButton(ICON_VS_LIST_FLAT, TreeStyle::Flattened, "hex.builtin.pattern_drawer.tree_style.flattened"_lang); + treeStyleButton(ICON_VS_LIST_FLAT, TreeStyle::Flattened, "hex.ui.pattern_drawer.tree_style.flattened"_lang); ImGui::SameLine(0, 15_scaled); @@ -1135,7 +1135,7 @@ namespace hex::plugin::builtin::ui { } ImGui::EndDisabled(); - ImGuiExt::InfoTooltip("hex.builtin.pattern_drawer.export"_lang); + ImGuiExt::InfoTooltip("hex.ui.pattern_drawer.export"_lang); ImGui::SetNextWindowPos(ImGui::GetWindowPos() + ImVec2(startPos.x, ImGui::GetCursorPosY())); if (ImGui::BeginPopup("ExportPatterns")) { @@ -1165,7 +1165,7 @@ namespace hex::plugin::builtin::ui { m_favoritesUpdated = true; if (!patterns.empty() && !m_favoritesUpdateTask.isRunning()) { - m_favoritesUpdateTask = TaskManager::createTask("hex.builtin.pattern_drawer.updating"_lang, TaskManager::NoProgress, [this, patterns](auto &task) { + m_favoritesUpdateTask = TaskManager::createTask("hex.ui.pattern_drawer.updating"_lang, TaskManager::NoProgress, [this, patterns](auto &task) { size_t updatedFavorites = 0; for (auto &pattern : patterns) { @@ -1227,7 +1227,7 @@ namespace hex::plugin::builtin::ui { ImGui::TableNextColumn(); ImGui::TableNextColumn(); ImGui::PushID(id); - if (ImGui::TreeNodeEx("hex.builtin.pattern_drawer.favorites"_lang, ImGuiTreeNodeFlags_SpanFullWidth)) { + if (ImGui::TreeNodeEx("hex.ui.pattern_drawer.favorites"_lang, ImGuiTreeNodeFlags_SpanFullWidth)) { for (auto &[path, pattern] : m_favorites) { if (pattern == nullptr) continue; @@ -1290,7 +1290,7 @@ namespace hex::plugin::builtin::ui { } if (m_favoritesUpdateTask.isRunning()) { - ImGuiExt::TextOverlay("hex.builtin.pattern_drawer.updating"_lang, ImGui::GetWindowPos() + ImGui::GetWindowSize() / 2); + ImGuiExt::TextOverlay("hex.ui.pattern_drawer.updating"_lang, ImGui::GetWindowPos() + ImGui::GetWindowSize() / 2); } } diff --git a/plugins/visualizers/CMakeLists.txt b/plugins/visualizers/CMakeLists.txt new file mode 100644 index 000000000..ff2f266bc --- /dev/null +++ b/plugins/visualizers/CMakeLists.txt @@ -0,0 +1,37 @@ +cmake_minimum_required(VERSION 3.16) + +include(ImHexPlugin) + +if (NOT USE_SYSTEM_MINIAUDIO) + add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/miniaudio ${CMAKE_CURRENT_BINARY_DIR}/miniaudio EXCLUDE_FROM_ALL) + set_target_properties(miniaudio PROPERTIES POSITION_INDEPENDENT_CODE ON) + set(MINIAUDIO_LIBRARIES miniaudio) +else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(miniaudio REQUIRED IMPORTED_TARGET miniaudio) +endif() + +add_imhex_plugin( + NAME + visualizers + SOURCES + source/plugin_visualizers.cpp + + source/content/pl_visualizers.cpp + source/content/pl_inline_visualizers.cpp + + source/content/pl_visualizers/line_plot.cpp + source/content/pl_visualizers/scatter_plot.cpp + source/content/pl_visualizers/image.cpp + source/content/pl_visualizers/3d_model.cpp + source/content/pl_visualizers/sound.cpp + source/content/pl_visualizers/coordinates.cpp + source/content/pl_visualizers/timestamp.cpp + INCLUDES + include + ${MINIAUDIO_INCLUDE_DIRS} + + LIBRARIES + ${JTHREAD_LIBRARIES} + ${MINIAUDIO_LIBRARIES} +) diff --git a/plugins/builtin/include/content/pl_visualizers/visualizer_helpers.hpp b/plugins/visualizers/include/content/visualizer_helpers.hpp similarity index 89% rename from plugins/builtin/include/content/pl_visualizers/visualizer_helpers.hpp rename to plugins/visualizers/include/content/visualizer_helpers.hpp index f574c246f..835d12bf0 100644 --- a/plugins/builtin/include/content/pl_visualizers/visualizer_helpers.hpp +++ b/plugins/visualizers/include/content/visualizer_helpers.hpp @@ -1,20 +1,20 @@ -#pragma once - -#include -#include - -namespace hex::plugin::builtin { - - template - std::vector patternToArray(pl::ptrn::Pattern *pattern){ - const auto bytes = pattern->getBytes(); - - std::vector result; - result.resize(bytes.size() / sizeof(T)); - for (size_t i = 0; i < result.size(); i++) - std::memcpy(&result[i], &bytes[i * sizeof(T)], sizeof(T)); - - return result; - } - +#pragma once + +#include +#include + +namespace hex::plugin::visualizers { + + template + std::vector patternToArray(pl::ptrn::Pattern *pattern){ + const auto bytes = pattern->getBytes(); + + std::vector result; + result.resize(bytes.size() / sizeof(T)); + for (size_t i = 0; i < result.size(); i++) + std::memcpy(&result[i], &bytes[i * sizeof(T)], sizeof(T)); + + return result; + } + } \ No newline at end of file diff --git a/plugins/builtin/romfs/assets/common/map.jpg b/plugins/visualizers/romfs/assets/common/map.jpg similarity index 100% rename from plugins/builtin/romfs/assets/common/map.jpg rename to plugins/visualizers/romfs/assets/common/map.jpg diff --git a/plugins/visualizers/romfs/lang/de_DE.json b/plugins/visualizers/romfs/lang/de_DE.json new file mode 100644 index 000000000..fede34be0 --- /dev/null +++ b/plugins/visualizers/romfs/lang/de_DE.json @@ -0,0 +1,15 @@ +{ + "code": "de-DE", + "language": "German", + "country": "Germany", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "Rotation", + "hex.visualizers.pl_visualizer.3d.scale": "Skala", + "hex.visualizers.pl_visualizer.coordinates.latitude": "Breitengrade", + "hex.visualizers.pl_visualizer.coordinates.longitude": "Längengrad", + "hex.visualizers.pl_visualizer.coordinates.query": "Adresse finden", + "hex.visualizers.pl_visualizer.coordinates.querying": "Adresse abfragen...", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "Keine Adresse gefunden" + } +} diff --git a/plugins/visualizers/romfs/lang/en_US.json b/plugins/visualizers/romfs/lang/en_US.json new file mode 100644 index 000000000..8aa8e6ef1 --- /dev/null +++ b/plugins/visualizers/romfs/lang/en_US.json @@ -0,0 +1,21 @@ +{ + "code": "en-US", + "language": "English", + "country": "United States", + "fallback": true, + "translations": { + "hex.visualizers.pl_visualizer.3d.light_position": "Light Position", + "hex.visualizers.pl_visualizer.3d.ambient_brightness": "Ambient Brightness", + "hex.visualizers.pl_visualizer.3d.diffuse_brightness": "Diffuse Brightness", + "hex.visualizers.pl_visualizer.3d.specular_brightness": "Specular Brightness", + "hex.visualizers.pl_visualizer.3d.object_reflectiveness": "Object Reflectiveness", + "hex.visualizers.pl_visualizer.3d.light_color": "Light Color", + "hex.visualizers.pl_visualizer.3d.more_settings": "More Settings", + "hex.visualizers.pl_visualizer.3d.texture_file": "Texture File Path", + "hex.visualizers.pl_visualizer.coordinates.latitude": "Latitude", + "hex.visualizers.pl_visualizer.coordinates.longitude": "Longitude", + "hex.visualizers.pl_visualizer.coordinates.query": "Find address", + "hex.visualizers.pl_visualizer.coordinates.querying": "Querying address...", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "No address found" + } +} diff --git a/plugins/visualizers/romfs/lang/es_ES.json b/plugins/visualizers/romfs/lang/es_ES.json new file mode 100644 index 000000000..c273d6be6 --- /dev/null +++ b/plugins/visualizers/romfs/lang/es_ES.json @@ -0,0 +1,15 @@ +{ + "code": "es_ES", + "language": "Spanish", + "country": "Spain", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "Rotación", + "hex.visualizers.pl_visualizer.3d.scale": "Escala", + "hex.visualizers.pl_visualizer.coordinates.latitude": "", + "hex.visualizers.pl_visualizer.coordinates.longitude": "", + "hex.visualizers.pl_visualizer.coordinates.query": "", + "hex.visualizers.pl_visualizer.coordinates.querying": "", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "" + } +} diff --git a/plugins/visualizers/romfs/lang/it_IT.json b/plugins/visualizers/romfs/lang/it_IT.json new file mode 100644 index 000000000..5480dae08 --- /dev/null +++ b/plugins/visualizers/romfs/lang/it_IT.json @@ -0,0 +1,15 @@ +{ + "code": "it-IT", + "language": "Italian", + "country": "Italy", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "", + "hex.visualizers.pl_visualizer.3d.scale": "", + "hex.visualizers.pl_visualizer.coordinates.latitude": "", + "hex.visualizers.pl_visualizer.coordinates.longitude": "", + "hex.visualizers.pl_visualizer.coordinates.query": "", + "hex.visualizers.pl_visualizer.coordinates.querying": "", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "" + } +} diff --git a/plugins/visualizers/romfs/lang/ja_JP.json b/plugins/visualizers/romfs/lang/ja_JP.json new file mode 100644 index 000000000..52fbcdeb1 --- /dev/null +++ b/plugins/visualizers/romfs/lang/ja_JP.json @@ -0,0 +1,15 @@ +{ + "code": "ja-JP", + "language": "Japanese", + "country": "Japan", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "", + "hex.visualizers.pl_visualizer.3d.scale": "", + "hex.visualizers.pl_visualizer.coordinates.latitude": "", + "hex.visualizers.pl_visualizer.coordinates.longitude": "", + "hex.visualizers.pl_visualizer.coordinates.query": "", + "hex.visualizers.pl_visualizer.coordinates.querying": "", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "" + } +} diff --git a/plugins/visualizers/romfs/lang/ko_KR.json b/plugins/visualizers/romfs/lang/ko_KR.json new file mode 100644 index 000000000..0cdc6f8c1 --- /dev/null +++ b/plugins/visualizers/romfs/lang/ko_KR.json @@ -0,0 +1,23 @@ +{ + "code": "ko-KR", + "language": "Korean", + "country": "Korea", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "회전", + "hex.visualizers.pl_visualizer.3d.scale": "배율", + "hex.visualizers.pl_visualizer.coordinates.latitude": "위도", + "hex.visualizers.pl_visualizer.coordinates.longitude": "경도", + "hex.visualizers.pl_visualizer.coordinates.query": "주소 찾기", + "hex.visualizers.pl_visualizer.coordinates.querying": "주소 쿼리 중...", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "찾은 주소가 없습니다", + "hex.visualizers.pl_visualizer.3d.light_position": "조명 위치", + "hex.visualizers.pl_visualizer.3d.ambient_brightness": "주변 밝기", + "hex.visualizers.pl_visualizer.3d.diffuse_brightness": "확산 밝기", + "hex.visualizers.pl_visualizer.3d.specular_brightness": "반사 밝기", + "hex.visualizers.pl_visualizer.3d.object_reflectiveness": "개체 반사도", + "hex.visualizers.pl_visualizer.3d.light_color": "조명 색상", + "hex.visualizers.pl_visualizer.3d.more_settings": "설정 더 보기", + "hex.visualizers.pl_visualizer.3d.texture_file": "텍스처 파일 경로" + } +} diff --git a/plugins/visualizers/romfs/lang/pt_BR.json b/plugins/visualizers/romfs/lang/pt_BR.json new file mode 100644 index 000000000..8c1c301d1 --- /dev/null +++ b/plugins/visualizers/romfs/lang/pt_BR.json @@ -0,0 +1,15 @@ +{ + "code": "pt-BR", + "language": "Portuguese", + "country": "Brazil", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "", + "hex.visualizers.pl_visualizer.3d.scale": "", + "hex.visualizers.pl_visualizer.coordinates.latitude": "", + "hex.visualizers.pl_visualizer.coordinates.longitude": "", + "hex.visualizers.pl_visualizer.coordinates.query": "", + "hex.visualizers.pl_visualizer.coordinates.querying": "", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "" + } +} diff --git a/plugins/visualizers/romfs/lang/zh_CN.json b/plugins/visualizers/romfs/lang/zh_CN.json new file mode 100644 index 000000000..325219111 --- /dev/null +++ b/plugins/visualizers/romfs/lang/zh_CN.json @@ -0,0 +1,15 @@ +{ + "code": "zh-CN", + "language": "Chinese (Simplified)", + "country": "China", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "旋转", + "hex.visualizers.pl_visualizer.3d.scale": "缩放", + "hex.visualizers.pl_visualizer.coordinates.latitude": "维度", + "hex.visualizers.pl_visualizer.coordinates.longitude": "精度", + "hex.visualizers.pl_visualizer.coordinates.query": "查找地址", + "hex.visualizers.pl_visualizer.coordinates.querying": "正在查找地址...", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "找不到地址" + } +} diff --git a/plugins/visualizers/romfs/lang/zh_TW.json b/plugins/visualizers/romfs/lang/zh_TW.json new file mode 100644 index 000000000..0c5e8c4a5 --- /dev/null +++ b/plugins/visualizers/romfs/lang/zh_TW.json @@ -0,0 +1,15 @@ +{ + "code": "zh-TW", + "language": "Chinese (Traditional)", + "country": "Taiwan", + "fallback": false, + "translations": { + "hex.visualizers.pl_visualizer.3d.rotation": "", + "hex.visualizers.pl_visualizer.3d.scale": "", + "hex.visualizers.pl_visualizer.coordinates.latitude": "緯度", + "hex.visualizers.pl_visualizer.coordinates.longitude": "經度", + "hex.visualizers.pl_visualizer.coordinates.query": "查詢地址", + "hex.visualizers.pl_visualizer.coordinates.querying": "正在查詢地址...", + "hex.visualizers.pl_visualizer.coordinates.querying_no_address": "找不到地址" + } +} diff --git a/plugins/builtin/romfs/licenses/MAP_LICENSE b/plugins/visualizers/romfs/licenses/MAP_LICENSE similarity index 100% rename from plugins/builtin/romfs/licenses/MAP_LICENSE rename to plugins/visualizers/romfs/licenses/MAP_LICENSE diff --git a/plugins/builtin/romfs/shaders/default/fragment.glsl b/plugins/visualizers/romfs/shaders/default/fragment.glsl similarity index 100% rename from plugins/builtin/romfs/shaders/default/fragment.glsl rename to plugins/visualizers/romfs/shaders/default/fragment.glsl diff --git a/plugins/builtin/romfs/shaders/default/lightFragment.glsl b/plugins/visualizers/romfs/shaders/default/lightFragment.glsl similarity index 100% rename from plugins/builtin/romfs/shaders/default/lightFragment.glsl rename to plugins/visualizers/romfs/shaders/default/lightFragment.glsl diff --git a/plugins/builtin/romfs/shaders/default/lightVertex.glsl b/plugins/visualizers/romfs/shaders/default/lightVertex.glsl similarity index 100% rename from plugins/builtin/romfs/shaders/default/lightVertex.glsl rename to plugins/visualizers/romfs/shaders/default/lightVertex.glsl diff --git a/plugins/builtin/romfs/shaders/default/lineFragment.glsl b/plugins/visualizers/romfs/shaders/default/lineFragment.glsl similarity index 100% rename from plugins/builtin/romfs/shaders/default/lineFragment.glsl rename to plugins/visualizers/romfs/shaders/default/lineFragment.glsl diff --git a/plugins/builtin/romfs/shaders/default/lineVertex.glsl b/plugins/visualizers/romfs/shaders/default/lineVertex.glsl similarity index 100% rename from plugins/builtin/romfs/shaders/default/lineVertex.glsl rename to plugins/visualizers/romfs/shaders/default/lineVertex.glsl diff --git a/plugins/builtin/romfs/shaders/default/vertex.glsl b/plugins/visualizers/romfs/shaders/default/vertex.glsl similarity index 100% rename from plugins/builtin/romfs/shaders/default/vertex.glsl rename to plugins/visualizers/romfs/shaders/default/vertex.glsl diff --git a/plugins/builtin/source/content/pl_inline_visualizers.cpp b/plugins/visualizers/source/content/pl_inline_visualizers.cpp similarity index 98% rename from plugins/builtin/source/content/pl_inline_visualizers.cpp rename to plugins/visualizers/source/content/pl_inline_visualizers.cpp index f9312cc46..71da4b37f 100644 --- a/plugins/builtin/source/content/pl_inline_visualizers.cpp +++ b/plugins/visualizers/source/content/pl_inline_visualizers.cpp @@ -8,7 +8,7 @@ #include -namespace hex::plugin::builtin { +namespace hex::plugin::visualizers { namespace { diff --git a/plugins/visualizers/source/content/pl_visualizers.cpp b/plugins/visualizers/source/content/pl_visualizers.cpp new file mode 100644 index 000000000..de51c3730 --- /dev/null +++ b/plugins/visualizers/source/content/pl_visualizers.cpp @@ -0,0 +1,30 @@ +#include + +#include + + +namespace hex::plugin::visualizers { + + void drawLinePlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void drawScatterPlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void drawImageVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void drawBitmapVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void draw3DVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void drawSoundVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void drawCoordinateVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + void drawTimestampVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments); + + void registerPatternLanguageVisualizers() { + using ParamCount = pl::api::FunctionParameterCount; + + ContentRegistry::PatternLanguage::addVisualizer("line_plot", drawLinePlotVisualizer, ParamCount::exactly(1)); + ContentRegistry::PatternLanguage::addVisualizer("scatter_plot", drawScatterPlotVisualizer, ParamCount::exactly(2)); + ContentRegistry::PatternLanguage::addVisualizer("image", drawImageVisualizer, ParamCount::exactly(1)); + ContentRegistry::PatternLanguage::addVisualizer("bitmap", drawBitmapVisualizer, ParamCount::exactly(3)); + ContentRegistry::PatternLanguage::addVisualizer("3d", draw3DVisualizer, ParamCount::between(2, 6)); + ContentRegistry::PatternLanguage::addVisualizer("sound", drawSoundVisualizer, ParamCount::exactly(3)); + ContentRegistry::PatternLanguage::addVisualizer("coordinates", drawCoordinateVisualizer, ParamCount::exactly(2)); + ContentRegistry::PatternLanguage::addVisualizer("timestamp", drawTimestampVisualizer, ParamCount::exactly(1)); + } + +} diff --git a/plugins/builtin/source/content/pl_visualizers/3d_model.cpp b/plugins/visualizers/source/content/pl_visualizers/3d_model.cpp similarity index 96% rename from plugins/builtin/source/content/pl_visualizers/3d_model.cpp rename to plugins/visualizers/source/content/pl_visualizers/3d_model.cpp index 0c4364bab..e6ebdabfe 100644 --- a/plugins/builtin/source/content/pl_visualizers/3d_model.cpp +++ b/plugins/visualizers/source/content/pl_visualizers/3d_model.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include #include @@ -19,7 +19,7 @@ #include -namespace hex::plugin::builtin { +namespace hex::plugin::visualizers { namespace { @@ -515,15 +515,15 @@ namespace hex::plugin::builtin { } if (ImGui::BeginPopup("LightSettings")) { - if (ImGui::DragFloat3("hex.builtin.pl_visualizer.3d.light_position"_lang, s_lightPosition.data(), 0.05F)) { + if (ImGui::DragFloat3("hex.visualizers.pl_visualizer.3d.light_position"_lang, s_lightPosition.data(), 0.05F)) { s_shouldUpdateLightSource = true; } - ImGui::SliderFloat("hex.builtin.pl_visualizer.3d.ambient_brightness"_lang, &s_lightBrightness.data()[0], 0, 2); - ImGui::SliderFloat("hex.builtin.pl_visualizer.3d.diffuse_brightness"_lang, &s_lightBrightness.data()[1], 0, 2); - ImGui::SliderFloat("hex.builtin.pl_visualizer.3d.specular_brightness"_lang, &s_lightBrightness.data()[2], 0, 2); - ImGui::SliderFloat("hex.builtin.pl_visualizer.3d.object_reflectiveness"_lang, &s_lightBrightness.data()[3], 0, 64); - if (ImGui::ColorEdit3("hex.builtin.pl_visualizer.3d.light_color"_lang, s_lightColor.data())) + ImGui::SliderFloat("hex.visualizers.pl_visualizer.3d.ambient_brightness"_lang, &s_lightBrightness.data()[0], 0, 2); + ImGui::SliderFloat("hex.visualizers.pl_visualizer.3d.diffuse_brightness"_lang, &s_lightBrightness.data()[1], 0, 2); + ImGui::SliderFloat("hex.visualizers.pl_visualizer.3d.specular_brightness"_lang, &s_lightBrightness.data()[2], 0, 2); + ImGui::SliderFloat("hex.visualizers.pl_visualizer.3d.object_reflectiveness"_lang, &s_lightBrightness.data()[3], 0, 64); + if (ImGui::ColorEdit3("hex.visualizers.pl_visualizer.3d.light_color"_lang, s_lightColor.data())) s_shouldUpdateLightSource = true; ImGui::EndPopup(); @@ -562,15 +562,15 @@ namespace hex::plugin::builtin { ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); ImGui::SameLine(); - if (ImGuiExt::DimmedButton("hex.builtin.common.reset"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0))) { + if (ImGuiExt::DimmedButton("hex.ui.common.reset"_lang, ImVec2(ImGui::GetContentRegionAvail().x, 0))) { s_translation = { { 0.0F, 0.0F, -3.0F } }; s_rotation = { { 0.0F, 0.0F, 0.0F } }; s_scaling = 1.0F; } // Draw more settings - if (ImGui::CollapsingHeader("hex.builtin.pl_visualizer.3d.more_settings"_lang)) { - if (ImGuiExt::InputFilePicker("hex.builtin.pl_visualizer.3d.texture_file"_lang, s_texturePath, {})) + if (ImGui::CollapsingHeader("hex.visualizers.pl_visualizer.3d.more_settings"_lang)) { + if (ImGuiExt::InputFilePicker("hex.visualizers.pl_visualizer.3d.texture_file"_lang, s_texturePath, {})) s_shouldUpdateTexture = true; } } diff --git a/plugins/builtin/source/content/pl_visualizers/coordinates.cpp b/plugins/visualizers/source/content/pl_visualizers/coordinates.cpp similarity index 88% rename from plugins/builtin/source/content/pl_visualizers/coordinates.cpp rename to plugins/visualizers/source/content/pl_visualizers/coordinates.cpp index 7b0988e68..cf6034490 100644 --- a/plugins/builtin/source/content/pl_visualizers/coordinates.cpp +++ b/plugins/visualizers/source/content/pl_visualizers/coordinates.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include #include @@ -11,7 +11,7 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::plugin::visualizers { void drawCoordinateVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { static ImVec2 coordinate; @@ -43,12 +43,12 @@ namespace hex::plugin::builtin { // Draw Longitude / Latitude text below image ImGui::PushTextWrapPos(startPos.x + mapSize.x); ImGuiExt::TextFormattedWrapped("{}: {:.0f}° {:.0f}' {:.4f}\" {} | {}: {:.0f}° {:.0f}' {:.4f}\" {}", - "hex.builtin.pl_visualizer.coordinates.latitude"_lang, + "hex.visualizers.pl_visualizer.coordinates.latitude"_lang, std::floor(std::abs(latitude)), std::floor(std::abs(latitude - std::floor(latitude)) * 60), (std::abs(latitude - std::floor(latitude)) * 60 - std::floor(std::abs(latitude - std::floor(latitude)) * 60)) * 60, latitude >= 0 ? "N" : "S", - "hex.builtin.pl_visualizer.coordinates.longitude"_lang, + "hex.visualizers.pl_visualizer.coordinates.longitude"_lang, std::floor(std::abs(longitude)), std::floor(std::abs(longitude - std::floor(longitude)) * 60), (std::abs(longitude - std::floor(longitude)) * 60 - std::floor(std::abs(longitude - std::floor(longitude)) * 60)) * 60, @@ -57,10 +57,10 @@ namespace hex::plugin::builtin { ImGui::PopTextWrapPos(); if (addressTask.isRunning()) { - ImGuiExt::TextSpinner("hex.builtin.pl_visualizer.coordinates.querying"_lang); + ImGuiExt::TextSpinner("hex.visualizers.pl_visualizer.coordinates.querying"_lang); } else if (address.empty()) { - if (ImGuiExt::DimmedButton("hex.builtin.pl_visualizer.coordinates.query"_lang)) { - addressTask = TaskManager::createBackgroundTask("hex.builtin.pl_visualizer.coordinates.querying"_lang, [lat = latitude, lon = longitude](auto &) { + if (ImGuiExt::DimmedButton("hex.visualizers.pl_visualizer.coordinates.query"_lang)) { + addressTask = TaskManager::createBackgroundTask("hex.visualizers.pl_visualizer.coordinates.querying"_lang, [lat = latitude, lon = longitude](auto &) { constexpr static auto ApiURL = "https://geocode.maps.co/reverse?lat={}&lon={}&format=jsonv2"; HttpRequest request("GET", hex::format(ApiURL, lat, lon)); @@ -90,7 +90,7 @@ namespace hex::plugin::builtin { jsonAddr["country"].get()); } } catch (std::exception &) { - address = std::string("hex.builtin.pl_visualizer.coordinates.querying_no_address"_lang); + address = std::string("hex.visualizers.pl_visualizer.coordinates.querying_no_address"_lang); } }); } diff --git a/plugins/builtin/source/content/pl_visualizers/image.cpp b/plugins/visualizers/source/content/pl_visualizers/image.cpp similarity index 94% rename from plugins/builtin/source/content/pl_visualizers/image.cpp rename to plugins/visualizers/source/content/pl_visualizers/image.cpp index 40cbb01c6..2376406a4 100644 --- a/plugins/builtin/source/content/pl_visualizers/image.cpp +++ b/plugins/visualizers/source/content/pl_visualizers/image.cpp @@ -1,13 +1,15 @@ #include -#include +#include #include #include #include -namespace hex::plugin::builtin { +#include + +namespace hex::plugin::visualizers { void drawImageVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { static ImGuiExt::Texture texture; diff --git a/plugins/builtin/source/content/pl_visualizers/line_plot.cpp b/plugins/visualizers/source/content/pl_visualizers/line_plot.cpp similarity index 90% rename from plugins/builtin/source/content/pl_visualizers/line_plot.cpp rename to plugins/visualizers/source/content/pl_visualizers/line_plot.cpp index eee3dcea6..a754cc54b 100644 --- a/plugins/builtin/source/content/pl_visualizers/line_plot.cpp +++ b/plugins/visualizers/source/content/pl_visualizers/line_plot.cpp @@ -1,13 +1,13 @@ #include -#include +#include #include #include #include -namespace hex::plugin::builtin { +namespace hex::plugin::visualizers { void drawLinePlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { static std::vector values; diff --git a/plugins/builtin/source/content/pl_visualizers/scatter_plot.cpp b/plugins/visualizers/source/content/pl_visualizers/scatter_plot.cpp similarity index 92% rename from plugins/builtin/source/content/pl_visualizers/scatter_plot.cpp rename to plugins/visualizers/source/content/pl_visualizers/scatter_plot.cpp index 3721977b2..fcc213096 100644 --- a/plugins/builtin/source/content/pl_visualizers/scatter_plot.cpp +++ b/plugins/visualizers/source/content/pl_visualizers/scatter_plot.cpp @@ -1,13 +1,13 @@ #include -#include +#include #include #include #include -namespace hex::plugin::builtin { +namespace hex::plugin::visualizers { void drawScatterPlotVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { static std::vector xValues, yValues; diff --git a/plugins/builtin/source/content/pl_visualizers/sound.cpp b/plugins/visualizers/source/content/pl_visualizers/sound.cpp similarity index 98% rename from plugins/builtin/source/content/pl_visualizers/sound.cpp rename to plugins/visualizers/source/content/pl_visualizers/sound.cpp index 7a333fae1..4806f9744 100644 --- a/plugins/builtin/source/content/pl_visualizers/sound.cpp +++ b/plugins/visualizers/source/content/pl_visualizers/sound.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include #include @@ -10,7 +10,7 @@ #include -namespace hex::plugin::builtin { +namespace hex::plugin::visualizers { void drawSoundVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool shouldReset, std::span arguments) { auto wavePattern = arguments[0].toPattern(); diff --git a/plugins/builtin/source/content/pl_visualizers/timestamp.cpp b/plugins/visualizers/source/content/pl_visualizers/timestamp.cpp similarity index 98% rename from plugins/builtin/source/content/pl_visualizers/timestamp.cpp rename to plugins/visualizers/source/content/pl_visualizers/timestamp.cpp index ff5fa0639..33caedfe3 100644 --- a/plugins/builtin/source/content/pl_visualizers/timestamp.cpp +++ b/plugins/visualizers/source/content/pl_visualizers/timestamp.cpp @@ -1,6 +1,6 @@ #include -#include +#include #include @@ -12,7 +12,7 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::plugin::visualizers { void drawTimestampVisualizer(pl::ptrn::Pattern &, pl::ptrn::IIterable &, bool, std::span arguments) { time_t timestamp = arguments[0].toUnsigned(); diff --git a/plugins/visualizers/source/plugin_visualizers.cpp b/plugins/visualizers/source/plugin_visualizers.cpp new file mode 100644 index 000000000..d21ec9b06 --- /dev/null +++ b/plugins/visualizers/source/plugin_visualizers.cpp @@ -0,0 +1,25 @@ +#include + +#include +#include + +#include + +namespace hex::plugin::visualizers { + + void registerPatternLanguageVisualizers(); + void registerPatternLanguageInlineVisualizers(); + +} + +using namespace hex; +using namespace hex::plugin::visualizers; + +IMHEX_PLUGIN_SETUP("Visualizers", "WerWolv", "Visualizers for the Pattern Language") { + hex::log::debug("Using romfs: '{}'", romfs::name()); + for (auto &path : romfs::list("lang")) + hex::ContentRegistry::Language::addLocalization(nlohmann::json::parse(romfs::get(path).string())); + + registerPatternLanguageVisualizers(); + registerPatternLanguageInlineVisualizers(); +} diff --git a/plugins/windows/CMakeLists.txt b/plugins/windows/CMakeLists.txt index dfb91c23f..ea8f49751 100644 --- a/plugins/windows/CMakeLists.txt +++ b/plugins/windows/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -# Add your source files here # + if (WIN32) include(ImHexPlugin) diff --git a/plugins/yara_rules/CMakeLists.txt b/plugins/yara_rules/CMakeLists.txt new file mode 100644 index 000000000..0110cadf9 --- /dev/null +++ b/plugins/yara_rules/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.16) + +include(ImHexPlugin) + +if (NOT USE_SYSTEM_YARA) + add_subdirectory(${THIRD_PARTY_LIBS_FOLDER}/yara ${CMAKE_CURRENT_BINARY_DIR}/yara EXCLUDE_FROM_ALL) + set_target_properties(libyara PROPERTIES POSITION_INDEPENDENT_CODE ON) + set(YARA_LIBRARIES libyara) +else() + find_package(PkgConfig REQUIRED) + pkg_check_modules(YARA REQUIRED IMPORTED_TARGET yara) +endif() + +add_imhex_plugin( + NAME + yara_rules + SOURCES + source/plugin_yara.cpp + + source/content/views/view_yara.cpp + INCLUDES + include + ${YARA_INCLUDE_DIRS} + LIBRARIES + ui + ${JTHREAD_LIBRARIES} + ${YARA_LIBRARIES} +) diff --git a/plugins/builtin/include/content/views/view_yara.hpp b/plugins/yara_rules/include/content/views/view_yara.hpp similarity index 96% rename from plugins/builtin/include/content/views/view_yara.hpp rename to plugins/yara_rules/include/content/views/view_yara.hpp index e91ab9e13..8136afc6f 100644 --- a/plugins/builtin/include/content/views/view_yara.hpp +++ b/plugins/yara_rules/include/content/views/view_yara.hpp @@ -6,7 +6,7 @@ #include -namespace hex::plugin::builtin { +namespace hex::plugin::yara { class ViewYara : public View::Window { public: diff --git a/plugins/yara_rules/romfs/lang/de_DE.json b/plugins/yara_rules/romfs/lang/de_DE.json new file mode 100644 index 000000000..ff5eb0cea --- /dev/null +++ b/plugins/yara_rules/romfs/lang/de_DE.json @@ -0,0 +1,21 @@ +{ + "code": "de-DE", + "language": "German", + "country": "Germany", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Yara Kompilerfehler: {0}", + "hex.yara_rules.view.yara.header.matches": "Treffer", + "hex.yara_rules.view.yara.header.rules": "Regeln", + "hex.yara_rules.view.yara.match": "Regeln anwenden", + "hex.yara_rules.view.yara.matches.identifier": "Kennung", + "hex.yara_rules.view.yara.matches.variable": "Variable", + "hex.yara_rules.view.yara.matching": "Anwenden...", + "hex.yara_rules.view.yara.name": "Yara Regeln", + "hex.yara_rules.view.yara.no_rules": "Keine Yara Regeln gefunden. Platziere sie in ImHex's 'yara' Ordner", + "hex.yara_rules.view.yara.reload": "Neu laden", + "hex.yara_rules.view.yara.reset": "Zurücksetzen", + "hex.yara_rules.view.yara.rule_added": "Yara Regel hinzugefügt!", + "hex.yara_rules.view.yara.whole_data": "Gesamte Daten Übereinstimmung!" + } +} diff --git a/plugins/yara_rules/romfs/lang/en_US.json b/plugins/yara_rules/romfs/lang/en_US.json new file mode 100644 index 000000000..9668b5671 --- /dev/null +++ b/plugins/yara_rules/romfs/lang/en_US.json @@ -0,0 +1,21 @@ +{ + "code": "en-US", + "language": "English", + "country": "United States", + "fallback": true, + "translations": { + "hex.yara_rules.view.yara.error": "Yara Compiler error: {0}", + "hex.yara_rules.view.yara.header.matches": "Matches", + "hex.yara_rules.view.yara.header.rules": "Rules", + "hex.yara_rules.view.yara.match": "Match Rules", + "hex.yara_rules.view.yara.matches.identifier": "Identifier", + "hex.yara_rules.view.yara.matches.variable": "Variable", + "hex.yara_rules.view.yara.matching": "Matching...", + "hex.yara_rules.view.yara.name": "Yara Rules", + "hex.yara_rules.view.yara.no_rules": "No YARA rules found. Put them in ImHex's 'yara' folder", + "hex.yara_rules.view.yara.reload": "Reload", + "hex.yara_rules.view.yara.reset": "Reset", + "hex.yara_rules.view.yara.rule_added": "Yara rule added!", + "hex.yara_rules.view.yara.whole_data": "Whole file matches!" + } +} diff --git a/plugins/yara_rules/romfs/lang/es_ES.json b/plugins/yara_rules/romfs/lang/es_ES.json new file mode 100644 index 000000000..32364f837 --- /dev/null +++ b/plugins/yara_rules/romfs/lang/es_ES.json @@ -0,0 +1,21 @@ +{ + "code": "es_ES", + "language": "Spanish", + "country": "Spain", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Error del compilador de Yara: ", + "hex.yara_rules.view.yara.header.matches": "Coincidenciasç", + "hex.yara_rules.view.yara.header.rules": "Rules", + "hex.yara_rules.view.yara.match": "Reglas de Coincidencia", + "hex.yara_rules.view.yara.matches.identifier": "Identificador", + "hex.yara_rules.view.yara.matches.variable": "", + "hex.yara_rules.view.yara.matching": "Analizando coincidencias...", + "hex.yara_rules.view.yara.name": "Yara Rules", + "hex.yara_rules.view.yara.no_rules": "No se encontraron Yara Rules. Estas han de encontrarse en la carpeta 'yara' de ImHex.", + "hex.yara_rules.view.yara.reload": "Recargar", + "hex.yara_rules.view.yara.reset": "Restablecer", + "hex.yara_rules.view.yara.rule_added": "¡La Yara Rule fue añadida con éxito!", + "hex.yara_rules.view.yara.whole_data": "¡El archivo completo coincide!" + } +} diff --git a/plugins/yara_rules/romfs/lang/it_IT.json b/plugins/yara_rules/romfs/lang/it_IT.json new file mode 100644 index 000000000..b039302df --- /dev/null +++ b/plugins/yara_rules/romfs/lang/it_IT.json @@ -0,0 +1,21 @@ +{ + "code": "it-IT", + "language": "Italian", + "country": "Italy", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Errore compilazione Yara: {0}", + "hex.yara_rules.view.yara.header.matches": "Abbinamenti", + "hex.yara_rules.view.yara.header.rules": "Regola", + "hex.yara_rules.view.yara.match": "Abbina Regole", + "hex.yara_rules.view.yara.matches.identifier": "Identificatore", + "hex.yara_rules.view.yara.matches.variable": "Variabile", + "hex.yara_rules.view.yara.matching": "Abbinamento...", + "hex.yara_rules.view.yara.name": "Regole di Yara", + "hex.yara_rules.view.yara.no_rules": "Nessuna regola di YARA. Aggiungile in nella cartella 'yara' di 'ImHex'", + "hex.yara_rules.view.yara.reload": "Ricarica", + "hex.yara_rules.view.yara.reset": "", + "hex.yara_rules.view.yara.rule_added": "Regola di Yara aggiunta!", + "hex.yara_rules.view.yara.whole_data": "Tutti i file combaciano!" + } +} diff --git a/plugins/yara_rules/romfs/lang/ja_JP.json b/plugins/yara_rules/romfs/lang/ja_JP.json new file mode 100644 index 000000000..9a1bb0b76 --- /dev/null +++ b/plugins/yara_rules/romfs/lang/ja_JP.json @@ -0,0 +1,21 @@ +{ + "code": "ja-JP", + "language": "Japanese", + "country": "Japan", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Yaraコンパイルエラー: {0}", + "hex.yara_rules.view.yara.header.matches": "マッチ結果", + "hex.yara_rules.view.yara.header.rules": "ルール", + "hex.yara_rules.view.yara.match": "検出", + "hex.yara_rules.view.yara.matches.identifier": "識別子", + "hex.yara_rules.view.yara.matches.variable": "変数", + "hex.yara_rules.view.yara.matching": "マッチ中…", + "hex.yara_rules.view.yara.name": "Yaraルール", + "hex.yara_rules.view.yara.no_rules": "YARAルールが見つかりませんでした。ImHexの'yara'フォルダ内に入れてください", + "hex.yara_rules.view.yara.reload": "リロード", + "hex.yara_rules.view.yara.reset": "", + "hex.yara_rules.view.yara.rule_added": "Yaraルールが追加されました。", + "hex.yara_rules.view.yara.whole_data": "ファイル全体が一致します。" + } +} diff --git a/plugins/yara_rules/romfs/lang/ko_KR.json b/plugins/yara_rules/romfs/lang/ko_KR.json new file mode 100644 index 000000000..7798978a9 --- /dev/null +++ b/plugins/yara_rules/romfs/lang/ko_KR.json @@ -0,0 +1,21 @@ +{ + "code": "ko-KR", + "language": "Korean", + "country": "Korea", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Yara 컴파일러 오류: {0}", + "hex.yara_rules.view.yara.header.matches": "일치", + "hex.yara_rules.view.yara.header.rules": "규칙", + "hex.yara_rules.view.yara.match": "규칙 일치 찾기", + "hex.yara_rules.view.yara.matches.identifier": "식별자", + "hex.yara_rules.view.yara.matches.variable": "변수", + "hex.yara_rules.view.yara.matching": "검색 중...", + "hex.yara_rules.view.yara.name": "Yara 규칙", + "hex.yara_rules.view.yara.no_rules": "Yara 규칙이 없습니다. ImHex의 'yara' 폴더에 Yara 규칙을 넣으세요", + "hex.yara_rules.view.yara.reload": "새로 고침", + "hex.yara_rules.view.yara.reset": "재설정", + "hex.yara_rules.view.yara.rule_added": "Yara 규칙 추가됨!", + "hex.yara_rules.view.yara.whole_data": "모든 파일을 검색했습니다!" + } +} diff --git a/plugins/yara_rules/romfs/lang/pt_BR.json b/plugins/yara_rules/romfs/lang/pt_BR.json new file mode 100644 index 000000000..fada71b6f --- /dev/null +++ b/plugins/yara_rules/romfs/lang/pt_BR.json @@ -0,0 +1,21 @@ +{ + "code": "pt-BR", + "language": "Portuguese", + "country": "Brazil", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Erro do compilador Yara: {0}", + "hex.yara_rules.view.yara.header.matches": "Combinações", + "hex.yara_rules.view.yara.header.rules": "Regras", + "hex.yara_rules.view.yara.match": "Combinar Regras", + "hex.yara_rules.view.yara.matches.identifier": "Identificador", + "hex.yara_rules.view.yara.matches.variable": "Variável", + "hex.yara_rules.view.yara.matching": "Combinando...", + "hex.yara_rules.view.yara.name": "Regras Yara", + "hex.yara_rules.view.yara.no_rules": "Nenhuma regra YARA encontrada. Coloque-os na pasta 'yara' do ImHex", + "hex.yara_rules.view.yara.reload": "Recarregar", + "hex.yara_rules.view.yara.reset": "", + "hex.yara_rules.view.yara.rule_added": "Regra Yara Adicionada!", + "hex.yara_rules.view.yara.whole_data": "O arquivo inteiro corresponde!" + } +} diff --git a/plugins/yara_rules/romfs/lang/zh_CN.json b/plugins/yara_rules/romfs/lang/zh_CN.json new file mode 100644 index 000000000..73b8002a0 --- /dev/null +++ b/plugins/yara_rules/romfs/lang/zh_CN.json @@ -0,0 +1,21 @@ +{ + "code": "zh-CN", + "language": "Chinese (Simplified)", + "country": "China", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Yara 编译器错误: {0}", + "hex.yara_rules.view.yara.header.matches": "匹配", + "hex.yara_rules.view.yara.header.rules": "规则", + "hex.yara_rules.view.yara.match": "匹配规则", + "hex.yara_rules.view.yara.matches.identifier": "标识符", + "hex.yara_rules.view.yara.matches.variable": "变量", + "hex.yara_rules.view.yara.matching": "匹配中...", + "hex.yara_rules.view.yara.name": "Yara 规则", + "hex.yara_rules.view.yara.no_rules": "没有找到 Yara 规则。请将规则放到 ImHex 的 'yara' 目录下。", + "hex.yara_rules.view.yara.reload": "重新加载", + "hex.yara_rules.view.yara.reset": "重置", + "hex.yara_rules.view.yara.rule_added": "Yara 规则已添加!", + "hex.yara_rules.view.yara.whole_data": "全文件匹配!" + } +} diff --git a/plugins/yara_rules/romfs/lang/zh_TW.json b/plugins/yara_rules/romfs/lang/zh_TW.json new file mode 100644 index 000000000..ec48a1930 --- /dev/null +++ b/plugins/yara_rules/romfs/lang/zh_TW.json @@ -0,0 +1,21 @@ +{ + "code": "zh-TW", + "language": "Chinese (Traditional)", + "country": "Taiwan", + "fallback": false, + "translations": { + "hex.yara_rules.view.yara.error": "Yara 編譯器錯誤:", + "hex.yara_rules.view.yara.header.matches": "Matches", + "hex.yara_rules.view.yara.header.rules": "規則", + "hex.yara_rules.view.yara.match": "Match Rules", + "hex.yara_rules.view.yara.matches.identifier": "識別碼", + "hex.yara_rules.view.yara.matches.variable": "變數", + "hex.yara_rules.view.yara.matching": "Matching...", + "hex.yara_rules.view.yara.name": "Yara 規則", + "hex.yara_rules.view.yara.no_rules": "找不到 YARA 規則。請放進 ImHex 的 'yara' 資料夾中", + "hex.yara_rules.view.yara.reload": "重新載入", + "hex.yara_rules.view.yara.reset": "重設", + "hex.yara_rules.view.yara.rule_added": " Yara 規則已新增!", + "hex.yara_rules.view.yara.whole_data": "Whole file matches!" + } +} diff --git a/plugins/builtin/source/content/views/view_yara.cpp b/plugins/yara_rules/source/content/views/view_yara.cpp similarity index 91% rename from plugins/builtin/source/content/views/view_yara.cpp rename to plugins/yara_rules/source/content/views/view_yara.cpp index 270ebf9fa..899fc883b 100644 --- a/plugins/builtin/source/content/views/view_yara.cpp +++ b/plugins/yara_rules/source/content/views/view_yara.cpp @@ -6,8 +6,8 @@ #include #include -#include -#include +#include +#include // 's RE type has a zero-sized array, which is not allowed in ISO C++. #pragma GCC diagnostic push @@ -23,17 +23,17 @@ #include #include -namespace hex::plugin::builtin { +namespace hex::plugin::yara { using namespace wolv::literals; - ViewYara::ViewYara() : View::Window("hex.builtin.view.yara.name") { + ViewYara::ViewYara() : View::Window("hex.yara_rules.view.yara.name") { yr_initialize(); ContentRegistry::FileHandler::add({ ".yar", ".yara" }, [](const auto &path) { for (const auto &destPath : fs::getDefaultPaths(fs::ImHexPath::Yara)) { if (wolv::io::fs::copyFile(path, destPath / path.filename(), std::fs::copy_options::overwrite_existing)) { - PopupInfo::open("hex.builtin.view.yara.rule_added"_lang); + ui::PopupInfo::open("hex.yara_rules.view.yara.rule_added"_lang); return true; } } @@ -99,7 +99,7 @@ namespace hex::plugin::builtin { } void ViewYara::drawContent() { - ImGuiExt::Header("hex.builtin.view.yara.header.rules"_lang, true); + ImGuiExt::Header("hex.yara_rules.view.yara.header.rules"_lang, true); if (ImGui::BeginListBox("##rules", ImVec2(-FLT_MIN, ImGui::GetTextLineHeightWithSpacing() * 5))) { for (u32 i = 0; i < m_rules->size(); i++) { @@ -124,10 +124,10 @@ namespace hex::plugin::builtin { } } - PopupFileChooser::open(basePaths, paths, std::vector{ { "Yara File", "yara" }, { "Yara File", "yar" } }, true, + /*PopupFileChooser::open(basePaths, paths, std::vector{ { "Yara File", "yara" }, { "Yara File", "yar" } }, true, [&](const auto &path) { m_rules->push_back({ path.filename(), path }); - }); + });*/ } ImGui::SameLine(); @@ -139,15 +139,15 @@ namespace hex::plugin::builtin { } ImGui::NewLine(); - if (ImGui::Button("hex.builtin.view.yara.match"_lang)) this->applyRules(); + if (ImGui::Button("hex.yara_rules.view.yara.match"_lang)) this->applyRules(); ImGui::SameLine(); if (m_matcherTask.isRunning()) { ImGui::SameLine(); - ImGuiExt::TextSpinner("hex.builtin.view.yara.matching"_lang); + ImGuiExt::TextSpinner("hex.yara_rules.view.yara.matching"_lang); } - ImGuiExt::Header("hex.builtin.view.yara.header.matches"_lang); + ImGuiExt::Header("hex.yara_rules.view.yara.header.matches"_lang); auto matchesTableSize = ImGui::GetContentRegionAvail(); matchesTableSize.y *= 3.75 / 5.0; @@ -155,10 +155,10 @@ namespace hex::plugin::builtin { if (ImGui::BeginTable("matches", 4, ImGuiTableFlags_Borders | ImGuiTableFlags_Resizable | ImGuiTableFlags_Sortable | ImGuiTableFlags_Reorderable | ImGuiTableFlags_RowBg | ImGuiTableFlags_ScrollY, matchesTableSize)) { ImGui::TableSetupScrollFreeze(0, 1); - ImGui::TableSetupColumn("hex.builtin.view.yara.matches.identifier"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("identifier")); - ImGui::TableSetupColumn("hex.builtin.view.yara.matches.variable"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("variable")); - ImGui::TableSetupColumn("hex.builtin.common.address"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("address")); - ImGui::TableSetupColumn("hex.builtin.common.size"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("size")); + ImGui::TableSetupColumn("hex.yara_rules.view.yara.matches.identifier"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("identifier")); + ImGui::TableSetupColumn("hex.yara_rules.view.yara.matches.variable"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("variable")); + ImGui::TableSetupColumn("hex.ui.common.address"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("address")); + ImGui::TableSetupColumn("hex.ui.common.size"_lang, ImGuiTableColumnFlags_PreferSortAscending, 0, ImGui::GetID("size")); ImGui::TableHeadersRow(); @@ -214,7 +214,7 @@ namespace hex::plugin::builtin { ImGuiExt::TextFormatted("0x{0:X}", size); } else { ImGui::TableNextColumn(); - ImGuiExt::TextFormattedColored(ImVec4(0.92F, 0.25F, 0.2F, 1.0F), "{}", "hex.builtin.view.yara.whole_data"_lang); + ImGuiExt::TextFormattedColored(ImVec4(0.92F, 0.25F, 0.2F, 1.0F), "{}", "hex.yara_rules.view.yara.whole_data"_lang); ImGui::TableNextColumn(); ImGui::TextUnformatted(""); } @@ -257,7 +257,7 @@ namespace hex::plugin::builtin { void ViewYara::applyRules() { this->clearResult(); - m_matcherTask = TaskManager::createTask("hex.builtin.view.yara.matching", 0, [this](auto &task) { + m_matcherTask = TaskManager::createTask("hex.yara_rules.view.yara.matching", 0, [this](auto &task) { if (!ImHexApi::Provider::isValid()) return; struct ResultContext { @@ -310,7 +310,7 @@ namespace hex::plugin::builtin { TaskManager::doLater([this, errorMessage = wolv::util::trim(errorMessage)] { this->clearResult(); - m_consoleMessages.push_back(hex::format("hex.builtin.view.yara.error"_lang, errorMessage)); + m_consoleMessages.push_back(hex::format("hex.yara_rules.view.yara.error"_lang, errorMessage)); }); return; diff --git a/plugins/yara_rules/source/plugin_yara.cpp b/plugins/yara_rules/source/plugin_yara.cpp new file mode 100644 index 000000000..08ab1ee36 --- /dev/null +++ b/plugins/yara_rules/source/plugin_yara.cpp @@ -0,0 +1,27 @@ +#include + +#include +#include + +#include + +#include "content/views/view_yara.hpp" + +using namespace hex; +using namespace hex::plugin::yara; + +namespace { + + void registerViews() { + ContentRegistry::Views::add(); + } + +} + +IMHEX_PLUGIN_SETUP("Yara Rules", "WerWolv", "Support for matching Yara rules") { + hex::log::debug("Using romfs: '{}'", romfs::name()); + for (auto &path : romfs::list("lang")) + hex::ContentRegistry::Language::addLocalization(nlohmann::json::parse(romfs::get(path).string())); + + registerViews(); +}