Esempio n. 1
0
        /// <summary>
        ///     Initialize and register an addon
        /// </summary>
        /// <param name="addon"></param>
        private static void RegisterAddon(IAddon addon)
        {
            // initialize
            addon.Initialize();

            // add
            AddonsDictionary.Add(addon.Name, addon);

            // if this addon has a tab, add it
            if (addon.HasTab)
            {
                TabsDictionary.Add(addon, addon.TabPage);
            }
            // if this addon has a settings page, add it
            if (addon.HasConfig)
            {
                SettingsDictionary.Add(addon, addon.ConfigPage);
            }
        }
Esempio n. 2
0
        /// <summary>
        ///     Reload an addon
        /// </summary>
        /// <param name="name"></param>
        /// <remarks>Reloading addons is highly discouraged! Only use if no other way is possible</remarks>
        public static void ReloadAddon(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return;
            }
            try
            {
                IAddon addon = GetAddon(name);
                if (addon == null)
                {
                    return;
                }
                if (addon.HasTab)
                {
                    return;                               // we can't reload these yet!
                }
                if (addon.HasTab && TabsDictionary.ContainsKey(addon))
                {
                    TabsDictionary.Remove(addon);
                }
                if (addon.HasConfig && SettingsDictionary.ContainsKey(addon))
                {
                    SettingsDictionary.Remove(addon);
                }

                Settings.Settings settingsmanager = ((Settings.Settings)GetRequiredAddon(RequiredAddon.Settings));

                settingsmanager.RemoveAddonSettings(addon); //unload settings
                addon.Dispose();                            //dispose old addon
                addon = CreateAddon(addon);                 // create new one + initialize
                settingsmanager.AddAddonSettings(addon);    // load settings
            }
            catch (Exception exception)
            {
                Logger.Log(LogLevel.Severe, "AddonManager", "Failed to reload addon! " + name, exception.Message);
            }
        }