Page 1 of 5

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

Posted: Sun 30 Nov, 2014 11:34
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. Panel.AddCustomDataCallback(
  3.   function(data)
  4.     for key,item in ipairs(data) do
  5.       if item.Id==one then item.Text="{"..item.Text.."}"
  6.       elseif item.Id==two then data[key]=nil
  7.       end
  8.     end
  9.     return true
  10.   end
  11. )
вопросы:
1. надо ли это вообще?
2. нужна ли поддержка нескольких обработчиков?
3. нужна ли поддержка более одной колонки (C1-C9)? если да, как это всё разруливать?
4. возможно какие-то другие конструктивные пожелания.

Примечание модератора: тема отделена от обсуждения GetCustomDataW и FreeCustomDataW.

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

Posted: Sun 30 Nov, 2014 16:38
by Shmuel
zg wrote: 1. надо ли это вообще?
В текущем состоянии - не уверен. Сейчас можно только модифицировать (или удалять) текст кастомной колонки, поступивший от какого-либо плагина. Вот создавать "с нуля" текст кастомной колонки (сделать несложно, прямо в LuaMacro, без модификации Фара), это другое дело.
zg wrote: 2. нужна ли поддержка нескольких обработчиков?
Скорее всего - не нужна, но она не мешает.
zg wrote: 3. нужна ли поддержка более одной колонки (C1-C9)? если да, как это всё разруливать?
Дополнительным параметром в функции callback'а ?

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

Posted: Sun 30 Nov, 2014 21:30
by zg
Shmuel wrote:
zg wrote: 1. надо ли это вообще?
В текущем состоянии - не уверен. Сейчас можно только модифицировать (или удалять) текст кастомной колонки, поступивший от какого-либо плагина. Вот создавать "с нуля" текст кастомной колонки (сделать несложно, прямо в LuaMacro, без модификации Фара), это другое дело.
речь именно про модификацию. так как конфигуратор типа тэцэшного вряд ли кто напишет, то как вариант.

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

Posted: Sun 30 Nov, 2014 22:39
by Shmuel
zg wrote: речь именно про модификацию
За других говорить не буду, но мне эта фича, в таком виде, как сейчас, навряд ли понадобится.

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

Posted: Mon 01 Dec, 2014 09:46
by Maximus5
Не понятно, что значит "модификация"?
Допустим, я хочу показать для файловых панелей в C1 статус svn, а в C2 статус git. Это возможно?

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

Posted: Mon 01 Dec, 2014 10:47
by zg
Maximus5 wrote:Не понятно, что значит "модификация"?
от колонковых плагинов приходят строки, для конкретного файла. в обработчике с ними можно делать всё что угодно, результат возвращается фару.
Maximus5 wrote:Допустим, я хочу показать для файловых панелей в C1 статус svn, а в C2 статус git. Это возможно?
сейчас нет. сейчас только с0. для поддержки c1-c9 нужно выяснить:
1. нужно ли это вообще.
2. если нужно, то нужно ли много обработчиков или достаточно одного. потому как если нужно много, то непонятно, как разруливать ситуации типа, первый обработчик сказал статус svn класть в c1, второй в c9.

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

Posted: Mon 01 Dec, 2014 11:58
by Shmuel
zg wrote: для поддержки c1-c9 нужно выяснить:
1. нужно ли это вообще.
Поддержка c1-c9 нужна, обработчики не очень нужны.

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

Posted: Mon 01 Dec, 2014 12:51
by HaRT
Shmuel wrote: Поддержка c1-c9 нужна, обработчики не очень нужны.
Присоединяюсь.
Идеально было бы иметь один плагин/скрипт–диспетчер и контент-провайдеры в виде под-плагинов/скриптов.

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

Posted: Mon 01 Dec, 2014 18:43
by John Doe
zg wrote: нужно ли много обработчиков или достаточно одного.
Лучше предусмотреть много.
Они ведь могут выполнять и разные функции.

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

Posted: Mon 01 Dec, 2014 22:24
by zg
т.е. опрос всех плагинов для показа любой колонки никого не смущает?

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

Posted: Mon 01 Dec, 2014 22:35
by Shmuel
zg wrote: т.е. опрос всех плагинов для показа любой колонки никого не смущает?
Не всех плагинов, а только экспортирующих GetCustomDataW (или что там будет вместо неё).
Не любой колонки, а только типа C0...C9.

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

Posted: Mon 01 Dec, 2014 23:17
by zg
Shmuel wrote:Не всех плагинов, а только экспортирующих GetCustomDataW (или что там будет вместо неё).
Не любой колонки, а только типа C0...C9.
да, конечно. мне казалось, что это очевидно из контекста, сорри.

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

Posted: Mon 01 Dec, 2014 23:26
by Maximus5
Вообще не понятно зачем нужны "С0" плагины если можно все на lua написать?

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

Posted: Tue 02 Dec, 2014 09:42
by John Doe
zg wrote:т.е. опрос всех плагинов для показа любой колонки никого не смущает?
А что именно тут должно смущать?
В некоторых плагинах предусмотрено ограничение по маске.

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

Posted: Tue 02 Dec, 2014 11:05
by Maximus5
Подумалось... Ок, пусть будет (несколько) плагинов с GetCustomDataW, на луа может быть не удобно например версии из exe/dll дергать.
Плагины и сейчас есть. И плагины возвращают строки для C0.
А вот "конфигуратор" пусть будет в луа. Но он должен уметь задать любую из колонок C0..C9. На основе (но не только) данных плагинов.
То есть я ге вижу смысла делать более одного луа-обработчика. Иначе возникнет каша. А при желании - можно из скрипта конфигуратора любые другие луа-модули звать.