Exemplo n.º 1
0
 public void Close(bool fInteractive)
 {
     iRefCount--;
     if (iClosingCount == 0)
     {
         pluginServer.ClearEvents();
     }
     foreach (Plugin plugin in dicPluginInstances.Values)
     {
         if ((plugin.PluginInformation != null) && (fInteractive ^ (plugin.PluginInformation.PluginType != PluginType.Interactive)))
         {
             plugin.Close(EndCode.WindowClosed);
         }
     }
     if (!fInteractive)
     {
         plgIFilter    = null;
         plgFilterCore = null;
     }
     if (iRefCount == 0)
     {
         dicPluginInstances.Clear();
         pluginServer.Dispose();
         pluginServer = null;
     }
     iClosingCount++;
 }
Exemplo n.º 2
0
 private void LoadStartupPlugins()
 {
     foreach (PluginInformation information in PluginInformations.Where(information => information.Enabled))
     {
         if (information.PluginType == PluginType.Background)
         {
             Plugin plugin = Load(information, null);
             if (plugin != null)
             {
                 if (plgIFilter == null)
                 {
                     plgIFilter = plugin.Instance as IFilter;
                 }
                 if (plgFilterCore == null)
                 {
                     plgFilterCore = plugin.Instance as IFilterCore;
                 }
             }
             else
             {
                 information.Enabled = false;
             }
             continue;
         }
         if ((information.PluginType == PluginType.BackgroundMultiple) && (Load(information, null) == null))
         {
             information.Enabled = false;
         }
     }
 }
Exemplo n.º 3
0
 public void RefreshPluginAssembly(PluginAssembly pa, bool fStatic)
 {
     foreach (PluginInformation information in pa.PluginInformations)
     {
         if (!information.Enabled)
         {
             UnloadPluginInstance(information.PluginID, EndCode.Unloaded, fStatic);
             continue;
         }
         if (information.PluginType == PluginType.Background)
         {
             if (!PluginInstantialized(information.PluginID))
             {
                 Plugin plugin = Load(information, pa);
                 if (plugin != null)
                 {
                     if (plgIFilter == null)
                     {
                         plgIFilter = plugin.Instance as IFilter;
                     }
                     if (plgFilterCore == null)
                     {
                         plgFilterCore = plugin.Instance as IFilterCore;
                     }
                 }
                 else
                 {
                     information.Enabled = false;
                 }
             }
             continue;
         }
         if (information.PluginType == PluginType.BackgroundMultiple)
         {
             if (!PluginInstantialized(information.PluginID) && (Load(information, pa) == null))
             {
                 information.Enabled = false;
             }
         }
         else if ((fStatic && (information.PluginType == PluginType.Static)) && !dicStaticPluginInstances.ContainsKey(information.PluginID))
         {
             LoadStatics(information, pa, false);
         }
     }
 }
Exemplo n.º 4
0
 public void ClearFilterEngines()
 {
     plgIFilter    = null;
     plgFilterCore = null;
 }