Ejemplo n.º 1
0
        /// <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));
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }