FarNet — плагин для написания плагинов на .NET языках

Здесь можно обсудить ваш любимый плагин.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

Latest post of the previous page:

lordmuzer wrote:а ну. если не тяжело, то оки.
так я понял общее правило: если имена совпадают на панели, Select отмечает все, Unselect снимает со всех
Да. Ну и это в какой-то мере это отсутствие ИИ, любое другое решение было бы ИИ.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

lordmuzer
А ты просьбы формулируй подробнее, пожалуйста, договаривай все сразу, что знаешь: а то про IsAlignedExtensions не написал, что у меня в документации так и сказано "просите", про UnselectNames не написал, что SelectNames в Фарнете уже есть. Я ведь не помню Фарнет АПИ в деталях, когда пишу свои модули или ПШ скрипты, сам пользуюсь документацией, а не по памяти.
User avatar
lordmuzer
Posts: 533
Joined: Mon 12 Nov, 2007 22:05
Location: Киев
Has thanked: 20 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by lordmuzer »

хорошо)
прошу прощения. я тоже самое, пока пишу код, что нахожу оформляю.
dogwatch
Posts: 12
Joined: Thu 13 Oct, 2005 00:52

Re: FarNet — плагин для написания плагинов на .NET языках

Post by dogwatch »

а не подскажите что и куда нужно прописать в конфиг для использования сборок и dll-ок в модуле?

ps я бы предложил использовать для модулей свое собственное расширение файлов...
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

dogwatch wrote:а не подскажите что и куда нужно прописать в конфиг для использования сборок и dll-ок в модуле?

ps я бы предложил использовать для модулей свое собственное расширение файлов...
Может я не правильно понял суть проблемы, но тебе надо заюзать .cfg файл, об этом написано в Readme.txt, читал? Если да, и там нет ответа, уточни свой вопрос, пожалуйста.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания модулей на .NET языках

Post by NightRoman »

Вот пример .cfg файла из PowerShellFar. С этим файлом я теперь могу сколько угодно других dll иметь в папке, они не помешают.

Code: Select all

PowerShellFar.dll
PowerShellFar.Entry
Классы указываем либо все (модульные, конечно), либо ни одного. Ассембли файл модуля указываем первой строкой обязательно.
dogwatch
Posts: 12
Joined: Thu 13 Oct, 2005 00:52

Re: FarNet — плагин для написания модулей на .NET языках

Post by dogwatch »

NightRoman wrote:Вот пример .cfg файла из PowerShellFar. С этим файлом я теперь могу сколько угодно других dll иметь в папке, они не помешают.

Code: Select all

PowerShellFar.dll
PowerShellFar.Entry
Классы указываем либо все (модульные, конечно), либо ни одного. Ассембли файл модуля указываем первой строкой обязательно.
благодарю. ну а зачем такие сложности? в чем смысл так держаться за расширение .dll если модули можно использовать только под FarNet?
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

благодарю. ну а зачем такие сложности? в чем смысл так держаться за расширение .dll если модули можно использовать только под FarNet?
А в чем сложность-то? Для меня вот это проще, чем нестандартное расширение вводить. Прочий софт это расширение знать не знает и мне надо все под это настраивать. Вот это сложности, да.

А примитивный файл манифеста не только конкретно DLL указывает (которая и не в этой папке может быть, такой вариант расширением не решишь, не так ли?), но и четко говорит класс(ы) и тем самым позволяет оптимизировать загрузку, шерстить все классы в поисках нужных в большом модуле может быть и дорого.
dogwatch
Posts: 12
Joined: Thu 13 Oct, 2005 00:52

Re: FarNet — плагин для написания плагинов на .NET языках

Post by dogwatch »

я раньше в имени модуля использовал краткое описание из файла ресурсов. не подскажите как сейчас мне такое провернуть?

ps с английским у меня туго, поэтому доку я смотрел, а не читал ;)
User avatar
[e]Bu$ter
Posts: 792
Joined: Mon 30 May, 2005 23:05
Location: Беларусь, Минск
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by [e]Bu$ter »

dogwatch wrote:я раньше в имени модуля использовал краткое описание из файла ресурсов. не подскажите как сейчас мне такое провернуть?

ps с английским у меня туго, поэтому доку я смотрел, а не читал ;)
Обязательно нужно из ресурсов?
Если нет, то заведите в классе строковую константу, и используйте её:

Code: Select all

[ModuleTool(Name = Escape.Name, Options = ModuleToolOptions.Editor)]
public class Escape : ModuleTool
{
  public const string Name = "Escape selected text";

  public override void Invoke(object sender, ModuleToolEventArgs e)
  {
  ...
  }
}
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

dogwatch wrote:я раньше в имени модуля использовал краткое описание из файла ресурсов. не подскажите как сейчас мне такое провернуть?

ps с английским у меня туго, поэтому доку я смотрел, а не читал ;)
Вот с этим у нас небольшая регрессия. Пока никак или надо использовать ModuleHost и там регистрировать динамически (но такой сценарий только preloadable). Сейчас рекомендуется задать public const string Name где-нибудь и использовать ее и в атрибуте (с константой это можно) и в остальном коде.

Вопрос надо ли задавать это из файла ресурсов. И в старой и в новой версии Name используется в реестре для сохранения настроек. Если этот Name будет меняться в зависимости от языка или еще чего - это неправильно.

Ограничение в том, что пока не различается Name и то, что показывается в меню. Наверное, стоит это разделить. Думайте, предлагайте варианты. У меня нет use case под рукой, меня текущая реализация устраивает, потому мне сложней понять, как надо по-другому.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

В принципе в атрибутах можно договориться задавать идентификаторы из ресурсов, используя либо спецсимволы, синтаксис и т.п., либо специальный дополнительный параметр атрибута. Если ресурсы применяются файловые (.resources файлы, рекомендованные для модулей FarNet), а не вбитые в DLL, это совсем не сложно будет сделать. Теоретически пока рассуждаю.
dogwatch
Posts: 12
Joined: Thu 13 Oct, 2005 00:52

Re: FarNet — плагин для написания плагинов на .NET языках

Post by dogwatch »

[e]Bu$ter wrote:Обязательно нужно из ресурсов?
обязательно. описание должно быть на выбранном языке
NightRoman wrote: Вопрос надо ли задавать это из файла ресурсов. И в старой и в новой версии Name используется в реестре для сохранения настроек. Если этот Name будет меняться в зависимости от языка или еще чего - это неправильно.
нужно использовать guid атрибут для идентификации модулей, или сделать атрибут сборки с указанием guid-а
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

обязательно. описание должно быть на выбранном языке
с одной стороны да, с другой стороны для макросов тут может быть засада (но это отдельная тема)
в целом я согласен. хорошо, введу еще параметр атрибута Title. Name по любому должен быть константным, это нужно для ядра.
нужно использовать guid атрибут для идентификации модулей, или сделать атрибут сборки с указанием guid-а
непонятно зачем это нужно. если ты видишь, как это я должен реализовать и для чего, объясни понятно, пожалуйста.

я вот уже предложил вариант, чем он тебе не подходит? в атрибуте задаем ID строкового ресурса из .resources. Не гуид, а обычная строка, но это ID. в зависимости от текущего языка из ресурсов возьмется, что надо по этому ИД.
User avatar
NightRoman
Posts: 6184
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 32 times
Been thanked: 62 times
Contact:

Re: FarNet — плагин для написания плагинов на .NET языках

Post by NightRoman »

ты предлагаешь гуид для идентификации вместо Name? не надо нам это пока, нам надо вразумительное имя уникальное только среди операций внутри этого модуля. модуль - это уже namespace, вопрос, как его части называть внутри него. модуль может содержать сколько угодно разных операций. гуиды подойдут, конечно, но они мне не нравятся, плохо запоминаются, однако. внятные имена - куда лучше.
dogwatch
Posts: 12
Joined: Thu 13 Oct, 2005 00:52

Re: FarNet — плагин для написания плагинов на .NET языках

Post by dogwatch »

NightRoman wrote:ты предлагаешь гуид для идентификации вместо Name?
именно
NightRoman wrote:я вот уже предложил вариант, чем он тебе не подходит? в атрибуте задаем ID строкового ресурса из .resources. Не гуид, а обычная строка, но это ID. в зависимости от текущего языка из ресурсов возьмется, что надо по этому ИД.
я согласен на любое удобное вам решение
Post Reply

Return to “Обсуждение плагинов”