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

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 string _selectedPlugin;
public FormMain()
private readonly Func<string, IPluginsConvention> _pluginsConventionFunc;
public FormMain(Func<string, IPluginsConvention> pluginsConventionFunc)
{
InitializeComponent();
_pluginsConventionFunc = pluginsConventionFunc;
_plugins = LoadPlugins();
_selectedPlugin = string.Empty;
}
private Dictionary<string, IPluginsConvention> LoadPlugins()
{
// TODO Заполнить IPluginsConvention
// TODO Заполнить пункт меню "Компоненты" на основе IPluginsConvention.PluginName
// TODO Например, создавать ToolStripMenuItem, привязывать к ним обработку событий и добавлять в menuStrip
Dictionary<string, IPluginsConvention> result = [];
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 этим контролом на всю площадь
// Пример: panelControl.Controls.Clear();
// panelControl.Controls.Add(ctrl);