Page 1 of 2

panel API: использование PANEL_ACTIVE/PANEL_PASSIVE в первом аргументе

Posted: Sun 16 Feb, 2014 20:44
by John Doe
\luafar_manual.chm::/252.html wrote:item = panel.GetCurrentPanelItem ([handle], whatpanel)

Parameters:
handle: panel handle, or nil
whatpanel: 1=active panel; 0=passive panel;
Из мануала следует что первый параметр можно вообще опускать.
Однако в этом случае происходит странное:
panel.GetCurrentPanelItem(1) возвращает nil
panel.GetCurrentPanelItem(0) - элемент активной панели
panel.GetCurrentPanelItem(-1) - элемент активной панели
panel.GetCurrentPanelItem(-2) - элемент пассивной панели

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Sun 16 Feb, 2014 21:47
by Shmuel
John Doe wrote:Из мануала следует что первый параметр можно вообще опускать.
Опускать нельзя. Квадратные скобки, обозначающие опциональность, убраны (они обозначали, что можно nil передавать).

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Sun 16 Feb, 2014 23:56
by John Doe
Но ведь почти работало :-)

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Wed 04 Jun, 2014 11:55
by John Doe
В функциях работающих с панелями можно указать описатель и 0/1 для пассивной/активной панели.
Проверил, и убедился что константы far.Flags.PANEL_ACTIVE/PASSIVE работают и в качестве описателей (первый параметр), и как константы (второй параметр).

panel.SetViewMode (nil, far.Flags.PANEL_ACTIVE, mode)
panel.SetViewMode (far.Flags.PANEL_ACTIVE, nil, mode)
Оба варианта похоже равнозначны.

Вопрос: являются ли оба случая штатными и поддерживаемыми, не смотря на отсутствие информации об этом в документации?
Или стоит предпочесть один из вариантов?
Или оба нежелательны?

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Wed 04 Jun, 2014 12:17
by zg
John Doe wrote:panel.SetViewMode (nil, far.Flags.PANEL_ACTIVE, mode)
так нельзя. по документации там 0/1. PANEL_ACTIVE/PANEL_PASSIVE — -1/-2. сейчас работает исключительно потому что повезло. в будущем может перестать везти.

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 18:24
by John Doe
panel.ClosePanel: в отличии от других панельных функций нет параметра чтобы выбрать между активной/пассивной панелью

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 19:04
by zg
John Doe wrote:panel.ClosePanel: в отличии от других панельных функций нет параметра чтобы выбрать между активной/пассивной панелью
а зачем?

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 19:22
by John Doe
Понадобилось в одном скрипте.
Там есть отдельные хоткеи для работы с активной/пассивной панелью, и для симметрии желательно и panel.ClosePanel.

Пока что передаю в качестве handle -2, тогда работает с пассивной.

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 19:25
by zg
John Doe wrote:Понадобилось в одном скрипте.
ClosePanel актуальна только для плагиновых панелей, которые в свою очередь идентифицируются хендлом.

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 19:28
by John Doe
Я закрываю панель чужого плагина. Как получить хэндл?

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 19:36
by zg
John Doe wrote:Я закрываю панель чужого плагина. Как получить хэндл?
почитайте luafar_manual.chm. там есть. функция с вполне очевидным названием.

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 19:49
by John Doe
zg wrote:
John Doe wrote:Я закрываю панель чужого плагина. Как получить хэндл?
почитайте luafar_manual.chm. там есть. функция с вполне очевидным названием.
panel.GetPanelInfo возвращает структуру, в составе которой есть описатель плагина PluginHandle.
Но это не оно.

Больше ничего похожего к сожалению не нашёл.

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 20:02
by zg
это именно оно.

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 20:07
by John Doe
Это userdata, а panel.ClosePanel ожидает integer.

Да и логически не сходится: обе панели могут принадлежать одному плагину, значит хэндлы должны отличаться?

Re: LuaFAR — библиотека для создания плагинов на языке Lua

Posted: Tue 15 Jul, 2014 20:19
by zg
John Doe wrote:Это userdata, а panel.ClosePanel ожидает integer.
значит там ошибка.
John Doe wrote:Да и логически не сходится: обе панели могут принадлежать одному плагину, значит хэндлы должны отличаться?
да. именно по этому хендлу плагин и отличает разные экземпляры своих панелей. об этом, кстати написано в FarEncyclopedia.ru.chm.