Catch plugin actions loaded during startup

This commit is contained in:
Andrew
2026-07-13 16:00:25 +08:00
parent 88e3e59c64
commit 5a3e4abb18
3 changed files with 12 additions and 13 deletions

View File

@@ -3172,6 +3172,17 @@ bool GUI_App::on_init_inner()
refresh_plugins_dialog();
});
// Register all AppAction sources
m_action_registry.add_source(std::make_unique<ScriptActionSource>());
// m_action_registry.add_source(std::make_unique<AnotherActionSource>());
// m_action_registry.add_source(std::make_unique<YetAnotherActionSource>());
// ...
// Initialize with all added sources
// - register callbacks,
// - then enumerate: upsert all actions into registry
m_action_registry.init();
for (const std::string& plugin_key : plugin_mgr.get_catalog().get_enabled_plugin_keys()) {
if (!plugin_mgr.get_loader().is_plugin_loaded(plugin_key)) {
plugin_mgr.get_loader().load_plugin(plugin_mgr.get_catalog(), plugin_key, false);
@@ -3179,9 +3190,6 @@ bool GUI_App::on_init_inner()
}
}
m_action_registry.add_source(std::make_unique<ScriptActionSource>());
m_action_registry.init();
if (m_agent)
plugin_mgr.set_cloud_agent(std::dynamic_pointer_cast<OrcaCloudServiceAgent>(m_agent->get_cloud_agent()));