Настройка плагинов

Для подключения нового плагина необходимо сначала подключить интерфейс. Для этого выбираем вкладки:
«Меню» -> «Проект»->«Добавить ссылку…». И во вкладке «Обзор» выбираем файлы «Interop.mvMapLib.dll», «AxInterop.mvMapLib.dll», «Interfaces.dll».

Pl_1

Рисунок 1

Добавленные файлы отобразятся в окне «Обозреватель решений» в разделе «Ссылки».

Pl_2

Рисунок 2

В добавленных файлах необходимо выбрать значение «False» для действия «Копировать локально» (это избавит нас от лишнего «мусора» в папке Plugins).

Pl_3

Рисунок 3

Для кода плагина в первую очередь необходимо подготовить файл 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; } }