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

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

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

Post by Shmuel »

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


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

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

ПРЕДУПРЕЖДЕНИЕ: РЕДАКТИРОВАНИЕ ВЕЛИЧИН Lua МОЖЕТ ПРИВЕСТИ К НЕРАБОТОСПОСОБНОСТИ МАКРОСОВ И ПРОЧИМ НЕЖЕЛАТЕЛЬНЫМ ПОСЛЕДСТВИЯМ.
Attachments
tableview-20150720.7z
Commits on Jul 20, 2015
(5.96 KiB) Downloaded 163 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 »

Спасибо, отличный скрипт.
А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
2B OR NOT 2B = FF (Иногда code - это просто код. Почти Дйерф Омолш Днумзигис)
To ban or not to ban, that is the question. ©
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

DAtaMan wrote:А возврат по Backspace лучше заменить на что-то другое, т.к. конфликтует с удалением символа в фильтре (если он включён по Ctrl-Alt-F)
Заменить-то можно, но фильтр этот - неэффективен, так как не может фильтровать только по одной колонке. Надо наверное делать встроенный фильтр.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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

Исправимо?
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Это действительно баг (известный мне). Исправимый.
Утилита была написана несколько лет назад для LuaFAR-плагинов. Её дизайн предполагает, что диалог во время действий пользователя всё время открыт, а изменения отображаются в списке. Свойства (properties), которых не было изначально, были добавлены в последнее время, и тут-то выяснилось, что прежде, чем их считывать, диалог надо закрывать, а после считывания - переоткрывать. Но это пока не сделано.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post 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.
Надо бы актуализировать шапку, и тогда можно будет перенести тему в форум готовых макросов.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe wrote:Актуализировал макрос, взяв свежий исходник с https://github.com/shmuz/luafar4editor/
В модуле заменил вызов showDialog на return showDialog (я с luafar4editor знаком плохо, и не знаю какой смысл был в модуле который ничего не возвращает).
Причина проста: файл лежит вместе с модулями, но модулем не является. Скрипты (не модули) в LF4Ed также ищутся с использованием package.path.
John Doe wrote:Надо бы актуализировать шапку, и тогда можно будет перенести тему в форум готовых макросов.
Полностью вам доверяю.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post 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 это не плагин...
Как же быть?

Хочется иметь возможность нажать честную клавишу не передавая её обработчику диалога.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe wrote:Хочется иметь возможность нажать честную клавишу не передавая её обработчику диалога.
Допустим, получилось бы. А как тогда редактировать фильтр?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

Задача в том, чтобы при непустом фильтре пропустить обработчик плагина/скрипта, и передать клавишу в фаровский обработчик, а он уже позаботится о фильтре.
(я могу ошибаться, т.к. не вник ещё в тонкости обработки событий диалогов)
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

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

А, попробовал сейчас - я не прав. Просто "чукча не читатель" (я разрабатываю этот скрипт, но пока что не пользовался им совершенно).
Last edited by Shmuel on Sat 06 Apr, 2013 22:39, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Code: Select all

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

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

P.S.
добавил пока в функцию PathToTable строку setfenv(func, getfenv(4))
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

John Doe wrote:Работает со всеми глобальными таблицами, но локальные получить не может.
Исправимо?
Думаю, что всё исправимо, но я как бы сейчас не в теме, так как давно сабж не трогал (и не пользуюсь). Может когда-нибудь снова возьмусь.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

[*] по кнопке Down курсор переходит из поля ввода в листбокс.
По кнопке Up желательно иметь возможность вернуться из листбокса в поле ввода
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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

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