From fe6838e843bf0911befce99080220ea758b5d675 Mon Sep 17 00:00:00 2001 From: Matthias Melcher Date: Wed, 10 Dec 2025 21:09:13 +0100 Subject: Add access to a list of registered plugin klasses. --- src/Fl_Preferences.cxx | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/Fl_Preferences.cxx') diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx index 94b17e994..aa77a4e61 100644 --- a/src/Fl_Preferences.cxx +++ b/src/Fl_Preferences.cxx @@ -2118,3 +2118,25 @@ int Fl_Plugin_Manager::loadAll(const char *dirpath, const char *pattern) { free(dir); return 0; } + +/** + Return a list of all plugin klasses that have been registered so far. + The returned strings can be used to crate a manager for the klass of + plugins, which in turn can be used to list plugins for that klass. + ``` + auto kl = Fl_Plugin_Manager::klass_list(); + for (auto &k: kl) { + Fl_Plugin_Manager m { k.c_str() }; + std::cout << m.plugins() << "plugins have registered for klass" << k << std::endl; + } + ``` + \return a copy of a vector of strings + */ +std::vector Fl_Plugin_Manager::klass_list() { + Fl_Preferences p(0, "plugins"); + std::vector pm; + for (int i = 0; i < p.groups(); i++) { + pm.push_back(p.group(i)); + } + return pm; +} -- cgit v1.2.3