public void Plugins_Load(PluginConfiguration config)
        {
            if (Plugins != null)
            {
                if (!enabledPlugins.Contains(config))
                {
                    IClientPlugin plugin = Plugins.Find(x => x.Title.ToUpper() == config.Name.ToUpper());
                    if (plugin != null)
                    {
                        try
                        {
                            plugin.SubCategories = config.SubCategories;
                            plugin.SendData     += Plugin_SendData;

                            plugin.Initialize();
                        }
                        catch { }

                        var bt = new ListButton();
                        if (plugin.Image != null)
                        {
                            bt.Image = new BitmapImage(plugin.Image);
                        }
                        bt.Text       = plugin.Title;
                        bt.Selected  += PageSelected;
                        bt.DataObject = plugin;
                        Pages.Add(bt);

                        SortPageList();

                        enabledPlugins.Add(config);
                    }
                }
            }
        }
 /// <summary>
 /// Create an Options page for the plugin and add it to the Options Manager
 /// </summary>
 /// <param name="plugin"></param>
 private void Plugin_CreateOptionsPage(IClientPlugin plugin)
 {
     if (plugin.Options != null)
     {
         Options_AddPage(plugin.Options);
     }
 }
        /// <summary>
        /// Process the SubPlugins
        /// </summary>
        /// <param name="plugin"></param>
        private void Plugin_LoadSubPlugins(IClientPlugin plugin)
        {
            plugin.Plugins = new List <IClientPlugin>();

            if (plugin.SubCategories != null)
            {
                foreach (PluginConfigurationCategory subcategory in plugin.SubCategories)
                {
                    foreach (PluginConfiguration subConfig in subcategory.PluginConfigurations)
                    {
                        var subplugin = Plugins.Find(x =>
                                                     x.Title == subConfig.Name &&
                                                     x.ParentPlugin == subConfig.Parent &&
                                                     x.ParentPluginCategory == subConfig.Category
                                                     );
                        if (subplugin != null)
                        {
                            Plugin_LoadSubPlugins(subplugin);

                            plugin.Plugins.Add(subplugin);
                        }
                    }
                }
            }
        }
        void AddSubPlugins(IClientPlugin plugin)
        {
            plugin.Plugins = new List <IClientPlugin>();

            if (plugin.SubCategories != null)
            {
                foreach (PluginConfigurationCategory subcategory in plugin.SubCategories)
                {
                    foreach (PluginConfiguration subConfig in subcategory.PluginConfigurations)
                    {
                        IClientPlugin cplugin = Plugins.Find(x => x.Title.ToUpper() == subConfig.Name.ToUpper());
                        if (cplugin != null)
                        {
                            plugin.Plugins.Add(cplugin);
                        }
                    }
                }
            }
        }
Beispiel #5
0
        public static void LoadPlugins()
        {
            string[] strs = File.ReadAllLines(PLUGIN_CONFIG_FILE);

            foreach (string s in strs)
            {
                PluginInfo info = Parse(s);

                IClientPlugin plugin = Assist.CreateInstanceFromAssembly <IClientPlugin>(info.assembly, info.className);

                if (plugin != null)
                {
                    plugins.Add(plugin);
                    plugin.OnClientPluginEvent(ClientPluginEvent.PluginLoaded, null);
                }
            }

            Debug.Log("ClientPluginController: plugins=" + plugins.Count);
        }
        /// <summary>
        /// Find a PluginConfiguration item in 'configs' using 'name' as an identifier
        /// Searches all subpluginconfigurations also
        /// </summary>
        /// <param name="name"></param>
        /// <param name="configs"></param>
        /// <returns></returns>
        private PluginConfiguration FindPluginConfiguration(IClientPlugin plugin, List <PluginConfiguration> configs)
        {
            PluginConfiguration result = null;

            foreach (var config in configs)
            {
                // See if root is a match
                if (config.Name == plugin.Title &&
                    config.Parent == plugin.ParentPlugin &&
                    config.Category == plugin.ParentPluginCategory
                    )
                {
                    result = config;
                }
                // if root is not a match, then search subconfigs
                else
                {
                    if (config.SubCategories != null)
                    {
                        foreach (var subcategory in config.SubCategories)
                        {
                            var subConfig = FindPluginConfiguration(plugin, subcategory.PluginConfigurations);
                            if (subConfig != null)
                            {
                                result = subConfig;
                                break;
                            }
                        }
                    }
                }

                if (result != null)
                {
                    break;
                }
            }

            return(result);
        }
 public SendDataInfo(IClientPlugin plugin, EventData data)
 {
     Plugin = plugin;
     Data = data;
 }
        /// <summary>
        /// Process the SubPlugins
        /// </summary>
        /// <param name="plugin"></param>
        private void Plugin_LoadSubPlugins(IClientPlugin plugin)
        {
            plugin.Plugins = new List<IClientPlugin>();

            if (plugin.SubCategories != null)
            {
                foreach (PluginConfigurationCategory subcategory in plugin.SubCategories)
                {
                    foreach (PluginConfiguration subConfig in subcategory.PluginConfigurations)
                    {
                        var subplugin = Plugins.Find(x =>
                            x.Title == subConfig.Name &&
                            x.ParentPlugin == subConfig.Parent &&
                            x.ParentPluginCategory == subConfig.Category
                            );
                        if (subplugin != null)
                        {
                            Plugin_LoadSubPlugins(subplugin);

                            plugin.Plugins.Add(subplugin);
                        }
                    }
                }
            }
        }
 /// <summary>
 /// Create an Options page for the plugin and add it to the Options Manager
 /// </summary>
 /// <param name="plugin"></param>
 private void Plugin_CreateOptionsPage(IClientPlugin plugin)
 {
     if (plugin.Options != null) Options_AddPage(plugin.Options);
 }
        /// <summary>
        /// Find a PluginConfiguration item in 'configs' using 'name' as an identifier
        /// Searches all subpluginconfigurations also
        /// </summary>
        /// <param name="name"></param>
        /// <param name="configs"></param>
        /// <returns></returns>
        private PluginConfiguration FindPluginConfiguration(IClientPlugin plugin, List<PluginConfiguration> configs)
        {
            PluginConfiguration result = null;

            foreach (var config in configs)
            {
                // See if root is a match
                if (config.Name == plugin.Title &&
                    config.Parent == plugin.ParentPlugin &&
                    config.Category == plugin.ParentPluginCategory
                    ) result = config;
                // if root is not a match, then search subconfigs
                else
                {
                    if (config.SubCategories != null)
                    {
                        foreach (var subcategory in config.SubCategories)
                        {
                            var subConfig = FindPluginConfiguration(plugin, subcategory.PluginConfigurations);
                            if (subConfig != null)
                            {
                                result = subConfig;
                                break;
                            }
                        }
                    }
                }

                if (result != null) break;
            }

            return result;
        }
 /// <summary>
 /// Adds a plugin to the client.
 /// </summary>
 /// <param name="plugin">The plugin instance to add.</param>
 /// <remarks>
 /// Plugins enable developpers to plug custom code in the Stormancer client's extensibility points. Possible uses include: custom high level protocols, logger or analyzers.
 ///
 /// </remarks>
 void AddPlugin(IClientPlugin plugin)
 {
     Plugins.Add(plugin);
 }
        void AddSubPlugins(IClientPlugin plugin)
        {
            plugin.Plugins = new List<IClientPlugin>();

            if (plugin.SubCategories != null)
            {
                foreach (PluginConfigurationCategory subcategory in plugin.SubCategories)
                {
                    foreach (PluginConfiguration subConfig in subcategory.PluginConfigurations)
                    {
                        IClientPlugin cplugin = Plugins.Find(x => x.Title.ToUpper() == subConfig.Name.ToUpper());
                        if (cplugin != null)
                        {
                            plugin.Plugins.Add(cplugin);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Adds a plugin to the client.
        /// </summary>
        /// <param name="plugin">The plugin instance to add.</param>
        /// <remarks>
        /// Plugins enable developpers to plug custom code in the Stormancer client's extensibility points. Possible uses include: custom high level protocols, logger or analyzers.
        /// 
        /// </remarks>
        void AddPlugin(IClientPlugin plugin)
        {

            Plugins.Add(plugin);
        }
 public SendDataInfo(IClientPlugin plugin, EventData data)
 {
     Plugin = plugin;
     Data   = data;
 }