mirror of
https://github.com/WerWolv/ImHex.git
synced 2026-04-02 05:27:41 -05:00
feat: Allow plugins to be dynamically turned on and off
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
#include <utility>
|
||||
#include <hex/api/plugin_manager.hpp>
|
||||
#include <romfs/romfs.hpp>
|
||||
|
||||
#if defined(OS_WEB)
|
||||
@@ -972,6 +973,27 @@ namespace hex::plugin::builtin {
|
||||
|
||||
ContentRegistry::Settings::impl::store();
|
||||
});
|
||||
|
||||
|
||||
/* Plugins */
|
||||
{
|
||||
for (const auto &plugin : PluginManager::getPlugins()) {
|
||||
if (plugin.isLibraryPlugin())
|
||||
continue;
|
||||
if (plugin.isBuiltinPlugin())
|
||||
continue;
|
||||
|
||||
auto interface = ContentRegistry::Settings::add<Widgets::Checkbox>("hex.builtin.setting.plugins", "hex.builtin.setting.loaded_plugins", plugin.getPluginName(), true)
|
||||
.setTooltip(plugin.getPluginDescription())
|
||||
.setChangedCallback([&plugin](Widgets::Widget &widget) {
|
||||
auto checkBox = static_cast<Widgets::Checkbox *>(&widget);
|
||||
PluginManager::setPluginEnabled(plugin, checkBox->isChecked());
|
||||
})
|
||||
.requiresRestart();
|
||||
|
||||
PluginManager::setPluginEnabled(plugin, static_cast<Widgets::Checkbox *>(&interface.getWidget())->isChecked());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void loadLayoutSettings() {
|
||||
|
||||
@@ -88,7 +88,7 @@ IMHEX_PLUGIN_SUBCOMMANDS() {
|
||||
{ "save-editor", "", "Opens a pattern file for save file editing", hex::plugin::builtin::handleSaveEditorCommand },
|
||||
};
|
||||
|
||||
IMHEX_PLUGIN_SETUP("Built-in", "WerWolv", "Default ImHex functionality") {
|
||||
IMHEX_PLUGIN_SETUP_BUILTIN("Built-in", "WerWolv", "Default ImHex functionality") {
|
||||
using namespace hex::plugin::builtin;
|
||||
|
||||
// Show a warning banner on debug builds
|
||||
|
||||
Reference in New Issue
Block a user