Хост-плагины и субплагины: универсализация

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Хост-плагины и субплагины: универсализация

Post by HaRT »

John Doe wrote:
  • Допустим есть штук 10 с0-плагинов. Каждый из них по разу дёрнет все файлы на панели. Представляю тормоза.
  • Допустим, в каждом можно сделать ограничение по маске. Значит каждый из них должен иметь свой диалог настройки.
  • Очевидно, что 10 плагинов нам одновременно не нужны, и более того, плагины типа md5_c0 будут неслабо тормозить.
    Значит надо какой-то удобный способ как-то динамически активировать/дезактивировать плагины.
  • Отдельную информацию удобно видеть в нескольких разных колонках, а некоторую наоборот - в одной колонке.
    Причём иногда в одной колонке хотелось бы видеть информацию от разных плагинов, по шаблону.
Без всего этого пользоваться с0-плагинами будет неудобно. Но и пихать все эти настройки в фар тоже не годится.
В этом свете мысль Maximus5 о хост-плагине и субплагинах мне представляется наиболее правильным архитектурным решением.

Пример такого подхода можно увидеть в плагине PictureView 2 mod.
Применительно к с0-хост-плагину это означало бы следующее: для всех настроек всех субплагинов было бы одно место, откуда можно было бы рулить и масками, и шаблонами, и отображаемыми колонками, и остальными настройками.

А остальных настроек предвидится тоже немало, учитывая необходимость многопоточности, кэширования данных, не говоря уже о (потенциальных) настройках QView.
Было бы здорово, если бы API Фара для колоночных плагинов был таков, чтобы его (один и тот же) реализовывали и хост-плагин, и индивидуальные плагины. Тогда из них можно было бы строить иерархии без пересборки, просто конфигурированием.
Last edited by HaRT on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Тема отделена от "Универсальные Custom-колонки, предоставляемые плагинами"
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by John Doe »

HaRT wrote:Было бы здорово, если бы API Фара для колоночных плагинов был таков, чтобы его (один и тот же) реализовывали и хост-плагин, и индивидуальные плагины. Тогда из них можно было бы строить иерархии без пересборки, просто конфигурированием.
В простейшем случае API фара этому никак не мешает, информацию от разных плагинов он просто склеит в одну строку, или выведет в разные колонки (потенциально).
К сожалению это не позволит строить иерархии без пересборки, боюсь API фара вообще на это не расчитано. (Конечно возможны хаки, вспомним например Underscore).
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by HaRT »

John Doe wrote:
HaRT wrote:Было бы здорово, если бы API Фара для колоночных плагинов был таков, чтобы его (один и тот же) реализовывали и хост-плагин, и индивидуальные плагины. Тогда из них можно было бы строить иерархии без пересборки, просто конфигурированием.
боюсь API фара вообще на это не расчитано.
Ну может кто из уполномоченных изменять API ещё включится в дискуссию, пока оно всё на столь ранней стадии.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by Maximus5 »

развивая мысль о хост-плагине.
без пересборки можно было бы жить, если в апи фара будет возможность указать, что GetCustomDataW нужно дергать только для тех плагинов, у которых есть флаг (например) PF_CUSTOMCOLUMNHOST.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by HaRT »

Maximus5 wrote:развивая мысль о хост-плагине.
без пересборки можно было бы жить, если в апи фара будет возможность указать, что GetCustomDataW нужно дергать только для тех плагинов, у которых есть флаг (например) PF_CUSTOMCOLUMNHOST.
Зачем вносить в API Фара знание о каком-то там хост-плагине? Фар пусть дёргает у всех, кто готов информацию предоставить. А уж откуда они её возьмут — их личное дело: то ли вычитают из самого файла, то ли опросят под-модули (у которых какое-то другое расширение имени модуля, нежели DLL).
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by John Doe »

HaRT wrote:Зачем вносить в API Фара знание о каком-то там хост-плагине? Фар пусть дёргает у всех, кто готов информацию предоставить. А уж откуда они её возьмут — их личное дело: то ли вычитают из самого файла, то ли опросят под-модули (у которых какое-то другое расширение имени модуля, нежели DLL).
Для этого надо чтобы под-модули были специальным образом организованы, т.е. отличались бы или расширением, или API.
А Maximus5 предлагает намного более интересную и перспективную идею, которую можно использовать далеко не только для "колоночных" плагинов.
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by HaRT »

John Doe wrote:Для этого надо чтобы под-модули были специальным образом организованы
Да, именно это я и называю конфигурированием.
John Doe wrote:т.е. отличались бы или расширением, или API.
Расширением или местоположением — запросто. Лишь бы хост-плагин знал, где их найти. А вот API хорошо бы сделать таким, чтобы колоночный плагин можно было воткнуть хоть непосредственно в Фар, хоть в хост–переходник.
John Doe wrote:А Maximus5 предлагает намного более интересную и перспективную идею, которую можно использовать далеко не только для "колоночных" плагинов.
А вот я пока почему-то не вижу в ней ни интересности, ни перспективности. Кто бы объяснил?

И, повторюсь, не должен фар знать ни про какие сторонние хост-плагины. Это было бы признаком плохой архитектуры. Если нужно более подробное обоснование, оно потребует у меня некоторого труда.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by John Doe »

HaRT wrote:И, повторюсь, не должен фар знать ни про какие сторонние хост-плагины. Это было бы признаком плохой архитектуры. Если нужно более подробное обоснование, оно потребует у меня некоторого труда.
Как вижу я, со стороны пользователя.
Фар ничего особо не знает про хостплагины, но различает у всех плагинов особый флаг, при наличии которого не трогает плагин.
И вот этот вот флаг устанавливается не сам по себе, а хостплагином, который таким образом берёт плагин под своё крыло.

Поясню, что это даёт, для разнообразия на примере другой темы: HIGHLY EXPERIMENTAL. Меню выбора архивного плагина.
Имеем фар, настроенный, с несколькими архивными плагинами. При входе в архив (OpenFilePlugin) соответственно получаем меню.
Теперь просто добавляем в фар некий хостплагин, и он прозрачно для меня берёт на себя управление всеми остальными архивными плагинами, вызывая их, например, в зависимости от расширения файла.

В результате все архивные плагины становятся как-бы субплагинами, без какой-либо необходимости как-то переименовывать длл-ки: все действия производятся в диалоге конфигурации хост-плагина.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by Maximus5 »

Поясню, почему я про флаг начал.
Модуль, возвращающий (извлекающий) информацию сам по себе может быть полноценным фар-плагином (предоставляющим и другие функции).
Чтобы он мог полноценно пользоваться фар-апи (в частности ресурсами языковых файлов) его должен считать за плагин сам фар..
Сходу не скажу, но вроде если не считать ресурсов, других ограничениий вроде не будет (это если вместо dll им дать расширение module)
User avatar
HaRT
Moderator
Posts: 10822
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by HaRT »

Maximus5 wrote:Модуль, возвращающий (извлекающий) информацию сам по себе может быть полноценным фар-плагином (предоставляющим и другие функции).
Чтобы он мог полноценно пользоваться фар-апи (в частности ресурсами языковых файлов) его должен считать за плагин сам фар.
Важное соображение. Мне надо ещё подумать.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by John Doe »

Maximus5
Ну а что если действительно обобщить идею хостплагинов?
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by Maximus5 »

В смысле OpenFilePlugin (вход в архив) и plugin selection?
Мне пока не кажется такое возможным и рациональным.
Плагин может обрабатывать сотни расширений, которые могут меняться в процессе... пример - тот же picview.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by John Doe »

Maximus5 wrote:В смысле OpenFilePlugin (вход в архив) и plugin selection?
OpenFilePlugin - в первую очередь.
Maximus5 wrote:Мне пока не кажется такое возможным и рациональным.
Рациональность довольно детально изложена по ссылке выше (HIGHLY EXPERIMENTAL). Вкратце: ускорить "нюханье" файла и повысить гибкость выбора плагина.
На счёт возможности - чем это отличается от предложенного выше флага? Ну будет несколько подобных флагов.
Maximus5 wrote:Плагин может обрабатывать сотни расширений, которые могут меняться в процессе... пример - тот же picview.
PictureView - сам себе хост, о нём речь не идёт.
Под хостом были бы только те плагины, которые нужно.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Универсальные Custom-колонки, предоставляемые плагинами

Post by Maximus5 »

Вроде здраво. подумаю
Post Reply

Return to “Разработка плагинов”