Доступ к GUID диалогов Фара

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

Доступ к GUID диалогов Фара

Post by Shmuel »

Поскольку GUIDы стандартных фаровских диалогов являются частью API Фара, не должны ли они быть доступны через plugin.hpp ?

User avatar
NightRoman
Posts: 5920
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: Доступ к GUID диалогов Фара

Post by NightRoman »

Они доступны. DM_GETDIALOGINFO.

User avatar
NightRoman
Posts: 5920
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: Доступ к GUID диалогов Фара

Post by NightRoman »

DM_GETDIALOGINFO:
У меня оно на одной машине (Win7 x64) работает "через раз", иногда просто нули дает. Жаловался, но воспроизводится очень нестабильно и, получается, что это только у меня. Если кто подметит такое же или подобное, тогда уж стоит тикет на Мантисе завести. (проверялось на диалоге 'Find' в панелях).

Shmuel
Posts: 5965
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 257 times

Re: Доступ к GUID диалогов Фара

Post by Shmuel »

NightRoman wrote:Они доступны. DM_GETDIALOGINFO.
ОК, тогда: как плагин может узнать, что полученный GUID принадлежит (например) диалогу Find File?

User avatar
CrOm
Posts: 1421
Joined: Tue 02 Aug, 2005 21:02
Location: Омск
Been thanked: 1 time
Contact:

Re: Доступ к GUID диалогов Фара

Post by CrOm »

ты намекаешь, что стандартные гуиды должны быть задейфайнены в хидере?
FARdroid, qPlayEx, Opera Cache Browser, Mr.Ripper

Shmuel
Posts: 5965
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 257 times

Re: Доступ к GUID диалогов Фара

Post by Shmuel »

Не намекаю, а просто не знаю ответа на свой последний вопрос.

User avatar
NightRoman
Posts: 5920
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: Доступ к GUID диалогов Фара

Post by NightRoman »

Shmuel
Я просто опытным путем узнаю и не парюсь. В идеале это документировано должно бы быть в писании, конечно.

Shmuel
Posts: 5965
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 257 times

Re: Доступ к GUID диалогов Фара

Post by Shmuel »

Интересно, а как это делается "опытным путём"?

User avatar
NightRoman
Posts: 5920
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: Доступ к GUID диалогов Фара

Post by NightRoman »

Shmuel wrote:Интересно, а как это делается "опытным путём"?
В PowerShellFar так: открываем нужный диалог, вызываем F11 \ PowerShellFar \ Invoke, набираем там команду $Far.Dialog.TypeId. Смотрим результат.

Думаю, что можно и в чисто С/С++ коде сделать подобное. Сложнее, наверное, но суть та же - дойти до нужного диалога, вызвать у него это гуид, посмотреть (хоть в дебаггере) записать себе раз и навсегда.

User avatar
zg
zero-gravity
Posts: 5701
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

Re: Доступ к GUID диалогов Фара

Post by zg »

Shmuel wrote:Интересно, а как это делается "опытным путём"?

Code: Select all

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Far2\KeyMacros\Dialog\CtrlShiftF12]
"Sequence"="msgbox(\"\",Dlg.Info.Id)"
"Description"="show guid"
"DisableOutput"=dword:00000001

Shmuel
Posts: 5965
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 24 times
Been thanked: 257 times

Re: Доступ к GUID диалогов Фара

Post by Shmuel »

NightRoman wrote:суть та же - дойти до нужного диалога, вызвать у него это гуид, посмотреть (хоть в дебаггере) записать себе раз и навсегда.
Зачем так сложно, если можно просто взять из файла DlgGuid.hpp ?
zg wrote:

Code: Select all

Windows Registry Editor Version 5.00
[...]
Ну так это мы получаем GUID активного в данный момент диалога. Плагин это может сделать и без макроса, при помощи DM_GETDIALOGINFO. Далее плагин хочет выяснить: а не Find File ли это? Для этого плагин должен сравнить полученный GUID с GUIDом диалога Find File, поэтому последний должен быть в распоряжении плагина.

Неплохо было бы сделать перечисление для стандартных диалогов Фара (в plugin.hpp) и добавить поле в DialogInfo, чтобы кроме GUID плагин получал и "номер" диалога из перечисления.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 11 times

Re: Доступ к GUID диалогов Фара

Post by Max Rusov »

Зачем? Почему просто GUID не сравнить?

User avatar
NightRoman
Posts: 5920
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 12 times
Been thanked: 14 times
Contact:

Re: Доступ к GUID диалогов Фара

Post by NightRoman »

Shmuel wrote:Зачем так сложно, если можно просто взять из файла DlgGuid.hpp?
Это не ко мне.

Я не уверен, что хедер нужен, но мне все равно. Мне и списка в писании было бы достаточно (но это-то желательно иметь когда-нибудь).

User avatar
zg
zero-gravity
Posts: 5701
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 134 times
Contact:

Re: Доступ к GUID диалогов Фара

Post by zg »

Shmuel wrote:Неплохо было бы сделать перечисление для стандартных диалогов Фара (в plugin.hpp) и добавить поле в DialogInfo, чтобы кроме GUID плагин получал и "номер" диалога из перечисления.
сделайте. выложите патч на мантис и если оно будет соответствовать следующим нехитрым условиям:
1. не будет дублирования гуидов в нескольких файлах,
2. не будет проблем в сборке как фара так и плагинов gcc и vc,
то патч достаточно быстро применится к основной ветке.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 11 times

Re: Доступ к GUID диалогов Фара

Post by Max Rusov »

Чего, опять breaking changes? Может не надо?

Post Reply

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