private MirandaContext(PluginManagerBase pluginManager, MirandaPluginLink mirandaLink, bool skipContextInfo) { if (mirandaLink == null) throw new ArgumentNullException("mirandaLink"); this.pluginManager = pluginManager; this.mirandaDatabase = new MirandaDatabase(); this.pluginLink = mirandaLink; this.contactList = new ContactList(); this.serviceInterceptors = new ServiceCallInterceptionManager(); GetMMInterface(); PopulateEnvironmentInformation(); if (!skipContextInfo) PopulateContextInformation(); else this.protocols = new ProtocolDictionary(0); }
/// <summary> /// Registers managed main menu for Miranda's AddMenuItem services in an AppDomain. /// </summary> /// <param name="pluginManager">Plugin manager.</param> public void PromoteManagedMenuIntoAppDomain(PluginManagerBase pluginManager) { if (pluginManager == null) throw new ArgumentNullException("pluginManager"); if (ManagedMainMenu != null) { pluginManager.DoContextCallback(delegate(PluginManagerBase _sender, ManagedMainMenu _menu) { ManagedMainMenu.RegisterInterceptors(_menu); }, ManagedMainMenu); } }
/// <summary> /// Broadcasts the BeforeShutdown event to the managed plugins. /// </summary> private static void BroadcastBeforeMirandaExitEvent(PluginManagerBase sender, object state) { try { SynchronizationHelper.BeginCollectionUpdate(sender.Plugins); foreach (PluginDescriptor descriptor in sender.Plugins) { try { SynchronizationHelper.BeginDescriptorUpdate(descriptor); descriptor.Plugin.BeforeMirandaShutdownInternal(); } finally { SynchronizationHelper.EndUpdate(descriptor); } } } finally { SynchronizationHelper.EndUpdate(sender.Plugins); } }
public void LoadPluginManager(FusionContext context) { PluginManagerBase customManager = null; try { string fusionAssemblyName = RuntimeConfiguration.Singleton.CustomFusionAssemblyName; string pluginManagerTypeName = RuntimeConfiguration.Singleton.CustomPluginManagerTypeName; if (!String.IsNullOrEmpty(fusionAssemblyName) && !String.IsNullOrEmpty(pluginManagerTypeName)) customManager = InstantiateRemoteObject<PluginManagerBase>(fusionAssemblyName, pluginManagerTypeName, context); } catch (Exception e) { Log.DebuggerWrite(0, Loader.LogCategory, "Unable to load custom plugin manager (" + e.Message + "), defaulting to the built-in one."); } pluginManager = customManager ?? InstantiateRemoteObject<PluginManagerBase>(GetType().Assembly.FullName, typeof(DefaultPluginManager).FullName, context); }
internal static void InitializeCurrent(MirandaPluginLink mirandaLink, PluginManagerBase pluginManager) { InitializeCurrent(mirandaLink, pluginManager, false); }
internal void DetachPluginManager() { pluginManager = null; }
internal void AssociatePluginManager(PluginManagerBase manager) { if (manager == null) throw new ArgumentNullException("manager"); pluginManager = manager; }
internal static void InitializeCurrent(MirandaPluginLink mirandaLink, PluginManagerBase pluginManager, bool skipContextPopulation) { if (singleton == null) singleton = new MirandaContext(pluginManager, mirandaLink, skipContextPopulation); }