View Issue Details

IDProjectCategoryView StatusLast Update
0003034PluginsLuaMacro / Macro Browserpublic2018-09-22 07:35
ReporterJohnDoe Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Product Version3.0 
Summary0003034: LuaFAR: SendDlgMessage работает не со всеми событиями/сообщениями
DescriptionСогласно энциклопедии, в параметре Msg можно указывать события и сообщения.

В LuaFAR не реализована отправка сообщений с кодом>DM_USER, и событий (все DN_*).
Additional Informationhttp://api.farmanager.com/ru/service_functions/senddlgmessage.html
http://forum.farmanager.com/viewtopic.php?p=131593#p131593
TagsNo tags attached.

Activities

shmuel

2015-09-16 09:15

developer   bugnote:0013891

Вот я сейчас поигрался с отправкой Фару DN_xxx сообщений и что-то не вижу смысла в этом.
Что происходит: Фар перевызывает диалоговую процедуру с теми же параметрами, что были переданы в SendDlgMessage(hDlg, DN_xxx, Param1, Param2).
Что нам даёт этот пинг-понг, реально?

JohnDoe

2015-09-16 09:18

updater   bugnote:0013892

>Фар перевызывает диалоговую процедуру с теми же параметрами
1. некоторые сообщения обрабатываются прямо в SendDlgMessage.
2. возможность отправить сообщение в чужую процедуру

shmuel

2015-09-16 09:30

developer   bugnote:0013893

> 1. некоторые сообщения обрабатываются прямо в SendDlgMessage.

Не понял.

JohnDoe

2015-09-16 09:34

updater   bugnote:0013894

Last edited: 2015-09-16 09:34

/* $ 28.07.2000 SVS
   ѕосылка сообщени€ диалогу
   Ќекоторые сообщени€ эта функци€ обрабатывает сама, не передава€ управление
   обработчику диалога.
*/
http://sourceforge.net/p/farmanager/code/HEAD/tree/trunk/unicode_far/dialog.cpp#l4707

shmuel

2015-09-16 09:38

developer   bugnote:0013895

То, что в исходниках, для нас не руководство. Этого нет в документации.

JohnDoe

2015-09-16 09:43

updater   bugnote:0013896

Ok

shmuel

2015-09-16 09:43

developer   bugnote:0013897

> 2. возможность отправить сообщение в чужую процедуру

То-есть, действовать на авось, ибо мы не знаем наверняка, что в этой чужой процедуре может быть наворочено.

JohnDoe

2015-09-16 09:45

updater   bugnote:0013898

Last edited: 2015-09-16 09:46

В общем случае не знаю, в Энциклопедии речь скорее о пользовательских сообщениях.

shmuel

2015-09-16 09:50

developer   bugnote:0013899

Реализовать в LuaFAR отправку сообщений DN_xxx несложно для тех DN_xxx, где Param2 - число. Но там, где указатель на структуру - это изрядная работа, для которой нужна мотивация.

Что касается DM_USER, DM_USER+1, ... - мне тоже непонятно, что это нам может реально дать.

JohnDoe

2015-09-16 09:55

updater   bugnote:0013900

Last edited: 2015-09-16 09:55

>Но там, где указатель на структуру - это изрядная работа, для которой нужна мотивация.
Вопрос к специалистам, я как и вы не уверен в необходимости этого.

>Что касается DM_USER, DM_USER+1, ... - мне тоже непонятно, что это нам может реально дать.
Задумка примерно такая:
https://github.com/trexinc/evil-programmers/tree/master/listboxex

shmuel

2015-09-16 13:07

developer   bugnote:0013901

> Задумка примерно такая:
> https://github.com/trexinc/evil-programmers/tree/master/listboxex

Насколько я понимаю, эту задумку (а также и поддержку DN_xxx) можно реализовать и без изменений в LuaFAR.
Просто вместо far.SendDlgMessage(...) вызывать напрямую DlgProg(...) - рекурсивный вызов.

JohnDoe

2015-09-16 13:08

updater   bugnote:0013902

>вызывать напрямую DlgProg(...) - рекурсивный вызов.
Это как?

shmuel

2015-09-16 13:14

developer   bugnote:0013903

Ну вот вы хотели бы вызвать far.SendDlgMessage(hDlg, F.DN_BTNCLICK, 5, 1), но LuaFAR это не поддерживает, выдаёт ошибку.

Вместо этого вы вызываете DlgProc(hDlg, F.DN_BTNCLICK, 5, 1).

JohnDoe

2015-09-16 13:22

updater   bugnote:0013904

Я полагал что под DlgProc в Энциклопедии подразумевается приватная функция плагина, с которой у прочих плагинов нет иного способа взаимодействия, кроме как через SendDlgMessage.

shmuel

2015-09-16 13:27

developer   bugnote:0013905

Речь идёт о своей диалоговой процедуре, а не о чужой.
Здесь же по вашей ссылке (https://github.com/trexinc/evil-programmers/tree/master/listboxex) работа идёт со своей процедурой, не так ли?

JohnDoe

2015-09-16 13:35

updater   bugnote:0013906

>со своей процедурой, не так ли?
Выходит я пребывал в заблуждении, полагая что DM_USER можно использовать для межплагинного взаимодействия.

Зачем тогда существует DM_USER, если без него можно обойтись.
Пора спрашивать zg.

shmuel

2018-05-11 21:54

developer   bugnote:0016090

Предлагаю закрыть этот тикет, если не появились данные в пользу реализации этого функционала. Если же есть хотя бы один практический пример полезного применения, прошу привести его, тогда можно будет заново рассмотреть этот вопрос.

JohnDoe

2018-05-12 10:32

updater   bugnote:0016092

Лично я в этом вопросе некомпетентен, но опасаюсь что так можно нечаянно зарыть полезный функционал доступный в АПИ плагинов.

https://github.com/trexinc/evil-programmers/search?utf8=%E2%9C%93&q=DM_USER&type=
DM_USER встречается 30 раз

shmuel

2018-05-12 10:43

developer   bugnote:0016094

> Лично я в этом вопросе некомпетентен

Задача убедить разработчика что-то добавить или изменить лежит на создателе тикета.
Вам должно быть не сложно приобрести компетенцию в данном конкретном вопросе.
Нужен всего-навсего реальный пример полезности этой фичи. Иначе нет смысла что-то делать.

JohnDoe

2018-05-12 11:21

updater   bugnote:0016096

Нужен всего-навсего реальный пример полезности этой фичи. Иначе нет смысла что-то делать.

shmuel
Согласен.

Прямо сейчас заняться этим возможности у меня нет, но пока определённости нет, тикет предлагаю не закрывать.

shmuel

2018-05-12 11:25

developer   bugnote:0016097

OK.

shmuel

2018-09-13 19:34

developer   bugnote:0016244

Лёд немножко тронулся. Добавлена обработка 7-ми сообщений DN_* в SendDlgMessage().
Можно уже поиграться.

zg

2018-09-15 16:15

developer   bugnote:0016247

> Задумка примерно такая:
> https://github.com/trexinc/evil-programmers/tree/master/listboxex
как бы тут всё есть https://github.com/trexinc/evil-programmers/tree/master/LuaListBoxEx не?

JohnDoe

2018-09-20 14:59

updater   bugnote:0016260

>как бы тут всё есть https://github.com/trexinc/evil-programmers/tree/master/LuaListBoxEx не?
Смотря что искать.
Выше (0003034:0013906) речь шла о сообщении DM_USER, которое в реализации LuaListBoxEx отсутствует.

zg

2018-09-21 11:46

developer   bugnote:0016265

DM_USER — это такое универсальное решение с оглядкой на все языки, на которых можно писать плагины. в луа это же можно реализовать проще и изящнее имеющимися языковыми средствами, что и демонстрирует LuaListBoxEx.

JohnDoe

2018-09-21 14:42

updater   bugnote:0016266

1) Т.е. (потенциально) не в каждом языке диалоговая процедура может сама себя рекурсивно вызвать, и прежде всего для таких случаев удобно использовать SendDlgMessage?

2) Верно ли я понимаю что при использовании SendDlgMessage событие/сообщение может получить только собственная процедура (никуда дальше фар не передаёт?)

3) И может ли быть (в теории) какой-то практический смысл в посылке тех сообщений, что SendDlgMessage обрабатывает самостоятельно?(DN_EDITCHANGE и тому подобное)

zg

2018-09-22 07:35

developer   bugnote:0016267

1) не понимаю вопроса.
2) если собственная процедура получила сообщение, то то обработчики событий тоже получат.
3) в теории — возможно может. но опять же это закладывание на внутреннюю реализацию, которая может в любой момент измениться.

Issue History

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