Before: settings are as defaulted by `manager.MakeSettings()` Do as needed (once, persistently, when the plug-in is first used): store those default values into the config under "FactoryDefaults" preset After: settings are loaded for the "CurrentSettings" preset
| 228 | // those default values into the config under "FactoryDefaults" preset |
| 229 | // After: settings are loaded for the "CurrentSettings" preset |
| 230 | void InitializePreset( |
| 231 | EffectSettingsManager &manager, EffectSettings &settings) { |
| 232 | // Config key remembering whether we already stored FactoryDefaults |
| 233 | constexpr auto InitializedKey = L"Initialized"; |
| 234 | if (bool haveDefaults{}; |
| 235 | GetConfig(manager, PluginSettings::Private, FactoryDefaultsGroup(), |
| 236 | InitializedKey, haveDefaults, false), |
| 237 | !haveDefaults |
| 238 | ) { |
| 239 | manager.SaveUserPreset(FactoryDefaultsGroup(), settings); |
| 240 | // Also initialize the "current" settings -- |
| 241 | if (bool haveCurrent{}; |
| 242 | GetConfig(manager, PluginSettings::Private, CurrentSettingsGroup(), |
| 243 | InitializedKey, haveCurrent, false), |
| 244 | !haveCurrent |
| 245 | ) { |
| 246 | manager.SaveUserPreset(CurrentSettingsGroup(), settings); |
| 247 | } |
| 248 | SetConfig(manager, PluginSettings::Private, FactoryDefaultsGroup(), |
| 249 | InitializedKey, true); |
| 250 | } |
| 251 | // ignore failure |
| 252 | (void) manager.LoadUserPreset(CurrentSettingsGroup(), settings); |
| 253 | } |
| 254 | |
| 255 | std::pair<ComponentInterface *, EffectSettings> |
| 256 | LoadComponent(const PluginID &ID) |
no test coverage detected