Beispiel #1
0
        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);
        }
Beispiel #2
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);
            }
        }
Beispiel #3
0
        /// <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);
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 internal static void InitializeCurrent(MirandaPluginLink mirandaLink, PluginManagerBase pluginManager)
 {
     InitializeCurrent(mirandaLink, pluginManager, false);
 }
Beispiel #6
0
 internal void DetachPluginManager()
 {
     pluginManager = null;
 }
Beispiel #7
0
        internal void AssociatePluginManager(PluginManagerBase manager)
        {
            if (manager == null)
                throw new ArgumentNullException("manager");

            pluginManager = manager;
        }
Beispiel #8
0
 internal static void InitializeCurrent(MirandaPluginLink mirandaLink, PluginManagerBase pluginManager, bool skipContextPopulation)
 {
     if (singleton == null)
         singleton = new MirandaContext(pluginManager, mirandaLink, skipContextPopulation);
 }