Для подключения нового плагина необходимо сначала подключить интерфейс. Для этого выбираем вкладки:
«Меню» -> «Проект»->«Добавить ссылку…». И во вкладке «Обзор» выбираем файлы «Interop.mvMapLib.dll», «AxInterop.mvMapLib.dll», «Interfaces.dll».
Добавленные файлы отобразятся в окне «Обозреватель решений» в разделе «Ссылки».
В добавленных файлах необходимо выбрать значение «False» для действия «Копировать локально» (это избавит нас от лишнего «мусора» в папке Plugins).
Для кода плагина в первую очередь необходимо подготовить файл AssemblyInfo.cs. Более подробное его описание будет дано в разделе «Настройки файла AssemblyInfo.cs».
Так как плагин должен содержать реализацию интерфейса «Interfaces.IMainPlugin», напишем минимально-допустимый код, который должен содержать плагин:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Interfaces;
using System.Xml.Linq;
using System.Reflection;
namespace NewPlugin
{
public class MainClass : Interfaces.IMainPlugin
{
#region Члены IMainPlugin
string Interfaces.IMainPlugin.Name
{
get { return AssemblyClass.GetName(Assembly.GetExecutingAssembly()); }
}
string Interfaces.IMainPlugin.GUID
{
get { return AssemblyClass.GetGuid(Assembly.GetExecutingAssembly()); }
}
public void StartPlugin(XElement XSettings, IMainApp app, IWorkClass work)
{
// Код Плагина
}
public Interfaces.Forms.IControlSettings SettingsForm
{
get { return null; }
}
#endregion
}
}
В свойстве SettingsForm мы возвращаем null, так как в нашем случае не нужно делать настройки для плагина.
Все настройки плагинов расположены в разделе «Инструменты»-> «Настройки…». Однако они требуются не каждому плагину.
Если есть необходимость в настройках, добавьте UserControl («Меню» -> «Проект» -> «Добавить пользовательский элемент управления...»). Назовём его «UCSettings.cs».
Для того чтобы работала наша форма с интерфейсом настроек, добавляем к классу UCSettings наследование интерфейса Interfaces.Forms.IControlSettings .
Полный пример кода для плагина:
using System.Windows.Forms;
using System.Xml.Linq;
namespace NewPlugin
{
public partial class UCSettings : UserControl, Interfaces.Forms.IControlSettings
{
private XElement _data;
public UCSettings()
{
InitializeComponent();
}
public bool LoadSettings(XElement data)
{
_data = data;
// функция загрузки плагина
return true;
}
public bool SaveSettings()
{
// проверочный код на сохранение результатов
//Сохранение, изменения переменной _data сохраняются в файле settings.riws
return true;
}
}
}
А также необходимо его передать свойству SettingsForm в классе MainClass.
Перепишем это свойство:
private Interfaces.Forms.IControlSettings _controlSettings;
public Interfaces.Forms.IControlSettings SettingsForm
{
get
{
if (_controlSettings == null)
_controlSettings = new UCSettings();
return _controlSettings;
}
}
Свежие комментарии