Page 1 of 2

TableView — диалог-браузер таблиц Lua

Posted: Mon 03 Dec, 2012 19:18
by Shmuel
Первоначальный автор — maxdrfl.


Макрос назначен на 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 знаком плохо, и не знаю какой смысл был в модуле который ничего не возвращает).

Вся функциональность в модулях, а макрос лаконичен:
  1. local TableView = require"far2.tableview"
  2.  
  3. Macro { description="tableview from lf4ed";
  4.  
  5.   area="Common"; key="CtrlShiftF11";
  6.  
  7.   action=function() TableView('_G') end;
  8.  
  9. }
Точно так же 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)
Задался целью исправить это макросом, но не вышло
  1. local TableViewDlgId = "76FEC618-17B3-4DC0-B966-6073A589034F"
  2.  
  3. Macro { description="";
  4.  
  5.   area="Dialog"; key="BS"; flags="NoSendKeysToPlugins";
  6.  
  7.   condition=function()
  8.  
  9.     return Dlg.Id==TableViewDlgId and Menu.FilterStr()~=""
  10.  
  11.   end;
  12.  
  13.   action=function() mf.beep() Keys"BS" end;
  14.  
  15. }
Я надеялся что 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
Насколько я понимаю, при включённом фильтре как раз нажатия не доходят до обработчика скрипта, а прямо идут в фаровский обработчик.

А, попробовал сейчас - я не прав. Просто "чукча не читатель" (я разрабатываю этот скрипт, но пока что не пользовался им совершенно).

Re: TableView - диалог-браузер таблиц Lua

Posted: Sun 07 Apr, 2013 16:01
by John Doe

Code: Select all

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
Вложение в первом посте обновлено на основании актуальных исходников.