diff --git a/Components/Components.sln b/Components/Components.sln index b4ba791..c2f1c08 100644 --- a/Components/Components.sln +++ b/Components/Components.sln @@ -7,13 +7,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Components", "Components\Co EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinForms", "WinForms\WinForms.csproj", "{A961BB11-3AD9-4687-B338-FCDD7887E758}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DataModels", "DataModels\DataModels.csproj", "{E47EA28F-3148-4A37-BACE-35F70E297E9F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataModels", "DataModels\DataModels.csproj", "{E47EA28F-3148-4A37-BACE-35F70E297E9F}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Contracts", "Contracts\Contracts.csproj", "{4BA581C3-3921-4086-A41F-C507ADD258B9}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Contracts", "Contracts\Contracts.csproj", "{4BA581C3-3921-4086-A41F-C507ADD258B9}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DatabaseImplement", "DatabaseImplement\DatabaseImplement.csproj", "{4007A4AB-770E-4E72-8337-BC342A8C09BD}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DatabaseImplement", "DatabaseImplement\DatabaseImplement.csproj", "{4007A4AB-770E-4E72-8337-BC342A8C09BD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BusinessLogics", "BusinessLogics\BusinessLogics.csproj", "{324D5883-FDDE-46D1-ADF0-31D46EF95AFF}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BusinessLogics", "BusinessLogics\BusinessLogics.csproj", "{324D5883-FDDE-46D1-ADF0-31D46EF95AFF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Plugins", "Plugins\Plugins.csproj", "{C8AE2AD4-952F-4D20-B15B-F329B30CE0FC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsPlugins", "WinFormsPlugins\WinFormsPlugins.csproj", "{10BD4FBA-80C9-4B31-BE68-5A2F128F5289}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -45,6 +49,14 @@ Global {324D5883-FDDE-46D1-ADF0-31D46EF95AFF}.Debug|Any CPU.Build.0 = Debug|Any CPU {324D5883-FDDE-46D1-ADF0-31D46EF95AFF}.Release|Any CPU.ActiveCfg = Release|Any CPU {324D5883-FDDE-46D1-ADF0-31D46EF95AFF}.Release|Any CPU.Build.0 = Release|Any CPU + {C8AE2AD4-952F-4D20-B15B-F329B30CE0FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C8AE2AD4-952F-4D20-B15B-F329B30CE0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C8AE2AD4-952F-4D20-B15B-F329B30CE0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C8AE2AD4-952F-4D20-B15B-F329B30CE0FC}.Release|Any CPU.Build.0 = Release|Any CPU + {10BD4FBA-80C9-4B31-BE68-5A2F128F5289}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {10BD4FBA-80C9-4B31-BE68-5A2F128F5289}.Debug|Any CPU.Build.0 = Debug|Any CPU + {10BD4FBA-80C9-4B31-BE68-5A2F128F5289}.Release|Any CPU.ActiveCfg = Release|Any CPU + {10BD4FBA-80C9-4B31-BE68-5A2F128F5289}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Components/Plugins/IPluginsConvention.cs b/Components/Plugins/IPluginsConvention.cs new file mode 100644 index 0000000..25f638a --- /dev/null +++ b/Components/Plugins/IPluginsConvention.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Plugins +{ + /// + /// Интерфейс-соглашение для плагинов + /// + public interface IPluginsConvention + { + /// + /// Название плагина + /// + string PluginName { get; } + + /// + /// Получение контрола для вывода набора данных + /// + UserControl GetControl { get; } + + /// + /// Получение элемента, выбранного в контроле + /// + PluginsConventionElement GetElement { get; } + + /// + /// Получение формы для создания/редактирования объекта + /// + /// + /// + Form GetForm(PluginsConventionElement element); + + /// + /// Получение формы для работы со справочником + /// + /// + Form GetThesaurus(); + + /// + /// Удаление элемента + /// + /// + /// + bool DeleteElement(PluginsConventionElement element); + + /// + /// Обновление набора данных в контроле + /// + void ReloadData(); + + /// + /// Создание простого документа + /// + /// + /// + bool CreateSimpleDocument(PluginsConventionSaveDocument saveDocument); + + /// + /// Создание документа с настраиваемой таблицей + /// + /// + /// + bool CreateTableDocument(PluginsConventionSaveDocument saveDocument); + + /// + /// Создание документа с диаграммой + /// + /// + /// + bool CreateChartDocument(PluginsConventionSaveDocument saveDocument); + } +} diff --git a/Components/Plugins/Plugins.csproj b/Components/Plugins/Plugins.csproj new file mode 100644 index 0000000..060aa1c --- /dev/null +++ b/Components/Plugins/Plugins.csproj @@ -0,0 +1,10 @@ + + + + net6.0-windows + enable + true + enable + + + diff --git a/Components/Plugins/PluginsConventionElement.cs b/Components/Plugins/PluginsConventionElement.cs new file mode 100644 index 0000000..51f0916 --- /dev/null +++ b/Components/Plugins/PluginsConventionElement.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Plugins +{ + /// + /// Класс для передачи объекта на форму и удаления + /// + public class PluginsConventionElement + { + /// + /// Глобальный уникальный идентификатор + /// + public Guid Id { get; set; } + } +} diff --git a/Components/Plugins/PluginsConventionSaveDocument.cs b/Components/Plugins/PluginsConventionSaveDocument.cs new file mode 100644 index 0000000..e9c00e7 --- /dev/null +++ b/Components/Plugins/PluginsConventionSaveDocument.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Plugins +{ + /// + /// Класс для передачи данных в методы создания документов + /// + public class PluginsConventionSaveDocument + { + /// + /// Путь к файлу + /// + public string FileName { get; set; } = string.Empty; + } +} diff --git a/Components/WinForms/PluginsConvention.cs b/Components/WinForms/PluginsConvention.cs new file mode 100644 index 0000000..14d9475 --- /dev/null +++ b/Components/WinForms/PluginsConvention.cs @@ -0,0 +1,335 @@ +using BusinessLogics.BusinessLogics; +using Components.NonVisualComponents; +using ComponentsLibrary.NonVisualComponents.HelperModels; +using ComponentsLibrary.NonVisualComponents; +using ComponentsLibrary.VisualComponents; +using ComponentsLibraryNet60.DocumentWithTable; +using ComponentsLibraryNet60.Models; +using Contracts.BindingModels; +using Contracts.BusinessLogicsContracts; +using Contracts.ViewModels; +using DatabaseImplement.Implements; +using Microsoft.Extensions.Logging; +using Plugins; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NLog.Extensions.Logging; + +namespace WinForms +{ + /// + /// Реализация интерфейса-соглашения для плагинов + /// + public class PluginsConvention : IPluginsConvention + { + /// + /// Название плагина + /// + public string PluginName => "Orders"; + + /// + /// Визуальный компонент для вывода списка в виде дерева + /// + private readonly UserTreeView _userTreeView; + + /// + /// Бизнес-логика для сущности "Счет" + /// + private readonly IOrderLogic _orderLogic; + + /// + /// Бизнес-логика для сущности "Тип заказа" + /// + private readonly IOrderTypeLogic _orderTypeLogic; + + /// + /// Конструктор + /// + public PluginsConvention() + { + _userTreeView = new UserTreeView(); + var hierarchy = new List() + { + "Type", + "Sum", + "Id", + "WaiterFullName" + }; + _userTreeView.SetHierarchy(hierarchy); + + var loggerFactory = LoggerFactory.Create(builder => builder.AddNLog()); + var orderLogicLogger = loggerFactory.CreateLogger(); + var orderTypeLogicLogger = loggerFactory.CreateLogger(); + + _orderLogic = new OrderLogic(orderLogicLogger, new OrderStorage()); + _orderTypeLogic = new OrderTypeLogic(orderTypeLogicLogger, new OrderTypeStorage()); + } + + /// + /// Получение контрола для вывода набора данных + /// + public UserControl GetControl + { + get + { + ReloadData(); + return _userTreeView; + } + } + + /// + /// Получение элемента, выбранного в контроле + /// + public PluginsConventionElement GetElement + { + get + { + var order = _userTreeView.GetSelectedObject(); + int id = -1; + if (order != null) + { + id = order.Id; + } + + byte[] bytes = new byte[16]; + BitConverter.GetBytes(id).CopyTo(bytes, 0); + return new PluginsConventionElement { Id = new Guid(bytes) }; + } + } + + /// + /// Получение формы для создания/редактирования объекта + /// + /// + /// + public Form GetForm(PluginsConventionElement element) + { + if (element == null) + { + return new FormOrder(_orderLogic, _orderTypeLogic); + } + + if (element.Id.GetHashCode() >= 0) + { + byte[] bytes = element.Id.ToByteArray(); + int Id = BitConverter.ToInt32(bytes, 0); + + var form = new FormOrder(_orderLogic, _orderTypeLogic); + form.Id = Id; + return form; + } + + return null; + } + + /// + /// Получение формы для работы со справочником + /// + /// + public Form GetThesaurus() + { + return new FormOrderTypes(_orderTypeLogic); + } + + /// + /// Удаление элемента + /// + /// + /// + public bool DeleteElement(PluginsConventionElement element) + { + if (MessageBox.Show("Удалить запись?", "Вопрос", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) + { + return false; + } + + byte[] bytes = element.Id.ToByteArray(); + int Id = BitConverter.ToInt32(bytes, 0); + + try + { + _orderLogic.Delete(new OrderBindingModel() { Id = Id }); + ReloadData(); + return true; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } + + /// + /// Обновление набора данных в контроле + /// + public void ReloadData() + { + try + { + var orders = _orderLogic.ReadList(null); + if (orders == null) + { + return; + } + + foreach (var order in orders) + { + if (string.IsNullOrEmpty(order.Sum)) + { + order.Sum = "По акции"; + } + + _userTreeView.AddObjectToTree(order); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + /// + /// Создание простого документа + /// + /// + /// + public bool CreateSimpleDocument(PluginsConventionSaveDocument saveDocument) + { + try + { + var orders = _orderLogic.ReadList(null); + if (orders == null) + { + return false; + } + + string title = "Информация по аукционным счетам."; + + List rows = new List(); + foreach (var order in orders) + { + if (string.IsNullOrEmpty(order.Sum)) + { + string row = $"ФИО официанта: {order.WaiterFullName} -- Описание счета: {order.Info}"; + rows.Add(row); + } + } + string[] rowsArray = rows.ToArray(); + + var bigTextComponent = new BigTextComponent(); + bigTextComponent.CreateDocument(saveDocument.FileName, title, rowsArray); + + return true; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } + + /// + /// Создание документа с настраиваемой таблицей + /// + /// + /// + public bool CreateTableDocument(PluginsConventionSaveDocument saveDocument) + { + try + { + var orders = _orderLogic.ReadList(null); + if (orders == null) + { + return false; + } + + foreach (var order in orders) + { + if (string.IsNullOrEmpty(order.Sum)) + { + order.Sum = "По акции"; + } + } + + var componentDocumentWithTableMultiHeaderWord = new ComponentDocumentWithTableMultiHeaderWord(); + componentDocumentWithTableMultiHeaderWord.CreateDoc(new ComponentDocumentWithTableHeaderDataConfig + { + FilePath = saveDocument.FileName, + Header = "Информация по счетам.", + ColumnsRowsWidth = new List<(int Column, int Row)>() + { + (5, 5), + (10, 5), + (15, 0), + (15, 0), + }, + Headers = new List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)>() + { + (0, 0, "Id", "Id"), + (1, 0, "ФИО официанта", "WaiterFullName"), + (2, 0, "Тип заказа", "Type"), + (3, 0, "Сумма заказа", "Sum") + }, + Data = orders, + }); + + return true; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } + + /// + /// Создание документа с диаграммой + /// + /// + /// + public bool CreateChartDocument(PluginsConventionSaveDocument saveDocument) + { + try + { + var orders = _orderLogic.ReadList(null); + if (orders == null) + { + return false; + } + + var orderTypes = _orderTypeLogic.ReadList(null); + if (orderTypes == null) + { + return false; + } + + List<(double, string)> items = new List<(double, string)>(); + foreach (var orderType in orderTypes) + { + int count = 0; + foreach (var order in orders) + { + if (order.Type == orderType.Name && string.IsNullOrEmpty(order.Sum)) + { + count++; + } + } + items.Add((count, orderType.Name)); + } + + var pdfPieChart = new PdfPieChart(); + pdfPieChart.CreatePieChart(new DataForPieChart(saveDocument.FileName, "Информация по оплаченным счетам каждого типа заказов", "Круговая диаграмма", DiagramLegendEnum.Top, "Типы заказов", items)); + + return true; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + } + } +} diff --git a/Components/WinForms/Program.cs b/Components/WinForms/Program.cs index e5134f2..e33e50c 100644 --- a/Components/WinForms/Program.cs +++ b/Components/WinForms/Program.cs @@ -5,6 +5,7 @@ using DatabaseImplement.Implements; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; +using Plugins; using System; namespace WinForms diff --git a/Components/WinForms/WinForms.csproj b/Components/WinForms/WinForms.csproj index 84d8c55..27e0db1 100644 --- a/Components/WinForms/WinForms.csproj +++ b/Components/WinForms/WinForms.csproj @@ -35,6 +35,7 @@ + diff --git a/Components/WinFormsPlugins/FormMain.Designer.cs b/Components/WinFormsPlugins/FormMain.Designer.cs new file mode 100644 index 0000000..0bb4e1c --- /dev/null +++ b/Components/WinFormsPlugins/FormMain.Designer.cs @@ -0,0 +1,184 @@ +namespace WinFormsPlugins +{ + partial class FormMain + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.menuStrip = new System.Windows.Forms.MenuStrip(); + this.ControlsStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ActionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.DocsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.SimpleDocToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.TableDocToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ChartDocToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.panelControl = new System.Windows.Forms.Panel(); + this.ThesaurusToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.AddElementToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.UpdElementToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.DelElementToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.menuStrip.SuspendLayout(); + this.SuspendLayout(); + // + // menuStrip + // + this.menuStrip.Items.AddRange(new + System.Windows.Forms.ToolStripItem[] { + this.ControlsStripMenuItem, + this.ActionsToolStripMenuItem, + this.DocsToolStripMenuItem}); + this.menuStrip.Location = new System.Drawing.Point(0, 0); + this.menuStrip.Name = "menuStrip"; + this.menuStrip.Size = new System.Drawing.Size(800, 24); + this.menuStrip.TabIndex = 0; + this.menuStrip.Text = "Меню"; + // + // ControlsStripMenuItem + // + this.ControlsStripMenuItem.Name = "ControlsStripMenuItem"; + this.ControlsStripMenuItem.Size = new System.Drawing.Size(94, 20); + this.ControlsStripMenuItem.Text = "Компоненты"; + // + // ActionsToolStripMenuItem + // + this.ActionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.ThesaurusToolStripMenuItem, + this.AddElementToolStripMenuItem, + this.UpdElementToolStripMenuItem, + this.DelElementToolStripMenuItem}); + this.ActionsToolStripMenuItem.Name = "ActionsToolStripMenuItem"; + this.ActionsToolStripMenuItem.Size = new System.Drawing.Size(70, 20); + this.ActionsToolStripMenuItem.Text = "Действия"; + // + // DocsToolStripMenuItem + // + this.DocsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.SimpleDocToolStripMenuItem, + this.TableDocToolStripMenuItem, + this.ChartDocToolStripMenuItem}); + this.DocsToolStripMenuItem.Name = "DocsToolStripMenuItem"; + this.DocsToolStripMenuItem.Size = new System.Drawing.Size(82, 20); + this.DocsToolStripMenuItem.Text = "Документы"; + // + // SimpleDocToolStripMenuItem + // + this.SimpleDocToolStripMenuItem.Name = "SimpleDocToolStripMenuItem"; + this.SimpleDocToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); + this.SimpleDocToolStripMenuItem.Size = new System.Drawing.Size(233, 22); + this.SimpleDocToolStripMenuItem.Text = "Простой документ"; + this.SimpleDocToolStripMenuItem.Click += new System.EventHandler(this.SimpleDocToolStripMenuItem_Click); + // + // TableDocToolStripMenuItem + // + this.TableDocToolStripMenuItem.Name = "TableDocToolStripMenuItem"; + this.TableDocToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.T))); + this.TableDocToolStripMenuItem.Size = new System.Drawing.Size(233, 22); + this.TableDocToolStripMenuItem.Text = "Документ с таблицей"; + this.TableDocToolStripMenuItem.Click += new System.EventHandler(this.TableDocToolStripMenuItem_Click); + // + // ChartDocToolStripMenuItem + // + this.ChartDocToolStripMenuItem.Name = "ChartDocToolStripMenuItem"; + this.ChartDocToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); + this.ChartDocToolStripMenuItem.Size = new System.Drawing.Size(233, 22); + this.ChartDocToolStripMenuItem.Text = "Диаграмма"; + this.ChartDocToolStripMenuItem.Click += new System.EventHandler(this.ChartDocToolStripMenuItem_Click); + // + // panelControl + // + this.panelControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.panelControl.Location = new System.Drawing.Point(0, 24); + this.panelControl.Name = "panelControl"; + this.panelControl.Size = new System.Drawing.Size(800, 426); + this.panelControl.TabIndex = 1; + // + // ThesaurusToolStripMenuItem + // + this.ThesaurusToolStripMenuItem.Name = "ThesaurusToolStripMenuItem"; + this.ThesaurusToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.I))); + this.ThesaurusToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.ThesaurusToolStripMenuItem.Text = "Справочник"; + this.ThesaurusToolStripMenuItem.Click += new System.EventHandler(this.ThesaurusToolStripMenuItem_Click); + // + // AddElementToolStripMenuItem + // + this.AddElementToolStripMenuItem.Name = "AddElementToolStripMenuItem"; + this.AddElementToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.A))); + this.AddElementToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.AddElementToolStripMenuItem.Text = "Добавить"; + this.AddElementToolStripMenuItem.Click += new System.EventHandler(this.AddElementToolStripMenuItem_Click); + // + // UpdElementToolStripMenuItem + // + this.UpdElementToolStripMenuItem.Name = "UpdElementToolStripMenuItem"; + this.UpdElementToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.U))); + this.UpdElementToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.UpdElementToolStripMenuItem.Text = "Изменить"; + this.UpdElementToolStripMenuItem.Click += new System.EventHandler(this.UpdElementToolStripMenuItem_Click); + // + // DelElementToolStripMenuItem + // + this.DelElementToolStripMenuItem.Name = "DelElementToolStripMenuItem"; + this.DelElementToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D))); + this.DelElementToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.DelElementToolStripMenuItem.Text = "Удалить"; + this.DelElementToolStripMenuItem.Click += new System.EventHandler(this.DelElementToolStripMenuItem_Click); + // + // FormMain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.panelControl); + this.Controls.Add(this.menuStrip); + this.MainMenuStrip = this.menuStrip; + this.Name = "FormMain"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Главная форма"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormMain_KeyDown); + this.menuStrip.ResumeLayout(false); + this.menuStrip.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + } + + #endregion + + private System.Windows.Forms.MenuStrip menuStrip; + private System.Windows.Forms.ToolStripMenuItem ControlsStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem DocsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem SimpleDocToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem TableDocToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem ChartDocToolStripMenuItem; + private System.Windows.Forms.Panel panelControl; + private System.Windows.Forms.ToolStripMenuItem ActionsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem ThesaurusToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem AddElementToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem UpdElementToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem DelElementToolStripMenuItem; + } +} diff --git a/Components/WinFormsPlugins/FormMain.cs b/Components/WinFormsPlugins/FormMain.cs new file mode 100644 index 0000000..a050d18 --- /dev/null +++ b/Components/WinFormsPlugins/FormMain.cs @@ -0,0 +1,309 @@ +using DocumentFormat.OpenXml.Office2010.CustomUI; +using Plugins; +using System.Reflection; + +namespace WinFormsPlugins +{ + /// + /// + /// + public partial class FormMain : Form + { + /// + /// + /// + private readonly Dictionary _plugins; + + /// + /// + /// + private string _selectedPlugin; + + /// + /// + /// + public FormMain() + { + InitializeComponent(); + + _plugins = LoadPlugins(); + _selectedPlugin = string.Empty; + } + + /// + /// + /// + /// + private Dictionary LoadPlugins() + { + var plugins = new Dictionary(); + string pluginsDir = Directory.GetParent(Directory.GetCurrentDirectory())! + .Parent!.Parent!.FullName + "\\plugins"; + string[] dllFiles = Directory.GetFiles(pluginsDir, "*.dll", SearchOption.AllDirectories); + + foreach (string dllFile in dllFiles) + { + try + { + Assembly assembly = Assembly.LoadFrom(dllFile); + Type[] types = assembly.GetTypes(); + + foreach (var type in types) + { + if (typeof(IPluginsConvention).IsAssignableFrom(type) && !type.IsInterface) + { + var plugin = (IPluginsConvention)Activator.CreateInstance(type)!; + plugins.Add(plugin.PluginName, plugin); + CreateToolStripMenuItem(plugin.PluginName); + } + } + } + catch (Exception ex) + { + // , , , , Exceptions, + // Unable to load one or more of the requested types + Console.WriteLine($" {dllFile}: {ex.Message}"); + } + } + + return plugins; + } + + /// + /// ToolStripMenuItem + /// + /// + private void CreateToolStripMenuItem(string pluginName) + { + var menuItem = new ToolStripMenuItem(pluginName); + menuItem.Click += (object? sender, EventArgs e) => + { + _selectedPlugin = pluginName; + IPluginsConvention plugin = _plugins![pluginName]; + UserControl userControl = plugin.GetControl; + if (userControl != null) + { + panelControl.Controls.Clear(); + plugin.ReloadData(); + userControl.Dock = DockStyle.Fill; + panelControl.Controls.Add(userControl); + } + }; + ControlsStripMenuItem.DropDownItems.Add(menuItem); + } + + /// + /// + /// + /// + /// + private void FormMain_KeyDown(object sender, KeyEventArgs e) + { + if (string.IsNullOrEmpty(_selectedPlugin) || !_plugins.ContainsKey(_selectedPlugin)) + { + return; + } + if (!e.Control) + { + return; + } + + switch (e.KeyCode) + { + case Keys.I: + ShowThesaurus(); + break; + case Keys.A: + AddNewElement(); + break; + case Keys.U: + UpdateElement(); + break; + case Keys.D: + DeleteElement(); + break; + case Keys.S: + CreateSimpleDoc(); + break; + case Keys.T: + CreateTableDoc(); + break; + case Keys.C: + CreateChartDoc(); + break; + } + } + + /// + /// + /// + private void ShowThesaurus() + { + _plugins[_selectedPlugin].GetThesaurus()?.Show(); + } + + /// + /// + /// + private void AddNewElement() + { + var form = _plugins[_selectedPlugin].GetForm(null); + if (form != null && form.ShowDialog() == DialogResult.OK) + { + _plugins[_selectedPlugin].ReloadData(); + } + } + + /// + /// + /// + private void UpdateElement() + { + var element = _plugins[_selectedPlugin].GetElement; + if (element == null) + { + MessageBox.Show(" !", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + var form = _plugins[_selectedPlugin].GetForm(element); + if (form != null && form.ShowDialog() == DialogResult.OK) + { + _plugins[_selectedPlugin].ReloadData(); + } + } + + /// + /// + /// + private void DeleteElement() + { + var element = _plugins[_selectedPlugin].GetElement; + if (element == null) + { + MessageBox.Show(" !", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + if (_plugins[_selectedPlugin].DeleteElement(element)) + { + _plugins[_selectedPlugin].ReloadData(); + } + } + + /// + /// + /// + private void CreateSimpleDoc() + { + using (var dialog = new SaveFileDialog { Filter = "xlsx|*.xlsx" }) + { + if (dialog.ShowDialog() == DialogResult.OK) + { + string fileName = dialog.FileName.ToString(); + if (_plugins[_selectedPlugin].CreateSimpleDocument(new PluginsConventionSaveDocument() { FileName = fileName })) + { + MessageBox.Show(" ", " ", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + + /// + /// + /// + private void CreateTableDoc() + { + using (var dialog = new SaveFileDialog { Filter = "docx|*.docx" }) + { + if (dialog.ShowDialog() == DialogResult.OK) + { + string fileName = dialog.FileName.ToString(); + if (_plugins[_selectedPlugin].CreateTableDocument(new PluginsConventionSaveDocument() { FileName = fileName })) + { + MessageBox.Show(" ", " ", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + + /// + /// + /// + private void CreateChartDoc() + { + using (var dialog = new SaveFileDialog { Filter = "pdf|*.pdf" }) + { + if (dialog.ShowDialog() == DialogResult.OK) + { + string fileName = dialog.FileName.ToString(); + if (_plugins[_selectedPlugin].CreateChartDocument(new PluginsConventionSaveDocument() { FileName = fileName })) + { + MessageBox.Show(" ", " ", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + + /// + /// + /// + /// + /// + private void ThesaurusToolStripMenuItem_Click(object sender, EventArgs e) => ShowThesaurus(); + + /// + /// + /// + /// + /// + private void AddElementToolStripMenuItem_Click(object sender, EventArgs e) => AddNewElement(); + + /// + /// + /// + /// + /// + private void UpdElementToolStripMenuItem_Click(object sender, EventArgs e) => UpdateElement(); + + /// + /// + /// + /// + /// + private void DelElementToolStripMenuItem_Click(object sender, EventArgs e) => DeleteElement(); + + /// + /// + /// + /// + /// + private void SimpleDocToolStripMenuItem_Click(object sender, EventArgs e) => CreateSimpleDoc(); + + /// + /// + /// + /// + /// + private void TableDocToolStripMenuItem_Click(object sender, EventArgs e) => CreateTableDoc(); + + /// + /// + /// + /// + /// + private void ChartDocToolStripMenuItem_Click(object sender, EventArgs e) => CreateChartDoc(); + } +} diff --git a/Components/WinFormsPlugins/FormMain.resx b/Components/WinFormsPlugins/FormMain.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/Components/WinFormsPlugins/FormMain.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Components/WinFormsPlugins/Program.cs b/Components/WinFormsPlugins/Program.cs new file mode 100644 index 0000000..d3428bc --- /dev/null +++ b/Components/WinFormsPlugins/Program.cs @@ -0,0 +1,61 @@ +using BusinessLogics.BusinessLogics; +using Contracts.BusinessLogicsContracts; +using Contracts.StoragesContracts; +using DatabaseImplement.Implements; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using NLog.Extensions.Logging; + +namespace WinFormsPlugins +{ + internal static class Program + { + /// + /// IoC- + /// + private static ServiceProvider? _serviceProvider; + + /// + /// IoC- + /// + public static ServiceProvider? ServiceProvider => _serviceProvider; + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + + var services = new ServiceCollection(); + ConfigureServices(services); + _serviceProvider = services.BuildServiceProvider(); + + Application.Run(new FormMain()); + } + + /// + /// + /// + /// + private static void ConfigureServices(ServiceCollection services) + { + // + services.AddLogging(option => + { + option.SetMinimumLevel(LogLevel.Information); + option.AddNLog("nlog.config"); + }); + + // IoC-, - + services.AddTransient(); + services.AddTransient(); + + // IoC-, + services.AddTransient(); + } + } +} \ No newline at end of file diff --git a/Components/WinFormsPlugins/WinFormsPlugins.csproj b/Components/WinFormsPlugins/WinFormsPlugins.csproj new file mode 100644 index 0000000..96ff438 --- /dev/null +++ b/Components/WinFormsPlugins/WinFormsPlugins.csproj @@ -0,0 +1,22 @@ + + + + WinExe + net6.0-windows + enable + true + enable + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Components/WinFormsPlugins/plugins/BusinessLogics.dll b/Components/WinFormsPlugins/plugins/BusinessLogics.dll new file mode 100644 index 0000000..e657ee2 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/BusinessLogics.dll differ diff --git a/Components/WinFormsPlugins/plugins/Components.dll b/Components/WinFormsPlugins/plugins/Components.dll new file mode 100644 index 0000000..8b024a4 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Components.dll differ diff --git a/Components/WinFormsPlugins/plugins/ComponentsLibrary.dll b/Components/WinFormsPlugins/plugins/ComponentsLibrary.dll new file mode 100644 index 0000000..0e1f9c7 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/ComponentsLibrary.dll differ diff --git a/Components/WinFormsPlugins/plugins/ComponentsLibraryNet60.dll b/Components/WinFormsPlugins/plugins/ComponentsLibraryNet60.dll new file mode 100644 index 0000000..9807306 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/ComponentsLibraryNet60.dll differ diff --git a/Components/WinFormsPlugins/plugins/Contracts.dll b/Components/WinFormsPlugins/plugins/Contracts.dll new file mode 100644 index 0000000..a2d3d98 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Contracts.dll differ diff --git a/Components/WinFormsPlugins/plugins/ControlsLibraryNet60.dll b/Components/WinFormsPlugins/plugins/ControlsLibraryNet60.dll new file mode 100644 index 0000000..3d14013 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/ControlsLibraryNet60.dll differ diff --git a/Components/WinFormsPlugins/plugins/DataModels.dll b/Components/WinFormsPlugins/plugins/DataModels.dll new file mode 100644 index 0000000..9f2852d Binary files /dev/null and b/Components/WinFormsPlugins/plugins/DataModels.dll differ diff --git a/Components/WinFormsPlugins/plugins/DatabaseImplement.dll b/Components/WinFormsPlugins/plugins/DatabaseImplement.dll new file mode 100644 index 0000000..8006218 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/DatabaseImplement.dll differ diff --git a/Components/WinFormsPlugins/plugins/DocumentFormat.OpenXml.dll b/Components/WinFormsPlugins/plugins/DocumentFormat.OpenXml.dll new file mode 100644 index 0000000..846973a Binary files /dev/null and b/Components/WinFormsPlugins/plugins/DocumentFormat.OpenXml.dll differ diff --git a/Components/WinFormsPlugins/plugins/Humanizer.dll b/Components/WinFormsPlugins/plugins/Humanizer.dll new file mode 100644 index 0000000..c9a7ef8 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Humanizer.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Abstractions.dll b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Abstractions.dll new file mode 100644 index 0000000..93f27f8 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Abstractions.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Design.dll b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Design.dll new file mode 100644 index 0000000..0f13dd2 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Design.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Relational.dll b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Relational.dll new file mode 100644 index 0000000..c96960d Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.Relational.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.dll b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.dll new file mode 100644 index 0000000..cbb4006 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.EntityFrameworkCore.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Caching.Abstractions.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Caching.Abstractions.dll new file mode 100644 index 0000000..be73869 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Caching.Abstractions.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Caching.Memory.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Caching.Memory.dll new file mode 100644 index 0000000..561804a Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Caching.Memory.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Configuration.Abstractions.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Configuration.Abstractions.dll new file mode 100644 index 0000000..335bb77 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Configuration.Abstractions.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Configuration.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Configuration.dll new file mode 100644 index 0000000..67d4dff Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Configuration.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll new file mode 100644 index 0000000..b6f0c27 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyInjection.Abstractions.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyInjection.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyInjection.dll new file mode 100644 index 0000000..7c11ac0 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyInjection.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyModel.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyModel.dll new file mode 100644 index 0000000..072af1f Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.DependencyModel.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Logging.Abstractions.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Logging.Abstractions.dll new file mode 100644 index 0000000..03edd8f Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Logging.Abstractions.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Logging.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Logging.dll new file mode 100644 index 0000000..c53f5d2 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Logging.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Options.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Options.dll new file mode 100644 index 0000000..3987d66 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Options.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Primitives.dll b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Primitives.dll new file mode 100644 index 0000000..bdad45f Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Extensions.Primitives.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Office.Interop.Excel.dll b/Components/WinFormsPlugins/plugins/Microsoft.Office.Interop.Excel.dll new file mode 100644 index 0000000..4ab081c Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Office.Interop.Excel.dll differ diff --git a/Components/WinFormsPlugins/plugins/Microsoft.Vbe.Interop.dll b/Components/WinFormsPlugins/plugins/Microsoft.Vbe.Interop.dll new file mode 100644 index 0000000..d8c4b64 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Microsoft.Vbe.Interop.dll differ diff --git a/Components/WinFormsPlugins/plugins/MigraDoc.DocumentObjectModel.dll b/Components/WinFormsPlugins/plugins/MigraDoc.DocumentObjectModel.dll new file mode 100644 index 0000000..4334467 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/MigraDoc.DocumentObjectModel.dll differ diff --git a/Components/WinFormsPlugins/plugins/MigraDoc.Rendering.dll b/Components/WinFormsPlugins/plugins/MigraDoc.Rendering.dll new file mode 100644 index 0000000..def985f Binary files /dev/null and b/Components/WinFormsPlugins/plugins/MigraDoc.Rendering.dll differ diff --git a/Components/WinFormsPlugins/plugins/MigraDoc.RtfRendering.dll b/Components/WinFormsPlugins/plugins/MigraDoc.RtfRendering.dll new file mode 100644 index 0000000..21748d4 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/MigraDoc.RtfRendering.dll differ diff --git a/Components/WinFormsPlugins/plugins/Mono.TextTemplating.dll b/Components/WinFormsPlugins/plugins/Mono.TextTemplating.dll new file mode 100644 index 0000000..d5a4b3c Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Mono.TextTemplating.dll differ diff --git a/Components/WinFormsPlugins/plugins/NLog.Extensions.Logging.dll b/Components/WinFormsPlugins/plugins/NLog.Extensions.Logging.dll new file mode 100644 index 0000000..5d68b5d Binary files /dev/null and b/Components/WinFormsPlugins/plugins/NLog.Extensions.Logging.dll differ diff --git a/Components/WinFormsPlugins/plugins/NLog.dll b/Components/WinFormsPlugins/plugins/NLog.dll new file mode 100644 index 0000000..49604e1 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/NLog.dll differ diff --git a/Components/WinFormsPlugins/plugins/Npgsql.EntityFrameworkCore.PostgreSQL.dll b/Components/WinFormsPlugins/plugins/Npgsql.EntityFrameworkCore.PostgreSQL.dll new file mode 100644 index 0000000..759014b Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Npgsql.EntityFrameworkCore.PostgreSQL.dll differ diff --git a/Components/WinFormsPlugins/plugins/Npgsql.dll b/Components/WinFormsPlugins/plugins/Npgsql.dll new file mode 100644 index 0000000..72d6732 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Npgsql.dll differ diff --git a/Components/WinFormsPlugins/plugins/Office.dll b/Components/WinFormsPlugins/plugins/Office.dll new file mode 100644 index 0000000..447c580 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/Office.dll differ diff --git a/Components/WinFormsPlugins/plugins/PdfSharp.Charting.dll b/Components/WinFormsPlugins/plugins/PdfSharp.Charting.dll new file mode 100644 index 0000000..5c61b17 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/PdfSharp.Charting.dll differ diff --git a/Components/WinFormsPlugins/plugins/PdfSharp.Quality.dll b/Components/WinFormsPlugins/plugins/PdfSharp.Quality.dll new file mode 100644 index 0000000..72e514c Binary files /dev/null and b/Components/WinFormsPlugins/plugins/PdfSharp.Quality.dll differ diff --git a/Components/WinFormsPlugins/plugins/PdfSharp.Snippets.dll b/Components/WinFormsPlugins/plugins/PdfSharp.Snippets.dll new file mode 100644 index 0000000..266cdad Binary files /dev/null and b/Components/WinFormsPlugins/plugins/PdfSharp.Snippets.dll differ diff --git a/Components/WinFormsPlugins/plugins/PdfSharp.System.dll b/Components/WinFormsPlugins/plugins/PdfSharp.System.dll new file mode 100644 index 0000000..e8dded5 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/PdfSharp.System.dll differ diff --git a/Components/WinFormsPlugins/plugins/PdfSharp.WPFonts.dll b/Components/WinFormsPlugins/plugins/PdfSharp.WPFonts.dll new file mode 100644 index 0000000..9a7c2ca Binary files /dev/null and b/Components/WinFormsPlugins/plugins/PdfSharp.WPFonts.dll differ diff --git a/Components/WinFormsPlugins/plugins/PdfSharp.dll b/Components/WinFormsPlugins/plugins/PdfSharp.dll new file mode 100644 index 0000000..61b8fde Binary files /dev/null and b/Components/WinFormsPlugins/plugins/PdfSharp.dll differ diff --git a/Components/WinFormsPlugins/plugins/System.Text.Encodings.Web.dll b/Components/WinFormsPlugins/plugins/System.Text.Encodings.Web.dll new file mode 100644 index 0000000..13a219a Binary files /dev/null and b/Components/WinFormsPlugins/plugins/System.Text.Encodings.Web.dll differ diff --git a/Components/WinFormsPlugins/plugins/System.Text.Json.dll b/Components/WinFormsPlugins/plugins/System.Text.Json.dll new file mode 100644 index 0000000..2078226 Binary files /dev/null and b/Components/WinFormsPlugins/plugins/System.Text.Json.dll differ diff --git a/Components/WinFormsPlugins/plugins/WinForms.dll b/Components/WinFormsPlugins/plugins/WinForms.dll new file mode 100644 index 0000000..3fe743d Binary files /dev/null and b/Components/WinFormsPlugins/plugins/WinForms.dll differ