public CalculatorViewModel(IMathRepository mathRepository, IResultRepository resultRepository, IDialogPlugin dialogPlugin, ILogger logger) { _mathRepository = mathRepository; _resultRepository = resultRepository; _dialogPlugin = dialogPlugin; _logger = logger; }
public bool StartPlugin(string name) { if (PluginContainers.ContainsKey(name)) { if (!PluginContainers[name].Plugin.Active) { var Plugin = PluginContainers[name].Plugin; if (Plugin is IDialogPlugin) { IDialogPlugin plugin = Plugin as IDialogPlugin; var item = new ToolStripMenuItem { Name = "ToolMenuItem_" + Plugin.PluginName, Text = plugin.ToolMenuTitle, Tag = plugin }; if (Plugin.MenuIcon != null) { item.Image = Plugin.MenuIcon; } item.Click += dialogPlugin_Click; ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_Tool"])).DropDownItems.Add(item); } if (Plugin is IDockPlugin) { IDockPlugin plugin = Plugin as IDockPlugin; DockContent dockContent = plugin.GetDockWindow() as DockContent; dockContent.HideOnClose = true; dockContent.Name = "DockWindow_" + Plugin.PluginName; var item = new ToolStripMenuItem { Name = "ViewMenuItem_" + Plugin.PluginName, Text = plugin.ViewMenuTitle, Tag = dockContent }; if (Plugin.MenuIcon != null) { item.Image = Plugin.MenuIcon; } item.Click += menuitem_Click; ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_View"])).DropDownItems.Add(item); Main.SubForms.Add(dockContent); } Plugin.Active = true; bool b = Plugin.StartPlugin(Main); if (b) { Utility.Logger.Add(2, string.Format("插件 {0}({1}) 已启动。", Plugin.PluginName, Plugin.Version)); } else { Utility.Logger.Add(2, string.Format("插件 {0}({1}) 启动失败。", Plugin.PluginName, Plugin.Version)); } return(b); } } return(false); }
public bool AddPlugin(ElectronicPlugin Plugin) { Plugins[Plugin.PluginName] = Plugin; if (Plugin is IDialogPlugin) { IDialogPlugin plugin = Plugin as IDialogPlugin; var item = new ToolStripMenuItem { Name = "ToolMenuItem_" + Plugin.PluginName, Text = plugin.ToolMenuTitle, Tag = plugin }; if (Plugin.MenuIcon != null) { item.Image = Plugin.MenuIcon; } item.Click += dialogPlugin_Click; ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_Tool"])).DropDownItems.Add(item); } if (Plugin is IDockPlugin) { IDockPlugin plugin = Plugin as IDockPlugin; DockContent dockContent = plugin.GetDockWindow() as DockContent; dockContent.HideOnClose = true; dockContent.Name = "DockWindow_" + Plugin.PluginName; var item = new ToolStripMenuItem { Name = "ViewMenuItem_" + Plugin.PluginName, Text = plugin.ViewMenuTitle, Tag = dockContent }; if (Plugin.MenuIcon != null) { item.Image = Plugin.MenuIcon; } item.Click += menuitem_Click; ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_View"])).DropDownItems.Add(item); Main.SubForms.Add(dockContent); } bool b = Plugin.StartPlugin(Main); if (b) { Utility.Logger.Add(2, string.Format("插件 {0}({1}) 已加载。", Plugin.PluginName, Plugin.Version)); } else { Utility.Logger.Add(2, string.Format("插件 {0}({1}) 加载失败。", Plugin.PluginName, Plugin.Version)); } return(b); }
public bool StopPlugin(string name) { if (PluginContainers.ContainsKey(name)) { if (PluginContainers[name].Plugin.Active) { var Plugin = PluginContainers[name].Plugin; if (Plugin is IDialogPlugin) { IDialogPlugin plugin = Plugin as IDialogPlugin; string ItemName = "ToolMenuItem_" + Plugin.PluginName; ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_Tool"])).DropDownItems.RemoveByKey(ItemName); } if (Plugin is IDockPlugin) { IDockPlugin plugin = Plugin as IDockPlugin; string ItemName = "ViewMenuItem_" + Plugin.PluginName; ((ToolStripMenuItem)(Main.MainMenuStrip.Items["StripMenu_View"])).DropDownItems.RemoveByKey(ItemName); Main.SubForms.ForEach(e => { if (e.Name == "DockWindow_" + Plugin.PluginName) { e.Close(); } }); Main.SubForms.RemoveAll(e => e.Name == "DockWindow_" + Plugin.PluginName); } Plugin.Active = false; bool b = Plugin.StopPlugin(); if (b) { Utility.Logger.Add(2, string.Format("插件 {0}({1}) 已停止。", Plugin.PluginName, Plugin.Version)); } else { Utility.Logger.Add(2, string.Format("插件 {0}({1}) 停止失败。", Plugin.PluginName, Plugin.Version)); } return(b); } } return(false); }