View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003034 | Plugins | LuaMacro / Macro Browser | public | 2015-07-28 14:05 | 2018-09-22 07:35 |
Reporter | JohnDoe | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | new | Resolution | open | ||
Product Version | 3.0 | ||||
Summary | 0003034: LuaFAR: SendDlgMessage работает не со всеми событиями/сообщениями | ||||
Description | Согласно энциклопедии, в параметре Msg можно указывать события и сообщения. В LuaFAR не реализована отправка сообщений с кодом>DM_USER, и событий (все DN_*). | ||||
Additional Information | http://api.farmanager.com/ru/service_functions/senddlgmessage.html http://forum.farmanager.com/viewtopic.php?p=131593#p131593 | ||||
Tags | No tags attached. | ||||
|
Вот я сейчас поигрался с отправкой Фару DN_xxx сообщений и что-то не вижу смысла в этом. Что происходит: Фар перевызывает диалоговую процедуру с теми же параметрами, что были переданы в SendDlgMessage(hDlg, DN_xxx, Param1, Param2). Что нам даёт этот пинг-понг, реально? |
|
>Фар перевызывает диалоговую процедуру с теми же параметрами 1. некоторые сообщения обрабатываются прямо в SendDlgMessage. 2. возможность отправить сообщение в чужую процедуру |
|
> 1. некоторые сообщения обрабатываются прямо в SendDlgMessage. Не понял. |
|
/* $ 28.07.2000 SVS ѕосылка сообщени€ диалогу Ќекоторые сообщени€ эта функци€ обрабатывает сама, не передава€ управление обработчику диалога. */ http://sourceforge.net/p/farmanager/code/HEAD/tree/trunk/unicode_far/dialog.cpp#l4707 |
|
То, что в исходниках, для нас не руководство. Этого нет в документации. |
|
Ok |
|
> 2. возможность отправить сообщение в чужую процедуру То-есть, действовать на авось, ибо мы не знаем наверняка, что в этой чужой процедуре может быть наворочено. |
|
В общем случае не знаю, в Энциклопедии речь скорее о пользовательских сообщениях. |
|
Реализовать в LuaFAR отправку сообщений DN_xxx несложно для тех DN_xxx, где Param2 - число. Но там, где указатель на структуру - это изрядная работа, для которой нужна мотивация. Что касается DM_USER, DM_USER+1, ... - мне тоже непонятно, что это нам может реально дать. |
|
>Но там, где указатель на структуру - это изрядная работа, для которой нужна мотивация. Вопрос к специалистам, я как и вы не уверен в необходимости этого. >Что касается DM_USER, DM_USER+1, ... - мне тоже непонятно, что это нам может реально дать. Задумка примерно такая: https://github.com/trexinc/evil-programmers/tree/master/listboxex |
|
> Задумка примерно такая: > https://github.com/trexinc/evil-programmers/tree/master/listboxex Насколько я понимаю, эту задумку (а также и поддержку DN_xxx) можно реализовать и без изменений в LuaFAR. Просто вместо far.SendDlgMessage(...) вызывать напрямую DlgProg(...) - рекурсивный вызов. |
|
>вызывать напрямую DlgProg(...) - рекурсивный вызов. Это как? |
|
Ну вот вы хотели бы вызвать far.SendDlgMessage(hDlg, F.DN_BTNCLICK, 5, 1), но LuaFAR это не поддерживает, выдаёт ошибку. Вместо этого вы вызываете DlgProc(hDlg, F.DN_BTNCLICK, 5, 1). |
|
Я полагал что под DlgProc в Энциклопедии подразумевается приватная функция плагина, с которой у прочих плагинов нет иного способа взаимодействия, кроме как через SendDlgMessage. |
|
Речь идёт о своей диалоговой процедуре, а не о чужой. Здесь же по вашей ссылке (https://github.com/trexinc/evil-programmers/tree/master/listboxex) работа идёт со своей процедурой, не так ли? |
|
>со своей процедурой, не так ли? Выходит я пребывал в заблуждении, полагая что DM_USER можно использовать для межплагинного взаимодействия. Зачем тогда существует DM_USER, если без него можно обойтись. Пора спрашивать zg. |
|
Предлагаю закрыть этот тикет, если не появились данные в пользу реализации этого функционала. Если же есть хотя бы один практический пример полезного применения, прошу привести его, тогда можно будет заново рассмотреть этот вопрос. |
|
Лично я в этом вопросе некомпетентен, но опасаюсь что так можно нечаянно зарыть полезный функционал доступный в АПИ плагинов. https://github.com/trexinc/evil-programmers/search?utf8=%E2%9C%93&q=DM_USER&type= DM_USER встречается 30 раз |
|
> Лично я в этом вопросе некомпетентен Задача убедить разработчика что-то добавить или изменить лежит на создателе тикета. Вам должно быть не сложно приобрести компетенцию в данном конкретном вопросе. Нужен всего-навсего реальный пример полезности этой фичи. Иначе нет смысла что-то делать. |
|
Согласен. Прямо сейчас заняться этим возможности у меня нет, но пока определённости нет, тикет предлагаю не закрывать. |
|
OK. |
|
Лёд немножко тронулся. Добавлена обработка 7-ми сообщений DN_* в SendDlgMessage(). Можно уже поиграться. |
|
> Задумка примерно такая: > https://github.com/trexinc/evil-programmers/tree/master/listboxex как бы тут всё есть https://github.com/trexinc/evil-programmers/tree/master/LuaListBoxEx не? |
|
>как бы тут всё есть https://github.com/trexinc/evil-programmers/tree/master/LuaListBoxEx не? Смотря что искать. Выше (0003034:0013906) речь шла о сообщении DM_USER, которое в реализации LuaListBoxEx отсутствует. |
|
DM_USER — это такое универсальное решение с оглядкой на все языки, на которых можно писать плагины. в луа это же можно реализовать проще и изящнее имеющимися языковыми средствами, что и демонстрирует LuaListBoxEx. |
|
1) Т.е. (потенциально) не в каждом языке диалоговая процедура может сама себя рекурсивно вызвать, и прежде всего для таких случаев удобно использовать SendDlgMessage? 2) Верно ли я понимаю что при использовании SendDlgMessage событие/сообщение может получить только собственная процедура (никуда дальше фар не передаёт?) 3) И может ли быть (в теории) какой-то практический смысл в посылке тех сообщений, что SendDlgMessage обрабатывает самостоятельно?(DN_EDITCHANGE и тому подобное) |
|
1) не понимаю вопроса. 2) если собственная процедура получила сообщение, то то обработчики событий тоже получат. 3) в теории — возможно может. но опять же это закладывание на внутреннюю реализацию, которая может в любой момент измениться. |
Date Modified | Username | Field | Change |
---|---|---|---|
2015-07-28 14:05 | JohnDoe | New Issue | |
2015-09-16 09:15 | shmuel | Note Added: 0013891 | |
2015-09-16 09:18 | JohnDoe | Note Added: 0013892 | |
2015-09-16 09:30 | shmuel | Note Added: 0013893 | |
2015-09-16 09:34 | JohnDoe | Note Added: 0013894 | |
2015-09-16 09:34 | JohnDoe | Note Edited: 0013894 | |
2015-09-16 09:38 | shmuel | Note Added: 0013895 | |
2015-09-16 09:43 | JohnDoe | Note Added: 0013896 | |
2015-09-16 09:43 | shmuel | Note Added: 0013897 | |
2015-09-16 09:45 | JohnDoe | Note Added: 0013898 | |
2015-09-16 09:46 | JohnDoe | Note Edited: 0013898 | |
2015-09-16 09:50 | shmuel | Note Added: 0013899 | |
2015-09-16 09:55 | JohnDoe | Note Added: 0013900 | |
2015-09-16 09:55 | JohnDoe | Note Edited: 0013900 | |
2015-09-16 13:07 | shmuel | Note Added: 0013901 | |
2015-09-16 13:08 | JohnDoe | Note Added: 0013902 | |
2015-09-16 13:14 | shmuel | Note Added: 0013903 | |
2015-09-16 13:22 | JohnDoe | Note Added: 0013904 | |
2015-09-16 13:27 | shmuel | Note Added: 0013905 | |
2015-09-16 13:35 | JohnDoe | Note Added: 0013906 | |
2018-05-11 21:54 | shmuel | Note Added: 0016090 | |
2018-05-12 10:32 | JohnDoe | Note Added: 0016092 | |
2018-05-12 10:43 | shmuel | Note Added: 0016094 | |
2018-05-12 11:21 | JohnDoe | Note Added: 0016096 | |
2018-05-12 11:25 | shmuel | Note Added: 0016097 | |
2018-09-13 19:34 | shmuel | Note Added: 0016244 | |
2018-09-15 16:15 | zg | Note Added: 0016247 | |
2018-09-20 14:59 | JohnDoe | Note Added: 0016260 | |
2018-09-21 11:46 | zg | Note Added: 0016265 | |
2018-09-21 14:42 | JohnDoe | Note Added: 0016266 | |
2018-09-22 07:35 | zg | Note Added: 0016267 |