GetPluginInfoW

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

GetPluginInfoW

Post by Shmuel »

Перечитывая описание GetPluginInfoW и PluginInfo пришёл к неутешительному выводу, что плагин не может иметь разное ненулевое число пунктов в меню плагинов панелей (например) с одной стороны и редактора (например) с другой, а только одинаковое, причём это будут одни и те же пункты. Это так, или я чего-то недопонимаю?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: GetPluginInfoW

Post by DrKnS »

Плагин может узнать, откуда именно его позвали, и заполнить PluginInfo как угодно.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: GetPluginInfoW

Post by Shmuel »

DrKnS wrote:Плагин может узнать, откуда именно его позвали, и заполнить PluginInfo как угодно.
Думал об этом, но это вроде нигде не гарантируется в документации. Или есть?

Update: сейчас попробовал, это не работает. Перед выводом меню плагинов, когда вызывается GetPluginInfoW, плагин получает MACROAREA_DIALOG: и в панелях, и в редакторе, и во вьювере.

Или надо узнавать более изощрённым способом, чем MCTL_GETAREA? Тогда подскажите, как это сделать.
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: GetPluginInfoW

Post by NightRoman »

В Фарнет проверяется тип текущего окна. Жаль, что АПИ не предоставляет эту информацию "легально", но это работает.
https://code.google.com/p/farnet/source ... n/Far0.cpp
Смотри там Far0::AsGetPluginInfo(). Это C++/CLI и многое обернуто в ф-ии, но принцип должен быть понятен.
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: GetPluginInfoW

Post by NightRoman »

Плагин должен быть всегда загружаемым, чтобы это работало, конечно. Но Фарнет таким и является. И он уже сам кеширует меню своих модулей по областям.
User avatar
Alexey Samlyukov
Posts: 1765
Joined: Tue 15 Mar, 2005 17:28
Been thanked: 7 times
Contact:

Re: GetPluginInfoW

Post by Alexey Samlyukov »

мне тоже как-то надо было узнать, что находится под диалогом, я предлагал расширить ACTL_GETWINDOWTYPE - возвращать инфо не только о текущем элементе, но и что под ним, если это диалог.
для этого можно было бы разрешить применять param1, куда например передавать индекс 1 для запроса элемента 1. индекс 0 - для текущего.
User avatar
John Doe
Бюрократ
Posts: 13864
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: GetPluginInfoW

Post by John Doe »

Shmuel wrote:сейчас попробовал, это не работает. Перед выводом меню плагинов, когда вызывается GetPluginInfoW, плагин получает MACROAREA_DIALOG: и в панелях, и в редакторе, и во вьювере.
А правильно ли это? Есть ли в этом смысл, можно ли извлечь какую-то пользу из такого значения?

Может быть стоит как-то поправить MCTL_GETAREA (например опрашивать плагины до создания меню)?
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: GetPluginInfoW

Post by Shmuel »

NightRoman wrote:В Фарнет проверяется тип текущего окна. Жаль, что АПИ не предоставляет эту информацию "легально", но это работает.
https://code.google.com/p/farnet/source ... n/Far0.cpp
Большое спасибо!
John Doe wrote:А правильно ли это?
Правильно ли, не знаю, но пользы от этого мало.
Post Reply

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