diff --git a/plugins/builtin/CMakeLists.txt b/plugins/builtin/CMakeLists.txt index 05f0e22d3..eac25e523 100644 --- a/plugins/builtin/CMakeLists.txt +++ b/plugins/builtin/CMakeLists.txt @@ -28,6 +28,7 @@ add_library(${PROJECT_NAME} SHARED source/content/global_actions.cpp source/content/themes.cpp source/content/recent.cpp + source/content/file_handlers.cpp source/content/providers/file_provider.cpp source/content/providers/gdb_provider.cpp diff --git a/plugins/builtin/source/content/file_handlers.cpp b/plugins/builtin/source/content/file_handlers.cpp new file mode 100644 index 000000000..bc0e3a749 --- /dev/null +++ b/plugins/builtin/source/content/file_handlers.cpp @@ -0,0 +1,23 @@ +#include + +#include + +namespace hex::plugin::builtin { + + void registerFileHandlers() { + + ContentRegistry::FileHandler::add({ ".hexproj" }, [](const std::fs::path &path) { + return ProjectFile::load(path); + }); + + ContentRegistry::FileHandler::add({ ".hexlyt" }, [](const std::fs::path &path) { + for (const auto &folder : fs::getDefaultPaths(fs::ImHexPath::Layouts)) { + if (wolv::io::fs::copyFile(path, folder / path.filename())) + return true; + } + + return false; + }); + } + +} \ No newline at end of file diff --git a/plugins/builtin/source/plugin_builtin.cpp b/plugins/builtin/source/plugin_builtin.cpp index d14119eb7..360aeca0a 100644 --- a/plugins/builtin/source/plugin_builtin.cpp +++ b/plugins/builtin/source/plugin_builtin.cpp @@ -30,6 +30,7 @@ namespace hex::plugin::builtin { void registerThemes(); void registerBackgroundServices(); void registerNetworkEndpoints(); + void registerFileHandlers(); void addFooterItems(); void addTitleBarButtons(); @@ -69,6 +70,7 @@ IMHEX_PLUGIN_SETUP("Built-in", "WerWolv", "Default ImHex functionality") { registerThemes(); registerBackgroundServices(); registerNetworkEndpoints(); + registerFileHandlers(); addFooterItems(); addTitleBarButtons();