добавил загрузку плагинов

This commit is contained in:
bekodeg 2024-11-24 17:58:42 +04:00
parent 5ee30cdde5
commit a474bd8bbb

View File

@ -8,19 +8,32 @@ namespace Lab4.Forms
private readonly Dictionary<string, IPluginsConvention> _plugins; private readonly Dictionary<string, IPluginsConvention> _plugins;
private string _selectedPlugin; private string _selectedPlugin;
public FormMain() private readonly Func<string, IPluginsConvention> _pluginsConventionFunc;
public FormMain(Func<string, IPluginsConvention> pluginsConventionFunc)
{ {
InitializeComponent(); InitializeComponent();
_pluginsConventionFunc = pluginsConventionFunc;
_plugins = LoadPlugins(); _plugins = LoadPlugins();
_selectedPlugin = string.Empty; _selectedPlugin = string.Empty;
} }
private Dictionary<string, IPluginsConvention> LoadPlugins() private Dictionary<string, IPluginsConvention> LoadPlugins()
{ {
// TODO Заполнить IPluginsConvention Dictionary<string, IPluginsConvention> result = [];
// TODO Заполнить пункт меню "Компоненты" на основе IPluginsConvention.PluginName
// TODO Например, создавать ToolStripMenuItem, привязывать к ним обработку событий и добавлять в menuStrip List<string> keys = ["Успеваемость"];
result = keys.Select(k => KeyValuePair.Create(k, _pluginsConventionFunc(k))).ToDictionary();
foreach (string key in keys)
{
var item = new ToolStripMenuItem(key);
item.Click += (s, e) => _selectedPlugin = key;
ControlsStripMenuItem.Container!.Add(item);
}
// TODO При выборе пункта меню получать UserControl и заполнять элемент panelControl этим контролом на всю площадь // TODO При выборе пункта меню получать UserControl и заполнять элемент panelControl этим контролом на всю площадь
// Пример: panelControl.Controls.Clear(); // Пример: panelControl.Controls.Clear();
// panelControl.Controls.Add(ctrl); // panelControl.Controls.Add(ctrl);