diff options
| author | Matthias Melcher <github@matthiasm.com> | 2025-12-10 21:09:13 +0100 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2025-12-10 21:09:13 +0100 |
| commit | fe6838e843bf0911befce99080220ea758b5d675 (patch) | |
| tree | 67e32cecb1a0d57c44ac0711f4920001e4bb01e5 /src | |
| parent | 7ff9b59825d07bbd50c8442de7b1d8d3a0e213b6 (diff) | |
Add access to a list of registered plugin klasses.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_Preferences.cxx | 22 |
1 files changed, 22 insertions, 0 deletions
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<std::string> Fl_Plugin_Manager::klass_list() { + Fl_Preferences p(0, "plugins"); + std::vector<std::string> pm; + for (int i = 0; i < p.groups(); i++) { + pm.push_back(p.group(i)); + } + return pm; +} |
