Работает так:
local TableView = require"far2.tableview"
TableView('_G', _G) - отображает таблицу _G (верит, что она находится по
адресу '_G')
TableView('_G') - отображает таблицу _G, получая её по адресу
TableView(nil, _G) - отображает таблицу _G, адресная строка в этом случае
содержит запись <internal>
Когда в фокусе находится поле, там можно ввести адрес таблицы и открыть её
на редактирование.
Когда в фокусе находится список:
Enter - открыть таблицу под курсором
BS - вернутся к предыдущей таблице
Ins - Вставить новое поле. Запрашиваются четыре значения: тип ключа
(number, boolean, string), ключ, тип значения (тоже самое + table),
значение
Del - Удалить поле. С подтверждением.
F4 - Редактировать значение. При этом тип сохраняется.
Когда в фокусе функция, по enter можно её выполнить, передав список аргументов.
Отображаемая информация: полное количество элементов в текущей таблице, а
так-же поля метатаблицы в заголовке. Строки, числа, булевы переменные -
как есть. Функция - function.
Для таблицы отображается число элементов в массиве, наличие метатаблицы, и
отдельно пишется, если таблица пуста.
Макрос назначен на CtrlShiftF11 в области Common. Отредактируйте, кто хочет другие значения.
Установка: распаковать приложенный архив в "%FARPROFILE%\Macros"
ПРЕДУПРЕЖДЕНИЕ: РЕДАКТИРОВАНИЕ ВЕЛИЧИН Lua МОЖЕТ ПРИВЕСТИ К НЕРАБОТОСПОСОБНОСТИ МАКРОСОВ И ПРОЧИМ НЕЖЕЛАТЕЛЬНЫМ ПОСЛЕДСТВИЯМ.
Re: TableView - диалог-браузер таблиц Lua
Posted: Mon 03 Dec, 2012 20:59
by DAtaMan
Спасибо, отличный скрипт.
А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
Re: TableView - диалог-браузер таблиц Lua
Posted: Mon 03 Dec, 2012 21:27
by Shmuel
DAtaMan wrote:А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
Заменить-то можно, но фильтр этот - неэффективен, так как не может фильтровать только по одной колонке. Надо наверное делать встроенный фильтр.
Re: TableView - диалог-браузер таблиц Lua
Posted: Tue 29 Jan, 2013 12:38
by John Doe
Похоже на баг.
Браузер отображает информацию не соответствующую контексту, из которого вызван.
А именно: информация берётся из контекста самого диалога-браузера (cм. таблицы Dlg и Menu).
Исправимо?
Re: TableView - диалог-браузер таблиц Lua
Posted: Tue 29 Jan, 2013 13:30
by Shmuel
Это действительно баг (известный мне). Исправимый.
Утилита была написана несколько лет назад для LuaFAR-плагинов. Её дизайн предполагает, что диалог во время действий пользователя всё время открыт, а изменения отображаются в списке. Свойства (properties), которых не было изначально, были добавлены в последнее время, и тут-то выяснилось, что прежде, чем их считывать, диалог надо закрывать, а после считывания - переоткрывать. Но это пока не сделано.
Re: TableView — диалог-браузер таблиц Lua
Posted: Sat 06 Apr, 2013 21:37
by John Doe
Актуализировал макрос, взяв свежий исходник с https://github.com/shmuz/luafar4editor/
В модуле заменил вызов showDialog на return showDialog (я с luafar4editor знаком плохо, и не знаю какой смысл был в модуле который ничего не возвращает).
Вся функциональность в модулях, а макрос лаконичен:
Точно так же TableView можно использовать и в своих скриптах, для просмотра любых таблиц.
P.S.
Надо бы актуализировать шапку, и тогда можно будет перенести тему в форум готовых макросов.
Re: TableView - диалог-браузер таблиц Lua
Posted: Sat 06 Apr, 2013 21:59
by Shmuel
John Doe wrote:Актуализировал макрос, взяв свежий исходник с https://github.com/shmuz/luafar4editor/
В модуле заменил вызов showDialog на return showDialog (я с luafar4editor знаком плохо, и не знаю какой смысл был в модуле который ничего не возвращает).
Причина проста: файл лежит вместе с модулями, но модулем не является. Скрипты (не модули) в LF4Ed также ищутся с использованием package.path.
John Doe wrote:Надо бы актуализировать шапку, и тогда можно будет перенести тему в форум готовых макросов.
Полностью вам доверяю.
Re: TableView - диалог-браузер таблиц Lua
Posted: Sat 06 Apr, 2013 22:13
by John Doe
DAtaMan wrote:А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
return Dlg.Id==TableViewDlgId and Menu.FilterStr()~=""
end;
action=function() mf.beep() Keys"BS"end;
}
Я надеялся что NoSendKeysToPlugins поможет, но видимо дело в том, что TableView это не плагин...
Как же быть?
Хочется иметь возможность нажать честную клавишу не передавая её обработчику диалога.
Re: TableView - диалог-браузер таблиц Lua
Posted: Sat 06 Apr, 2013 22:21
by Shmuel
John Doe wrote:Хочется иметь возможность нажать честную клавишу не передавая её обработчику диалога.
Допустим, получилось бы. А как тогда редактировать фильтр?
Re: TableView - диалог-браузер таблиц Lua
Posted: Sat 06 Apr, 2013 22:31
by John Doe
Не уверен что понял вопрос.
Задача в том, чтобы при непустом фильтре пропустить обработчик плагина/скрипта, и передать клавишу в фаровский обработчик, а он уже позаботится о фильтре.
(я могу ошибаться, т.к. не вник ещё в тонкости обработки событий диалогов)
Re: TableView - диалог-браузер таблиц Lua
Posted: Sat 06 Apr, 2013 22:34
by Shmuel
Насколько я понимаю, при включённом фильтре как раз нажатия не доходят до обработчика скрипта, а прямо идут в фаровский обработчик.
А, попробовал сейчас - я не прав. Просто "чукча не читатель" (я разрабатываю этот скрипт, но пока что не пользовался им совершенно).
showDialog('_G',) - отображает таблицу _G, получая её по адресу
Работает со всеми глобальными таблицами, но локальные получить не может.
Исправимо?
(о том, что можно явно указать я знаю)
P.S.
добавил пока в функцию PathToTable строку setfenv(func, getfenv(4))
Re: TableView - диалог-браузер таблиц Lua
Posted: Sun 07 Apr, 2013 20:39
by Shmuel
John Doe wrote:Работает со всеми глобальными таблицами, но локальные получить не может.
Исправимо?
Думаю, что всё исправимо, но я как бы сейчас не в теме, так как давно сабж не трогал (и не пользуюсь). Может когда-нибудь снова возьмусь.
Re: TableView — диалог-браузер таблиц Lua
Posted: Sun 07 Apr, 2013 20:49
by John Doe
Если вдруг, то вот ещё пожелания:
[*] диалог маленький, и если ключи какой-то таблицы достаточно длинные, то нет никакой возможности их увидеть полностью.
В lua_explorer если открыть такой элемент на просмотр, то ключ будет в заголовке, а в tableview и этого нет
[*] по кнопке Down курсор переходит из поля ввода в листбокс.
По кнопке Up желательно иметь возможность вернуться из листбокса в поле ввода
TableView — диалог-браузер таблиц Lua
Posted: Fri 24 Jul, 2015 15:37
by John Doe
Вложение в первом посте обновлено на основании актуальных исходников.