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

Здесь выкладываются готовые к использованию макросы и скрипты.
Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Mon 03 Dec, 2012 19:18

Первоначальный автор — maxdrfl.


Макрос назначен на CtrlShiftF11 в области Common. Отредактируйте, кто хочет другие значения.

Установка: распаковать приложенный архив в "%FARPROFILE%\Macros"

ПРЕДУПРЕЖДЕНИЕ: РЕДАКТИРОВАНИЕ ВЕЛИЧИН Lua МОЖЕТ ПРИВЕСТИ К НЕРАБОТОСПОСОБНОСТИ МАКРОСОВ И ПРОЧИМ НЕЖЕЛАТЕЛЬНЫМ ПОСЛЕДСТВИЯМ.
Attachments
tableview-20150720.7z
Commits on Jul 20, 2015
(5.96 KiB) Downloaded 65 times
Last edited by Shmuel on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: https://github.com/shmuz/far_plugins/commit/da879396339bd1c54f1aceee98c81cb6fb210ebe

User avatar
DAtaMan
Posts: 262
Joined: Wed 24 Jun, 2009 10:01
Location: не отсюда

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

Post by DAtaMan » Mon 03 Dec, 2012 20:59

Спасибо, отличный скрипт.
А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Mon 03 Dec, 2012 21:27

DAtaMan wrote:А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
Заменить-то можно, но фильтр этот - неэффективен, так как не может фильтровать только по одной колонке. Надо наверное делать встроенный фильтр.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

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

Post by John Doe » Tue 29 Jan, 2013 12:38

Похоже на баг.

Браузер отображает информацию не соответствующую контексту, из которого вызван.
А именно: информация берётся из контекста самого диалога-браузера (cм. таблицы Dlg и Menu).

Исправимо?

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Tue 29 Jan, 2013 13:30

Это действительно баг (известный мне). Исправимый.
Утилита была написана несколько лет назад для LuaFAR-плагинов. Её дизайн предполагает, что диалог во время действий пользователя всё время открыт, а изменения отображаются в списке. Свойства (properties), которых не было изначально, были добавлены в последнее время, и тут-то выяснилось, что прежде, чем их считывать, диалог надо закрывать, а после считывания - переоткрывать. Но это пока не сделано.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

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

Post by John Doe » Sat 06 Apr, 2013 21:37

Актуализировал макрос, взяв свежий исходник с https://github.com/shmuz/luafar4editor/
В модуле заменил вызов showDialog на return showDialog (я с luafar4editor знаком плохо, и не знаю какой смысл был в модуле который ничего не возвращает).

Вся функциональность в модулях, а макрос лаконичен:
  1. local TableView = require"far2.tableview"
  2. Macro { description="tableview from lf4ed";
  3.   area="Common"; key="CtrlShiftF11";
  4.   action=function() TableView('_G') end;
  5. }
Точно так же TableView можно использовать и в своих скриптах, для просмотра любых таблиц.

P.S.
Надо бы актуализировать шапку, и тогда можно будет перенести тему в форум готовых макросов.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Sat 06 Apr, 2013 21:59

John Doe wrote:Актуализировал макрос, взяв свежий исходник с https://github.com/shmuz/luafar4editor/
В модуле заменил вызов showDialog на return showDialog (я с luafar4editor знаком плохо, и не знаю какой смысл был в модуле который ничего не возвращает).
Причина проста: файл лежит вместе с модулями, но модулем не является. Скрипты (не модули) в LF4Ed также ищутся с использованием package.path.
John Doe wrote:Надо бы актуализировать шапку, и тогда можно будет перенести тему в форум готовых макросов.
Полностью вам доверяю.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

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

Post by John Doe » Sat 06 Apr, 2013 22:13

DAtaMan wrote:А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
Задался целью исправить это макросом, но не вышло
  1. local TableViewDlgId = "76FEC618-17B3-4DC0-B966-6073A589034F"
  2. Macro { description="";
  3.   area="Dialog"; key="BS"; flags="NoSendKeysToPlugins";
  4.   condition=function()
  5.     return Dlg.Id==TableViewDlgId and Menu.FilterStr()~=""
  6.   end;
  7.   action=function() mf.beep() Keys"BS" end;
  8. }
Я надеялся что NoSendKeysToPlugins поможет, но видимо дело в том, что TableView это не плагин...
Как же быть?

Хочется иметь возможность нажать честную клавишу не передавая её обработчику диалога.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Sat 06 Apr, 2013 22:21

John Doe wrote:Хочется иметь возможность нажать честную клавишу не передавая её обработчику диалога.
Допустим, получилось бы. А как тогда редактировать фильтр?

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

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

Post by John Doe » Sat 06 Apr, 2013 22:31

Не уверен что понял вопрос.

Задача в том, чтобы при непустом фильтре пропустить обработчик плагина/скрипта, и передать клавишу в фаровский обработчик, а он уже позаботится о фильтре.
(я могу ошибаться, т.к. не вник ещё в тонкости обработки событий диалогов)

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Sat 06 Apr, 2013 22:34

Насколько я понимаю, при включённом фильтре как раз нажатия не доходят до обработчика скрипта, а прямо идут в фаровский обработчик.

А, попробовал сейчас - я не прав. Просто "чукча не читатель" (я разрабатываю этот скрипт, но пока что не пользовался им совершенно).
Last edited by Shmuel on Sat 06 Apr, 2013 22:39, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

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

Post by John Doe » Sun 07 Apr, 2013 16:01

Code: Select all

showDialog('_G',)    - отображает таблицу _G, получая её по адресу
Работает со всеми глобальными таблицами, но локальные получить не может.
Исправимо?

(о том, что можно явно указать я знаю)

P.S.
добавил пока в функцию PathToTable строку setfenv(func, getfenv(4))

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Sun 07 Apr, 2013 20:39

John Doe wrote:Работает со всеми глобальными таблицами, но локальные получить не может.
Исправимо?
Думаю, что всё исправимо, но я как бы сейчас не в теме, так как давно сабж не трогал (и не пользуюсь). Может когда-нибудь снова возьмусь.

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

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

Post by John Doe » Sun 07 Apr, 2013 20:49

Если вдруг, то вот ещё пожелания:
[*] диалог маленький, и если ключи какой-то таблицы достаточно длинные, то нет никакой возможности их увидеть полностью.
В lua_explorer если открыть такой элемент на просмотр, то ключ будет в заголовке, а в tableview и этого нет

[*] по кнопке Down курсор переходит из поля ввода в листбокс.
По кнопке Up желательно иметь возможность вернуться из листбокса в поле ввода

User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

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

Post by John Doe » Fri 24 Jul, 2015 15:37

Вложение в первом посте обновлено на основании актуальных исходников.

Shmuel
Posts: 5164
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 15 times
Been thanked: 145 times

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

Post by Shmuel » Fri 24 Jul, 2015 15:44

John Doe wrote: Вложение в первом посте обновлено на основании актуальных исходников.
Спасибо. Вообще-то ничего пока со скриптом не делаю, но как-то на днях запустил после большого перерыва и увидел, что не работает (после одного из изменений в Фаре). Починил.

Post Reply

Return to “Полезные макросы и скрипты”