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); } } } } }
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; }