View Issue Details

IDProjectCategoryView StatusLast Update
0002572WishesMacropublic2014-01-25 18:03
ReporterJohnDoe Assigned Toshmuel  
PrioritynormalSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Product Version3.0 
Fixed in Version3.0 
Summary0002572: far.MakeMenuItems: добавлять в таблицу не только строковое представление, но и сами объекты
DescriptionВ настоящий момент каждый элемент таблицы содержит { text=<string> }.
Хочется чтобы также добавлялся и сам объект: { text=<string>, obj=select(i,...) }
Это расширит сферу применения функции, т.к. возвращаемое значение будет содержать всё необходимое для полноценной обработки.
TagsNo tags attached.
BuildLMb274

Activities

JohnDoe

2014-01-23 10:31

updater   bugnote:0011741

Связанное пожелание: 0002573

shmuel

2014-01-24 10:48

developer   bugnote:0011764

Опять-таки (как в 0002573), в случае многострочных элементов, добавлять ли объект в таблицу представления _каждой_ строки данного элемента?

Оба этих предложения (0002573 и данное) выглядят логично, но наличие многострочных элементов портит картину.

JohnDoe

2014-01-24 10:53

updater   bugnote:0011765

Last edited: 2014-01-24 10:57

Мне кажется не портит, и тут вполне логично возвращать весь объект, а не выбранную строку.

А если нужна именно выбранная строка, то она есть в поле text, плюс её номер (в большинстве случаев) находится в Pos.

P.S.
Если вы иного мнения, то давайте добавим ещё одно поле line.

shmuel

2014-01-24 10:58

developer   bugnote:0011766

> тут вполне логично возвращать весь объект, а не выбранную строку.

far.MakeMenuItems возвращает не строку, а список строк, помещённых в таблицы.
И вы не ответили на мой вопрос.

JohnDoe

2014-01-24 11:06

updater   bugnote:0011767

Last edited: 2014-01-24 11:08

Отвечаю на вопрос: добавлять, обязательно.

far.MakeMenuItems(1,"2","3\n4")
Должна вернуть
{
 {text="1| 1",obj=1},
 {text="2| 2",obj="2"},
 {text="3| 3",obj="3\n4"},
 {text=" | 4",obj="3\n4"}
}

P.S.
Обосновать?

shmuel

2014-01-24 11:10

developer   bugnote:0011768

Меня интересует полезность этого, то-есть пример применения.

JohnDoe

2014-01-24 12:46

updater   bugnote:0011769

Начнём с того, что такое эти многострочные элементы?
Это просто хитрость, позволяющая наглядно отобразить многострочный текст.
Т.е. по смыслу все эти строки представляют собой единый элемент, а разбит на части он лишь по причинам технического характера.

Замысел данного тикета в том, чтобы получить быстрый способ выбора элемента из списка *разнотипных* значений.
Многострочный текст тут - одно значение, и как оно разбито на айтемы (и разбито ли вообще) нас не интересует. По большому счёту мы даже не знаем многострочный ли там текст.

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

Никакого альтернативного решения я лично не вижу.
Добавлять объект только в первую строку значения? Бессмысленно.
В качестве объекта рассматривать выбранную строку? Бессмысленно (точнее это уже есть и без тикета)

shmuel

2014-01-24 12:52

developer   bugnote:0011770

Не, это всё мне и так было понятно.

Требуется "жизненный", не гипотетический пример использования far.MakeMenuItems или far.Show с новой функциональностью, демонстрирующий их полезность.

JohnDoe

2014-01-24 12:57

updater   bugnote:0011771

Last edited: 2014-01-24 14:46

local item = far.Show(some_function_call())
while (item and type(item.obj)=="table") do
  item = far.Show(unpack(item.obj))
end

JohnDoe

2014-01-24 14:46

updater   bugnote:0011772

Этим примером проиллюстрировано 2 применения
- выбор из значений возвращаемых функцией
- выбор из массива
Мне это нужно в нескольких скриптах.

Возможно вы посчитаете это нетипичным использованием.
Но как говорится - моё дело предложить...

shmuel

2014-01-24 15:31

developer   bugnote:0011773

А может вместо 'obj' лучше 'arg' ?

JohnDoe

2014-01-24 17:05

updater   bugnote:0011774

На ваше усмотрение. Почему бы и нет

shmuel

2014-01-24 18:24

developer   bugnote:0011775

LuaMacro build 274.

Issue History

Date Modified Username Field Change
2014-01-23 10:20 JohnDoe New Issue
2014-01-23 10:31 JohnDoe Note Added: 0011741
2014-01-24 10:48 shmuel Note Added: 0011764
2014-01-24 10:53 JohnDoe Note Added: 0011765
2014-01-24 10:56 JohnDoe Note Edited: 0011765
2014-01-24 10:57 JohnDoe Note Edited: 0011765
2014-01-24 10:58 shmuel Note Added: 0011766
2014-01-24 11:06 JohnDoe Note Added: 0011767
2014-01-24 11:07 JohnDoe Note Edited: 0011767
2014-01-24 11:08 JohnDoe Note Edited: 0011767
2014-01-24 11:10 shmuel Note Added: 0011768
2014-01-24 12:46 JohnDoe Note Added: 0011769
2014-01-24 12:52 shmuel Note Added: 0011770
2014-01-24 12:57 JohnDoe Note Added: 0011771
2014-01-24 13:00 JohnDoe Note Edited: 0011771
2014-01-24 13:02 JohnDoe Note Edited: 0011771
2014-01-24 14:45 JohnDoe Note Edited: 0011771
2014-01-24 14:46 JohnDoe Note Edited: 0011771
2014-01-24 14:46 JohnDoe Note Edited: 0011771
2014-01-24 14:46 JohnDoe Note Added: 0011772
2014-01-24 15:31 shmuel Note Added: 0011773
2014-01-24 17:05 JohnDoe Note Added: 0011774
2014-01-24 18:24 shmuel Note Added: 0011775
2014-01-24 18:24 shmuel Assigned To => shmuel
2014-01-24 18:24 shmuel Status new => feedback
2014-01-25 13:13 JohnDoe Status feedback => resolved
2014-01-25 18:03 shmuel Build => LMb274
2014-01-25 18:03 shmuel Status resolved => closed
2014-01-25 18:03 shmuel Resolution open => fixed
2014-01-25 18:03 shmuel Fixed in Version => 3.0