diff --git a/lib/libimhex/include/hex/api/content_registry.hpp b/lib/libimhex/include/hex/api/content_registry.hpp index 8c580ffa9..b1b0da6e5 100644 --- a/lib/libimhex/include/hex/api/content_registry.hpp +++ b/lib/libimhex/include/hex/api/content_registry.hpp @@ -493,14 +493,8 @@ namespace hex { using DrawCallback = std::function; using MenuCallback = std::function; using EnabledCallback = std::function; - using LayoutFunction = std::function; using ClickCallback = std::function; - struct Layout { - std::string unlocalizedName; - LayoutFunction callback; - }; - struct MainMenuItem { std::string unlocalizedName; }; @@ -535,8 +529,6 @@ namespace hex { std::vector &getSidebarItems(); std::vector &getTitleBarButtons(); - std::vector &getLayouts(); - } /** @@ -608,14 +600,6 @@ namespace hex { */ void addTitleBarButton(const std::string &icon, const std::string &unlocalizedTooltip, const impl::ClickCallback &function); - - /** - * @brief Adds a new layout definition to the Layout menu - * @param unlocalizedName The unlocalized name of the layout - * @param function The function to call to setup the layout - */ - void addLayout(const std::string &unlocalizedName, const impl::LayoutFunction &function); - } /* Provider Registry. Allows adding new data providers to be created from the UI */ diff --git a/lib/libimhex/include/hex/api/layout_manager.hpp b/lib/libimhex/include/hex/api/layout_manager.hpp index 20fbae363..7a7825638 100644 --- a/lib/libimhex/include/hex/api/layout_manager.hpp +++ b/lib/libimhex/include/hex/api/layout_manager.hpp @@ -26,6 +26,7 @@ namespace hex { static void process(); static void reload(); + static void reset(); private: LayoutManager() = default; diff --git a/lib/libimhex/source/api/content_registry.cpp b/lib/libimhex/source/api/content_registry.cpp index d0d2515ba..6d01d81f3 100644 --- a/lib/libimhex/source/api/content_registry.cpp +++ b/lib/libimhex/source/api/content_registry.cpp @@ -581,12 +581,6 @@ namespace hex { impl::getTitleBarButtons().push_back({ icon, unlocalizedTooltip, function }); } - void addLayout(const std::string &unlocalizedName, const impl::LayoutFunction &function) { - log::debug("Added new layout: {}", unlocalizedName); - - impl::getLayouts().push_back({ unlocalizedName, function }); - } - namespace impl { std::multimap &getMainMenuItems() { @@ -626,12 +620,6 @@ namespace hex { return buttons; } - std::vector &getLayouts() { - static std::vector layouts; - - return layouts; - } - } } diff --git a/lib/libimhex/source/api/layout_manager.cpp b/lib/libimhex/source/api/layout_manager.cpp index f203d1521..410a357b9 100644 --- a/lib/libimhex/source/api/layout_manager.cpp +++ b/lib/libimhex/source/api/layout_manager.cpp @@ -5,6 +5,8 @@ #include +#include + namespace hex { std::optional LayoutManager::s_layoutPathToLoad; @@ -72,4 +74,10 @@ namespace hex { } } + void LayoutManager::reset() { + s_layoutPathToLoad.reset(); + s_layoutStringToLoad.reset(); + s_layouts.clear(); + } + } \ No newline at end of file diff --git a/main/source/init/tasks.cpp b/main/source/init/tasks.cpp index 758565270..513dd1cdb 100644 --- a/main/source/init/tasks.cpp +++ b/main/source/init/tasks.cpp @@ -3,13 +3,17 @@ #include #include +#include +#include +#include + #include #include #include #include -#include -#include -#include +#include +#include + #include #include @@ -17,8 +21,6 @@ #include #include -#include - #include #include @@ -312,7 +314,6 @@ namespace hex::init { ContentRegistry::Interface::impl::getMenuItems().clear(); ContentRegistry::Interface::impl::getSidebarItems().clear(); ContentRegistry::Interface::impl::getTitleBarButtons().clear(); - ContentRegistry::Interface::impl::getLayouts().clear(); ShortcutManager::clearShortcuts(); @@ -324,6 +325,8 @@ namespace hex::init { ContentRegistry::FileHandler::impl::getEntries().clear(); ContentRegistry::Hashes::impl::getHashes().clear(); + LayoutManager::reset(); + ThemeManager::reset(); { diff --git a/plugins/builtin/CMakeLists.txt b/plugins/builtin/CMakeLists.txt index 018f098a2..0f739888f 100644 --- a/plugins/builtin/CMakeLists.txt +++ b/plugins/builtin/CMakeLists.txt @@ -18,7 +18,6 @@ add_library(${PROJECT_NAME} SHARED source/content/providers.cpp source/content/views.cpp source/content/data_formatters.cpp - source/content/layouts.cpp source/content/main_menu_items.cpp source/content/welcome_screen.cpp source/content/data_visualizers.cpp diff --git a/plugins/builtin/source/content/layouts.cpp b/plugins/builtin/source/content/layouts.cpp deleted file mode 100644 index 35c151e7b..000000000 --- a/plugins/builtin/source/content/layouts.cpp +++ /dev/null @@ -1,36 +0,0 @@ -#include - -#include - -namespace hex::plugin::builtin { - - static void openViewAndDockTo(const std::string &unlocalizedName, ImGuiID dockId) { - auto view = ContentRegistry::Views::getViewByName(unlocalizedName); - - if (view != nullptr) { - view->getWindowOpenState() = true; - ImGui::DockBuilderDockWindow(view->getName().c_str(), dockId); - } - } - - void registerLayouts() { - - ContentRegistry::Interface::addLayout("hex.builtin.layouts.default", [](ImGuiID dockMain) { - ImGuiID hexEditor = ImGui::DockBuilderSplitNode(dockMain, ImGuiDir_Left, 0.7F, nullptr, &dockMain); - ImGuiID utils = ImGui::DockBuilderSplitNode(dockMain, ImGuiDir_Right, 0.8F, nullptr, &dockMain); - ImGuiID patternData = ImGui::DockBuilderSplitNode(hexEditor, ImGuiDir_Down, 0.3F, nullptr, &hexEditor); - ImGuiID inspector = ImGui::DockBuilderSplitNode(hexEditor, ImGuiDir_Right, 0.3F, nullptr, &hexEditor); - - openViewAndDockTo("hex.builtin.view.hex_editor.name", hexEditor); - openViewAndDockTo("hex.builtin.view.data_inspector.name", inspector); - openViewAndDockTo("hex.builtin.view.pattern_data.name", patternData); - - openViewAndDockTo("hex.builtin.view.pattern_editor.name", utils); - openViewAndDockTo("hex.builtin.view.hashes.name", utils); - openViewAndDockTo("hex.builtin.view.data_information.name", utils); - openViewAndDockTo("hex.builtin.view.find.name", utils); - openViewAndDockTo("hex.builtin.view.bookmarks.name", utils); - }); - } - -} \ No newline at end of file diff --git a/plugins/builtin/source/plugin_builtin.cpp b/plugins/builtin/source/plugin_builtin.cpp index f21806f2c..7e7217b33 100644 --- a/plugins/builtin/source/plugin_builtin.cpp +++ b/plugins/builtin/source/plugin_builtin.cpp @@ -22,7 +22,6 @@ namespace hex::plugin::builtin { void registerHashes(); void registerProviders(); void registerDataFormatters(); - void registerLayouts(); void registerMainMenuEntries(); void createWelcomeScreen(); void registerViews(); @@ -70,7 +69,6 @@ IMHEX_PLUGIN_SETUP("Built-in", "WerWolv", "Default ImHex functionality") { addToolbarItems(); addGlobalUIItems(); - registerLayouts(); registerMainMenuEntries(); handleBorderlessWindowMode();