/// <summary> /// Adds all pipeline plugins to the given list, in display order if possible. /// </summary> /// <param name="plugins">List where to add plugins</param> /// <param name="settings"><see cref="UserSettings"/> used to fetch /// pipeline plugins.</param> /// <param name="pipelinePluginsOptions">What kind of pipeline plugins /// to add to the list.</param> private static void GetPipelinePlugins(List <Plugin> plugins, UserSettings settings, PipelinePluginsOptions pipelinePluginsOptions) { Debug.Assert(plugins != null); Debug.Assert(settings != null); List <PipelinePluginInfo> pluginInfos = new List <PipelinePluginInfo>(); if ((pipelinePluginsOptions & PipelinePluginsOptions.FetchPipelinePlugins) != 0) { pluginInfos.AddRange(settings.PipelinePlugins); } if ((pipelinePluginsOptions & PipelinePluginsOptions.FetchTempPipelinePlugins) != 0) { // Temp pipeline plugins can actually override existing pipeline plugins. // This mimics the code in PathCopyCopyPluginsRegistry.cpp in the C++ project. pluginInfos = settings.TempPipelinePlugins.Union(pluginInfos).ToList(); } if (pluginInfos.Count > 0) { if (plugins.Count > 0) { plugins.Add(new SeparatorPlugin()); } plugins.AddRange(PipelinePluginInfo.ToPlugins(pluginInfos)); } }
/// <summary> /// Returns a list containing all plugins to display in the default /// order. This should be used if user did not specify a custom order. /// </summary> /// <param name="settings"><see cref="UserSettings"/> object used to /// fetch plugin information.</param> /// <param name="pipelinePluginsOptions">What kind of pipeline plugins /// to include in the returned list (if any).</param> /// <returns>List of <see cref="Plugin"/>s in default order.</returns> public static List <Plugin> GetPluginsInDefaultOrder(UserSettings settings, PipelinePluginsOptions pipelinePluginsOptions) { if (settings == null) { throw new ArgumentNullException(nameof(settings)); } List <Plugin> plugins = new List <Plugin>(); // This mimics the code in PathCopyCopyPluginsRegistry.cpp in the C++ project. // Default plugins GetDefaultPlugins(plugins, settings); // COM plugins GetCOMPlugins(plugins); // Pipeline plugins GetPipelinePlugins(plugins, settings, pipelinePluginsOptions); return(plugins); }