Статус: Administration Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member Зарегистрирован: 11.07.2008(UTC) Сообщений: 912 Сказал «Спасибо»: 640 раз Поблагодарили: 262 раз в 102 постах
|
Инструкция по написанию плагинов к SMath Studio Целью данной статьи является написание с нуля собственного плагина для программы SMath Studio Desktop для ОС Microsoft Windows, т.к. это требует наименьших усилий со стороны разработчика дополнений. В следующих статьях будет объяснено как планины могут быть написаны для Handheld версии программы под Windows Mobile и для Desktop версии под Linux. Для написания дополнений к программе SMath Studio необходимо иметь на компьютере установленным следующее программное обеспечение: Microsoft Visual Studio 2005 или Microsoft Visual Studio 2008; SMath Studio 0.85.3578 или более позднюю версию.
Для написания дополнений к программе SMath Studio разработчик должен владеть следующими навыками: Знание любого из .Net языков программирования, таких как C#, VB.Net, C++.Net и т.п.
Ниже представлен полный список шагов для написания своего дополнения к программе SMath Studio с нуля. Для демонстрации используется ОС Microsoft Windows Vista Ultimate Eng и IDE Microsoft Visual Studio Team System 2008 Eng. Исходный код в примерах написан с использованием языка C#.
- Откройте Visual Studio;
- Выберите пункт меню File, New, Project...
- В диалоговом окне выбора проекта используйте Windows, Class Library. Используйте .Net Framework 2.0. Задайте имя проекта и нажмите OK.
- В Visual Studio загрузится темплейт проекта, с которым и будет вестись дальнейшая работа.
- В фрейме Solution Explorer нажмите правой клавишей мыши по элементу дерева References и выберите Add Reference... из появившегося контекстного меню.
- В диалоге Add Reference перейдите на вкладку Browse, выберите папку, в которую Вы установили SMath Studio (по-умолчанию: C:\Program Files (x86)\SMath\SMath Studio) и при нажатой клавише Ctrl выберите файлы canvas.dll, ioman.dll, NuLib.dll и SyLib.dll. По окончании выбора файлов нажмите OK.
- После закрытия диалога Add Reference дерево в Solution Explorer будет обновлено и в папке References появятся требуемые элементы: canvas, ioman, NuLib, SyLib.
- Проделайте операцию по вызову диалога Add References ещё раз, для чего в фрейме Solution Explorer нажмите правой клавишей мыши по элементу дерева References и выберите Add Reference... из появившегося контекстного меню.
- В диалоге Add Reference перейдите на вкладку .NET и в списке пространств имён выберите System.Windows.Forms. Для подтверждения выбора нажмите OK.
- После закрытия диалога Add Reference дерево в Solution Explorer будет обновлено и в папке References появится элемент System.Windows.Forms.
- В редакторе кода Visual Studio подключите следующие пространства имён: SMath.Manager, SMath.Math.Numeric и SMath.Math.Symbolic. Наследуйте класс созданного проекта от интерфейса IPluginFunctionsExtension.
Код:using System;
using System.Collections.Generic;
using System.Text;
using SMath.Manager;
using SMath.Math.Numeric;
using SMath.Math.Symbolic;
namespace WowFunction
{
public class Class1 : IPluginFunctionsExtension
{
}
}
- Для реализации всех необходимых методов интерфейса, нажмите правой клавишей по имени интерфейса (IPluginFunctionsExtension) и в появившимся контекстном меню выбирите Implement Interface, Implement Interface.
- Все требуемые методы интерфейса IPluginFunctionsExtension будут автоматически сгенерированы IDE Visual Studio.
- Создайте локальные переменные для хранения свойств плагина.
Код: #region Private fields
private FunctionInfo[] availableFunctions;
private string name;
private Version version;
private string description;
private string author;
#endregion
- Присвойте значения локальным переменным в методе Initialize().
Код: public void Initialize()
{
this.name = "Wow function realization";
this.version = new Version(0, 1);
this.description = "Wow function plugin for SMath Studio. For test purposes only!";
this.author = "Andrey Ivashov (http://smath.info/)";
this.availableFunctions = new FunctionInfo[] {
new FunctionInfo("wow", 2, "wow('number';'number') - Returns something interesting.", FunctionSection.Unknown)
};
}
- Обработайте обязательное поле Author.
Код: public string Author
{
get { return this.author; }
}
- Обработайте обязательное поле Description.
Код: public string Description
{
get { return this.description; }
}
- Обработайте обязательное поле Name.
Код: public string Name
{
get { return this.name; }
}
- Обработайте обязательное поле Version.
Код: public Version Version
{
get { return this.version; }
}
- Обработайте обязательное поле GetAvailableFunctions.
Код: public FunctionInfo[] GetAvailableFunctions
{
get { return this.availableFunctions; }
}
- Обработайте обязательный метод Dispose().
Код: public void Dispose()
{
}
- Т.к. в данном примере не будет создаваться ни специальных функций, ни специальной отрисовки функций, просто верните в методах PrepareDrawing, ProceedDrawing и SpecialCalculation false.
Код: public bool PrepareDrawing(object control, int termIndex)
{
return false;
}
public bool ProceedDrawing(object control, System.Windows.Forms.PaintEventArgs e, int drawIndex, ref bool bracket)
{
return false;
}
public bool SpecialCalculation(string name, Term[][] args, ref Store store, ref Term[] result)
{
return false;
}
- Обработайте метод NumericCalculation.
Код: public bool NumericCalculation(string name, object[] args, ref object result)
{
if (name == "wow" && args.Length == 2)
{
TNumber
arg1 = (TNumber)args[0],
arg2 = (TNumber)args[1];
// calculates a^b (arg1^arg2)
result = arg1.Power(arg2);
}
else
return false;
return true;
}
- Обработайте метод AnaliticCalculation.
Код: public bool AnaliticCalculation(string name, object[] args, ref object result)
{
if (name == "wow" && args.Length == 2)
{
MItem
arg1 = (MItem)args[0],
arg2 = (MItem)args[1];
// calculates a^b (arg1^arg2)
result = arg1 ^ arg2;
}
else
return false;
return true;
}
- Соберите проект используя меню Build, Build Solution.
- Если сборка пройдёт успешно, в статус-строке окна IDE Visual Studio появится надпись Build succeeded.
- Перейдите в папку созданного проекта (в примере это Мои Документы\Visual Studio 2008\Projects\WowFunction\WowFunction) и в директории bin\Debug найдите файлы результата сборки (в примере это WowFunction.dll и WowFunction.pdb). Скопируйте эти файлы.
- Перейдите в папку установленной копии SMath Studio Desktop (в примере это C:\Program Files (x86)\SMath\SMath Studio) и вставьте скопированные файлы в директорию plugins.
- Теперь можно запустить программу SMath Studio Desktop щёлкнув двойным щелчком мыши по ярлыку программы на рабочем столе или в меню Все Программы.
- В меню Tools (Опции) выберите Plugins... для проверки успешного подключения созданного плагина.
- В диалоге Plugins, рядом со встроенным дополнением Special Functions, появится и только что созданный плагин (в примере это Wow function realization). После проверки закройте диалог.
- Попробуйте использовать реализованную функцию на листе программы численно и аналитически (символьно) просто записав имя функции с требуемым количеством параметров (в примере имя функции: "wow", а аргументов: 2).
- В более сложных реализациях функций, может потребоваться отладка, которую легко инициировать подключив IDE Visual Studio к процессу запущенной копии программы SMath Studio. Сделать это можно через меню Debug, Attach to Process...
- В появившемся диалоге Attach to Process найдите процесс с именем SMathStudio_Desktop.exe и нажмите кнопку Attach.
- Поставьте точку останова (Breakpoint) в интересующую Вас строчку щёлкнув левой клавишей мыши по левой от кода границе.
- Инициируйте вычисление функции в программе. Выполнение программы остановится на строчке, в которой установлена точка останова.
- После создания и отладки плагина необходимо подготовить его для последующего использования. Для этого дополнение надо собрать в режиме Release. Выберите пункт выпадающего списка Release в тулбаре IDE Visual Studio.
- Соберите проект используя меню Build, Build Solution.
- Перейдите в папку созданного проекта (в примере это Мои Документы\Visual Studio 2008\Projects\WowFunction\WowFunction) и в директории bin\Release найдите файл результата сборки (в примере это WowFunction.dll). Данный файл является готовым плагином к программе SMath Studio. Для его использования достаточно перед запуском программы SMath Studio скопировать его в директорию plugins установочной папки SMath Studio (обычно C:\Program Files (x86)\SMath\SMath Studio).
Отредактировано пользователем 21 октября 2009 г. 0:41:04(UTC)
| Причина: Не указана
|