Управление custom-колонками с помощью lua-скрипта

Разработка Far.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Управление custom-колонками с помощью lua-скрипта

Post by zg »

4203. экспериментально, чтобы понять стоит ли вообще двигаться в этом направлении и насколько тема актуальна.
для каждого файла собираются все колонки и передаются luamacro.
в скриптах доступна функция Panel.AddCustomDataCallback с помощью которой можно зарегистрировать обработчики данных колонок.
данные приходят в виде {{Id=GUID1,Text="text1"},{Id=GUID2,Text="text2"},FileName="filename"}. их можно менять по своему усмотрению. если обработчик вернул true, то обработка продолжается. при исчерпании обработчиков все строки склеиваются в одну и возвращаются фару.
если какой-то обработчик вернул false, обработка прекращается, для вывода используется старое поведение. абстрактный пример обработчика:
  1. local one,two=win.Uuid("20C6FAE1-7E67-4264-985C-41E55421276B"),win.Uuid("8F75B38A-C483-4852-969D-D668E83CE250")
  2.  
  3. Panel.AddCustomDataCallback(
  4.  
  5.   function(data)
  6.  
  7.     for key,item in ipairs(data) do
  8.  
  9.       if item.Id==one then item.Text="{"..item.Text.."}"
  10.  
  11.       elseif item.Id==two then data[key]=nil
  12.  
  13.       end
  14.  
  15.     end
  16.  
  17.     return true
  18.  
  19.   end
  20.  
  21. )
вопросы:
1. надо ли это вообще?
2. нужна ли поддержка нескольких обработчиков?
3. нужна ли поддержка более одной колонки (C1-C9)? если да, как это всё разруливать?
4. возможно какие-то другие конструктивные пожелания.

Примечание модератора: тема отделена от обсуждения GetCustomDataW и FreeCustomDataW.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel »

zg wrote: 1. надо ли это вообще?
В текущем состоянии - не уверен. Сейчас можно только модифицировать (или удалять) текст кастомной колонки, поступивший от какого-либо плагина. Вот создавать "с нуля" текст кастомной колонки (сделать несложно, прямо в LuaMacro, без модификации Фара), это другое дело.
zg wrote: 2. нужна ли поддержка нескольких обработчиков?
Скорее всего - не нужна, но она не мешает.
zg wrote: 3. нужна ли поддержка более одной колонки (C1-C9)? если да, как это всё разруливать?
Дополнительным параметром в функции callback'а ?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg »

Shmuel wrote:
zg wrote: 1. надо ли это вообще?
В текущем состоянии - не уверен. Сейчас можно только модифицировать (или удалять) текст кастомной колонки, поступивший от какого-либо плагина. Вот создавать "с нуля" текст кастомной колонки (сделать несложно, прямо в LuaMacro, без модификации Фара), это другое дело.
речь именно про модификацию. так как конфигуратор типа тэцэшного вряд ли кто напишет, то как вариант.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel »

zg wrote: речь именно про модификацию
За других говорить не буду, но мне эта фича, в таком виде, как сейчас, навряд ли понадобится.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Maximus5 »

Не понятно, что значит "модификация"?
Допустим, я хочу показать для файловых панелей в C1 статус svn, а в C2 статус git. Это возможно?
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg »

Maximus5 wrote:Не понятно, что значит "модификация"?
от колонковых плагинов приходят строки, для конкретного файла. в обработчике с ними можно делать всё что угодно, результат возвращается фару.
Maximus5 wrote:Допустим, я хочу показать для файловых панелей в C1 статус svn, а в C2 статус git. Это возможно?
сейчас нет. сейчас только с0. для поддержки c1-c9 нужно выяснить:
1. нужно ли это вообще.
2. если нужно, то нужно ли много обработчиков или достаточно одного. потому как если нужно много, то непонятно, как разруливать ситуации типа, первый обработчик сказал статус svn класть в c1, второй в c9.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel »

zg wrote: для поддержки c1-c9 нужно выяснить:
1. нужно ли это вообще.
Поддержка c1-c9 нужна, обработчики не очень нужны.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by HaRT »

Shmuel wrote: Поддержка c1-c9 нужна, обработчики не очень нужны.
Присоединяюсь.
Идеально было бы иметь один плагин/скрипт–диспетчер и контент-провайдеры в виде под-плагинов/скриптов.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by John Doe »

zg wrote: нужно ли много обработчиков или достаточно одного.
Лучше предусмотреть много.
Они ведь могут выполнять и разные функции.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg »

т.е. опрос всех плагинов для показа любой колонки никого не смущает?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Shmuel »

zg wrote: т.е. опрос всех плагинов для показа любой колонки никого не смущает?
Не всех плагинов, а только экспортирующих GetCustomDataW (или что там будет вместо неё).
Не любой колонки, а только типа C0...C9.
User avatar
zg
zero-gravity
Posts: 6015
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by zg »

Shmuel wrote:Не всех плагинов, а только экспортирующих GetCustomDataW (или что там будет вместо неё).
Не любой колонки, а только типа C0...C9.
да, конечно. мне казалось, что это очевидно из контекста, сорри.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Maximus5 »

Вообще не понятно зачем нужны "С0" плагины если можно все на lua написать?
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by John Doe »

zg wrote:т.е. опрос всех плагинов для показа любой колонки никого не смущает?
А что именно тут должно смущать?
В некоторых плагинах предусмотрено ограничение по маске.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

обсуждение GetCustomDataW и FreeCustomDataW.

Post by Maximus5 »

Подумалось... Ок, пусть будет (несколько) плагинов с GetCustomDataW, на луа может быть не удобно например версии из exe/dll дергать.
Плагины и сейчас есть. И плагины возвращают строки для C0.
А вот "конфигуратор" пусть будет в луа. Но он должен уметь задать любую из колонок C0..C9. На основе (но не только) данных плагинов.
То есть я ге вижу смысла делать более одного луа-обработчика. Иначе возникнет каша. А при желании - можно из скрипта конфигуратора любые другие луа-модули звать.
Post Reply

Return to “Development”