Контент-плагины в фаре?

Разработка Far.
User avatar
John Doe
Бюрократ
Posts: 11095
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 66 times

Контент-плагины в фаре?

Post by John Doe » Mon 08 Dec, 2014 10:19

Shmuel wrote: IMHO, лучше сделать сразу хорошо.
Можно посмотреть, как другие делают.
http://www.totalcmd.net/download.php?id ... ters_guide

User avatar
HaRT
Moderator
Posts: 8022
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 99 times

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

Post by HaRT » Mon 08 Dec, 2014 12:30

John Doe wrote:Можно посмотреть, как другие делают.
http://www.totalcmd.net/download.php?id ... ters_guide
Кстати, да.
Если архитектура будет не слишком сильно отличаться, то и не слишком сложно будет написать адаптер, чтобы пользоваться имеющимися наработками.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Mon 08 Dec, 2014 13:18

John Doe wrote: Можно посмотреть, как другие делают.
HaRT wrote: Если архитектура будет не слишком сильно отличаться, то и не слишком сложно будет написать адаптер
В идеале это было бы правильно, но изучение данного материала займёт немало времени, что не предусмотрено.
Если кто-нибудь из вас может просто объяснить, как там делают, тогда можно будет учесть.

User avatar
HaRT
Moderator
Posts: 8022
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 99 times

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

Post by HaRT » Mon 08 Dec, 2014 13:25

Shmuel wrote: изучение данного материала займёт немало времени
Так ведь
Shmuel wrote: IMHO, лучше сделать сразу хорошо. Столько времени обходились, можно и не пороть горячку.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Mon 08 Dec, 2014 13:30

HaRT wrote:Так ведь
Shmuel wrote: IMHO, лучше сделать сразу хорошо. Столько времени обходились, можно и не пороть горячку.
Тем не менее, изучение доп. материалов не входит в выделенную "смету" времени. Завтра кто-то найдёт ещё какие-либо материалы для изучения и т.д. Я же не на зарплате это делаю.

User avatar
HaRT
Moderator
Posts: 8022
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 99 times

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

Post by HaRT » Mon 08 Dec, 2014 13:40

Shmuel, своё неконструктивноевысказывание я разместил в соответствующей теме.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by John Doe » Mon 08 Dec, 2014 13:52

Shmuel wrote: В идеале это было бы правильно, но изучение данного материала займёт немало времени, что не предусмотрено.
Мне показалось что материала там немного, только апи.
Посмотреть на декларации (и подумать для чего всё именно так) конечно тоже требует времени, но также может впоследствии сэкономить гораздо больше времени, которое (гипотетически) потребовалось бы на переделки.
Shmuel wrote:Если кто-нибудь из вас может просто объяснить, как там делают, тогда можно будет учесть.
Если надо, то я могу своими словами пересказать, что мне показалось важным.

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Mon 08 Dec, 2014 14:08

John Doe wrote: Если надо, то я могу своими словами пересказать, что мне показалось важным.
Пожалуйста.

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Tue 09 Dec, 2014 00:12

John Doe
Любопытство пересилило, и я бегло (пока) ознакомился с этим документом. Чтиво весьма полезное и интересное, но... чтобы реализовать всё это, нужно на порядок-два больше времени, чем я себе наметил. Может быть что-то позаимствуем, почитаю ещё.

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

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

Post by John Doe » Tue 09 Dec, 2014 10:19

Shmuel wrote: чтобы реализовать всё это, нужно на порядок-два больше времени, чем я себе наметил. Может быть что-то позаимствуем, почитаю ещё.
Реализация аналогичных возможностей в полном объёме это действительно большая задача.
Но ведь не обязательно делать всё сразу, главное заранее продумать интерфейсы, чтобы в будущем не возникло потребности их ломать.

Ниже я подобрал список потенциальных возможностей content-плагинов, предлагаю по возможности обсудить:
  • Плагин может предоставлять произвольное количество полей.
    Поля индексируются числом, но плагин предоставляет функцию для получения их имён (локализованных).
  • Помимо имени поля плагин также может предоставить перечень единиц измерения (локализованных).
  • Данные типизированы (строка, число, перечисление (ft_multiplechoice), логическое, размер файла, дата, ...).
    Это позволит применять к ним штатные средства форматирования и сортировки.
  • Извлекаемые плагинами данные могут использоваться не только для отображения в колонках.
    • В TC они также используются в утилите переименования , в сортировке (ft_comparecontent), и в поиске (для этого у них отдельный тип колонок ft_fulltext, но не факт что это хорошо)
      ContentCompareFiles: используется при сравнении файлов по содержимому (Advanced Compare), с возможностью запросить прогресс (PROGRESSCALLBACKPROC)
    • В фаре кроме того (в перспективе) можно было бы использовать данные в QView и Anamorphosis (обсуждение).
      Имхо для всего этого стоит предусмотреть параметр, регулирующий детализацию вывода (в том числе количество символов/строк)
  • ContentGetDefaultSortOrder: у плагина есть возможность задать умолчательный порядок сортировки (по возрастанию/убыванию)
  • ContentSetValue/ContentEditValue: плагины могут предоставлять функции для изменения данных (например аттрибуты файла, описание).
  • ContentSendStateInformation: xост может информировать плагины об изменении состояния (например если сменилась папка, то можно очистить кэш)
    Очевидно, что это полезно не только контент плагинам
  • Для ускорения отображения данных опрос плагинов проходит в 2 прохода.
    Сначала опрашиваются "быстрые" поля, а "медленные" опрашиваются позже, в фоне.
    У плагинов предусмотрена специальная функция, позволяющая прервать извлечение данных (если папка изменилась)
  • В отличии от фара TC не опрашивает все плагины подряд.
    Для принятия решения о вызове того или иного плагина используется что-то вроде мини скрипта ("DetectString").
    При установке этот "DetectString" запрашивается у плагина, но впоследствии пользователь волен отредактировать на своё усмотрение.
  • Также хорошо бы предусмотреть:
    - доступ к данным в фильтрах панели (и в раскраске)
    - работу и на плагиновых панелях.
И пользовательские кастомные режимы панелей настраиваются в TC более чем наглядно (Configuration/Options/Custom columns/New, скриншот предоставить сейчас не могу).
В колонке может быть как поле одного конкретного плагина, так и нескольких, по шаблону.

gotar
Posts: 293
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

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

Post by gotar » Tue 09 Dec, 2014 11:08

По моему Вы предлагаете слишком широко шагать. Сейчас нужно сформировать базовый минимальный интерфейс, который потом можно нарастить всякими плюшками. В этом базовом интерфейсе должна передаваться информация, которая задается в текущем интерфейсе фара, и которую ниоткуда кроме фара нельзя получить. Насколько я понимаю, сейчас это информация о номерах колонок и их ширине. О том как сливать информацию в одной колонке для разных типов файлов, форматировании данных и т.п. должен решать сам plugin/lua script, возможно читая свои конфигурационные файлы. Как извлечь информацию для отображения на первом этапе может решать тоже lua script, возможно дергая content-плагины с их текущим интерфейсом. Я предполагаю, что в большей или меньшей степени все сегодняшние пользователи Фара умеют программировать и способны написать скрипт, умещающийся на один экран имея образец для подражания. Вопросы интерфейсов для сортировки и qview отложить на потом.

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

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

Post by John Doe » Tue 09 Dec, 2014 11:18

gotar wrote: Сейчас нужно сформировать базовый минимальный интерфейс, который потом можно нарастить всякими плюшками.
Об этом я сказал в первом же абзаце.
Нужно этот "базовый минимальный интерфейс" сформировать так, чтобы было возможность его нарастить.

Что касается конфигурации посредством lua-скрипта, то это уже обсуждалось: viewtopic.php?f=54&t=9207
Update: разделил темы

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

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

Post by Shmuel » Tue 09 Dec, 2014 12:41

John Doe wrote: Реализация аналогичных возможностей в полном объёме это действительно большая задача.
Но ведь не обязательно делать всё сразу, главное заранее продумать интерфейсы, чтобы в будущем не возникло потребности их ломать.
Давайте попробуем исходить из наших скромных возможностей. Или синица в руке, или журавль в небе. Либо мы сейчас делаем простой многоколоночный вариант, сильно уступающий тому, что в TC, либо начинаем продумывать интерфейсы, дизайн и т.д. и ... остаёмся с одной колонкой. Дело в том, что все благие намерения останутся таковыми из-за отсутствия исполнителей. zg свой вариант откатил, я к большой затрате времени не готов, а прочие из команды - молчат.

Тот вариант, что я наметил, весьма прост и поддаётся реализации за приемлемое для меня время. В первом приближении он уже работает, но хотелось бы больше продумать детали, и, возможно, ещё опробовать некоторые идеи. Этот мой вариант не обязательно лучше, чем вариант zg. Чем-то лучше, чем-то хуже, это как посмотреть.

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

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

Post by John Doe » Tue 09 Dec, 2014 12:56

Shmuel wrote: Либо мы сейчас делаем простой многоколоночный вариант, сильно уступающий тому, что в TC, либо начинаем продумывать интерфейсы, дизайн и т.д. и ... остаёмся с одной колонкой.
В идеале было бы двигаться постепенно.
Реализовать для начала минимум функций, о котором вы говорите, но с возможностью расширения в дальнейшем.
Например, предусмотреть в интерфейсе различные типы данных сразу, но реализовать пока только строку, и т.п.

Shmuel
Posts: 5094
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 11 times
Been thanked: 140 times

Контент-плагины в фаре?

Post by Shmuel » Mon 15 Dec, 2014 00:17

Code: Select all

shmuel 15.12.2014 00:18:36 +0200 - build 4214

1. Экспериментально: колонки C0 больше нет, есть контент-колонки плагинов в любом количестве.
   Типы (они же имена) колонок задаются в режимах панелей в угловых скобках, например: <Foo>,<Bar>.
Сделал. Можно играться.
Всё ещё сыровато, но время поджимает и "merge" делать становится всё сложнее.
Ссылки на API в низу страницы http://api.farmanager.com/ru/exported_f ... index.html.
Не проблема будет откатить, если сильно не понравится.

gotar
Posts: 293
Joined: Sun 06 Sep, 2009 12:34
Has thanked: 8 times

Контент-плагины в фаре?

Post by gotar » Mon 15 Dec, 2014 11:30

Информацию о том как форматировать колонку можно узнать из имени колонки. А где брать информацию о ширине колонки? Вопрос о том как в одной колонке показывать информацию о файлах разных типов возлагается на контент-плагин?

Post Reply

Return to “Development”