Beispiel #1
0
        /// <inheritdoc />
        public bool SetActivationStatus(ISimplyAPlugin plugin, bool value)
        {
            var plugins = LoadPluginSettings().ToArray();

            var entry = plugins.SingleOrDefault(p => p.Name == GetPluginName(plugin));

            if (entry == null)
            {
                return(value);
            }

            var newValue = value || _pluginBasicConfigHelper.GetForcedPlugins().Contains(entry.Name);

            if (newValue != entry.IsActive)
            {
                if (newValue)
                {
                    try
                    {
                        plugin.OnActivation();
                    }
                    catch
                    {
                        newValue = false;
                    }
                }
                else
                {
                    try
                    {
                        plugin.OnDeactivation();
                    }
                    catch
                    {
                        //Just too bad !
                    }
                }

                entry.IsActive = newValue;
            }

            SavePluginSettings(plugins);
            return(newValue);
        }
        /// <summary>
        /// LoadPlugins
        /// </summary>
        protected virtual void LoadPlugins()
        {
            PluginsCatalog = PluginService.LoadPlugins(PluginsCatalog, GetPluginPaths(), InstanceResolverHelper, CreateRegistrantFinderBuilder(), PluginBasicConfigHelper.GetForcedPlugins());

            var catalog = PluginsCatalog.ToArray();

            foreach (var resourceDictionary in catalog.Where(x => x.IsNew && x.IsForeground).SelectMany(x => x.ForegroundPlugin.ResourceDictionaries))
            {
                Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
            }

            PluginService.ActivateNewPlugins(catalog);
        }