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

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post 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) - элемент пассивной панели
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

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

Post by Shmuel »

John Doe wrote:Из мануала следует что первый параметр можно вообще опускать.
Опускать нельзя. Квадратные скобки, обозначающие опциональность, убраны (они обозначали, что можно nil передавать).
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Но ведь почти работало :-)
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post 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)
Оба варианта похоже равнозначны.

Вопрос: являются ли оба случая штатными и поддерживаемыми, не смотря на отсутствие информации об этом в документации?
Или стоит предпочесть один из вариантов?
Или оба нежелательны?
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:panel.SetViewMode (nil, far.Flags.PANEL_ACTIVE, mode)
так нельзя. по документации там 0/1. PANEL_ACTIVE/PANEL_PASSIVE — -1/-2. сейчас работает исключительно потому что повезло. в будущем может перестать везти.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

panel.ClosePanel: в отличии от других панельных функций нет параметра чтобы выбрать между активной/пассивной панелью
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:panel.ClosePanel: в отличии от других панельных функций нет параметра чтобы выбрать между активной/пассивной панелью
а зачем?
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Понадобилось в одном скрипте.
Там есть отдельные хоткеи для работы с активной/пассивной панелью, и для симметрии желательно и panel.ClosePanel.

Пока что передаю в качестве handle -2, тогда работает с пассивной.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:Понадобилось в одном скрипте.
ClosePanel актуальна только для плагиновых панелей, которые в свою очередь идентифицируются хендлом.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Я закрываю панель чужого плагина. Как получить хэндл?
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:Я закрываю панель чужого плагина. Как получить хэндл?
почитайте luafar_manual.chm. там есть. функция с вполне очевидным названием.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

Больше ничего похожего к сожалению не нашёл.
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

это именно оно.
User avatar
John Doe
Бюрократ
Posts: 13851
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

Это userdata, а panel.ClosePanel ожидает integer.

Да и логически не сходится: обе панели могут принадлежать одному плагину, значит хэндлы должны отличаться?
User avatar
zg
zero-gravity
Posts: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

John Doe wrote:Это userdata, а panel.ClosePanel ожидает integer.
значит там ошибка.
John Doe wrote:Да и логически не сходится: обе панели могут принадлежать одному плагину, значит хэндлы должны отличаться?
да. именно по этому хендлу плагин и отличает разные экземпляры своих панелей. об этом, кстати написано в FarEncyclopedia.ru.chm.
Post Reply

Return to “Обсуждение макросов”