View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0003760 | Wishes.Plugins | LuaMacro / Macro Browser | public | 2019-12-31 12:14 | 2020-01-20 11:20 |
Reporter | JohnDoe | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | N/A |
Status | new | Resolution | open | ||
Platform | x86 | OS | Windows | OS Version | XP SP3 |
Product Version | 3.0 | ||||
Summary | 0003760: LuaFAR panel API: возможность указать панель числом в первом аргументе | ||||
Description | Первым аргументом панельные функции принимают хэндл панели (userdata), а в тех случаях, когда в C API используются константы PANEL_ACTIVE/PANEL_PASSIVE - необходимо использовать дополнительный второй параметр. По стечению обстоятельств, до билда 5543 это и работало желаемым образом, т.е. оба варианта были равнозначны:
| ||||
Additional Information | https://api.farmanager.com/ru/service_functions/panelcontrol.html https://forum.farmanager.com/viewtopic.php?p=158333#p158333 | ||||
Tags | No tags attached. | ||||
|
> По стечению обстоятельств, до билда 5543 это и работало желаемым образом, т.е. оба варианта были равнозначны:
PANEL_ACTIVE и PANEL_PASSIVE определены в Фаре как -1 и -2 соответственно.Большинство макрописателей не пользовались этими константами, и ставили соответственно литералы 1 и 0. Возможно, что это в каких-то случаях случайно работало. |
|
> Большинство макрописателей не пользовались этими константами, и ставили соответственно литералы 1 и 0. В качестве первого аргумента? Не помню, чтобы такое обсуждалось. 1/0 привлекают разве что лаконичностью. Но на практике встречая такое каждый раз напрягаюсь соображая что же оно здесь значит (особенно учитывая что значения макро апи диаметрально противоположны). |
|
@JohnDoe, данное изменение было сделано в рамках рефакторинга, в данном случае чистки кода в LuaFAR. То, что в качестве 1-го аргумента был допустим number, было исторически связано не с PANEL_ACTIVE / PANEL_PASSIVE, а с тем, что когда-то хэндлы плагиновых панелей представлялись в том числе числами. Поскольку они уже давно представляются только как userdata, я решил очистить код от старого кейса. По поводу, как вы говорите, стечения обстоятельств, я был просто не в курсе, ибо всегда при необходимости указать пассивную / активную панель, пользовался вторым аргументом, в соответствии с документацией. Поскольку API более-менее заморожено, это накладывает ограничения. Вернуть как было до изменения, это надо будет как минимум документировать, чтобы не было "стечения обстоятельств". Но мне бы этого сильно не хотелось, ибо данное API тогда получится совсем уж запутанным. Сейчас достаточно просто: (1) arg1 == хэндл плагиновой панели - второй аргумент игнорируется (2) arg1 == nil - второй аргумент есть активная/пассивная панель. |
|
Как посмотреть, для меня напротив апи станет проще, поскольку буду пользоваться лишь первым вариантом синтаксиса. Усложнение документации же будет заключаться в небольшом примечании. |
|
> (2) arg1 == nil - второй аргумент есть активная/пассивная панель. Которая уже не PANEL_ACTIVE / PANEL_PASSIVE, а 1 / 0. Вот это и есть настоящая запутанность. Короче, я не вижу проблемы (ни для себя, ни для других) пользоваться 2-мя аргументами в соответствии с документацией. Да, не идеальное API, но вполне рабочее и однозначное. Поскольку я не склонен на данном этапе это менять, предлагаю не продолжать данную дискуссию в ближайшее время. |
Date Modified | Username | Field | Change |
---|---|---|---|
2019-12-31 12:14 | JohnDoe | New Issue | |
2019-12-31 12:43 | shmuel | Note Added: 0016676 | |
2019-12-31 13:03 | shmuel | Relationship added | related to 0002742 |
2020-01-03 09:43 | JohnDoe | Note Added: 0016684 | |
2020-01-03 10:17 | shmuel | Note Added: 0016685 | |
2020-01-03 10:39 | JohnDoe | Note Added: 0016687 | |
2020-01-03 10:52 | shmuel | Note Added: 0016688 | |
2020-01-20 11:20 | JohnDoe | Relationship added | related to 0003765 |