View Issue Details

IDProjectCategoryView StatusLast Update
0001914Far ManagerPlugins APIpublic2012-01-29 14:00
Reportermax rusovAssigned ToDrKnS 
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionfixed 
Product Version3.0 
Target VersionFixed in Version3.0 
Summary0001914: Расширение PluginsControl - получение информации о плагинах
DescriptionПредлагаю добавить в PluginControl следующие команды:

1. PCTL_GETPLUGINS - Получение общей информации о плагинах. Пока - только количество. Param2 - указывает на FarPlugins.

2. PCTL_GETPLUGININFO - Получение информации о плагине по номеру. Param1 - номер плагина, Param2 - указывает на структуру FarGetPluginInfo. Под структуру требуется аллоцировать память, требуемый объем можно узнать вызывая PCTL_GETPLUGININFO c Param2 = null. Можно предварительно выделить буфер некоторого размера и вызвать команду указав размер буфера. Если его достаточно, то команда отработает, если нет - вернет требуемый размер. Вообщем - все как в FCTL_GETPANELITEM

3. PCTL_FINDPLUGIN - Получить индекс плагина по GUID или ModuleName. Param1 - FAR_PLUGIN_FIND_MODE, Param2 - ссылка на то по чему ищем.

Diff прилагается.

PS1.

Не до конца уверен что удачно описал структуру FarGetPluginInfo:

struct FarGetPluginInfo
{
    size_t Size;
    const wchar_t *ModuleName;
    FAR_PLUGIN_FLAGS Flags;
    struct GlobalInfo Info1;
    struct PluginInfo Info2;
};

Если есть предложения лучше - выслушаю.

PS2.

Давно не писал на C++, просьба сильно не пинать если что-то сделал неоптимально.
TagsNo tags attached.
Build2415

Activities

max rusov

2011-10-22 23:32

reporter  

PluginControl1.diff (7,890 bytes)
PluginControl1.diff (7,890 bytes)

zg

2011-10-24 00:31

developer   bugnote:0007956

правильно ли я понимаю, что эта функциональность для реализации PlugMenu, а плагины планируется вызывать через макрос с Plugin.Call?

max rusov

2011-10-24 02:38

reporter   bugnote:0007957

Да, для PlugMenu, или аналогичных плагинов. Для вызова я хотел бы еще добавить PCTL_PLUGINCALL, когда будет принят http://bugs.farmanager.com/view.php?id=1903. Там, вроде, уже есть все необходимое (CallPluginItem)...

max rusov

2011-10-30 23:05

reporter   bugnote:0007964

Ну, что, правки будем принимать? PlugMenu уже работает...

DrKnS

2011-10-31 11:42

administrator   bugnote:0007965

+ if ((Info) && (Info->StructSize == sizeof(FarPlugins)))

тут, наверное, >= ?


+ FPF_FAR2 = 0x0000000000000002ULL,

зачем?

max rusov

2011-10-31 12:13

reporter   bugnote:0007966

Last edited: 2011-10-31 12:13

View 2 revisions

> + if ((Info) && (Info->StructSize == sizeof(FarPlugins)))
> тут, наверное, >= ?

Вообще-то нет. Как я понимаю смысл StructSize, в будущих версиях API могут добавляться новые поля, про которые старые плагины не знают. Поэтому FAR будет контролировать StructSize, чтобы не затереть старым плагинам стек. Поэтому тут в будущем может быть что-то типа:

(Info->StructSize == sizeofFarPluginsVer1)||(Info->StructSize == sizeofFarPluginsVer2)||(Info->StructSize == sizeof(FarPlugins))

> + FPF_FAR2 = 0x0000000000000002ULL,
> зачем?

На всякий случай. Вдруг Wrapper для Far2 плагинов включат в ядро

max rusov

2011-12-22 13:37

reporter   bugnote:0008184

Up. Раз уже сборки есть - хотелось бы применить патч.

SUSim

2012-01-07 17:09

reporter   bugnote:0008320

+1 вроде понятный патч(скорее аддон)и ничему не мешает... или у Фартим по этому поводу более продвинутая стратегия?

fibre

2012-01-08 02:15

reporter   bugnote:0008324

+1
(за плагин PlugMenu).

Denis

2012-01-08 14:05

reporter   bugnote:0008325

+1

daf

2012-01-10 15:32

reporter   bugnote:0008339

+1

DrKnS

2012-01-26 21:17

administrator   bugnote:0008483

С некоторыми уточнениями - 2415

max rusov

2012-01-29 03:02

reporter   bugnote:0008500

Ok. Переделал PlugMenu под новое API, вроде все работает. Можно закрывать.

Issue History

Date Modified Username Field Change
2011-10-22 23:32 max rusov New Issue
2011-10-22 23:32 max rusov File Added: PluginControl1.diff
2011-10-24 00:31 zg Note Added: 0007956
2011-10-24 02:38 max rusov Note Added: 0007957
2011-10-30 23:05 max rusov Note Added: 0007964
2011-10-31 11:42 DrKnS Note Added: 0007965
2011-10-31 12:13 max rusov Note Added: 0007966
2011-10-31 12:13 max rusov Note Edited: 0007966 View Revisions
2011-12-22 13:37 max rusov Note Added: 0008184
2012-01-07 17:09 SUSim Note Added: 0008320
2012-01-08 02:15 fibre Note Added: 0008324
2012-01-08 14:05 Denis Note Added: 0008325
2012-01-10 15:32 daf Note Added: 0008339
2012-01-26 21:17 DrKnS Note Added: 0008483
2012-01-26 21:17 DrKnS Assigned To => DrKnS
2012-01-26 21:17 DrKnS Status new => feedback
2012-01-29 03:02 max rusov Note Added: 0008500
2012-01-29 03:02 max rusov Status feedback => assigned
2012-01-29 14:00 DrKnS Build => 2415
2012-01-29 14:00 DrKnS Status assigned => closed
2012-01-29 14:00 DrKnS Resolution open => fixed
2012-01-29 14:00 DrKnS Fixed in Version => 3.0