Observer — распаковка файлов из различных контейнеров

Здесь можно обсудить ваш любимый плагин.
Ariman
Posts: 1233
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman » Mon 31 Aug, 2009 11:29

Тема для обсуждения плагина Observer.
Плагин предназначен только для распаковки файлов. Запаковка/редактирование архивов не планируется.

Хотелки/баги:

Известные проблемы:

Планируемые новые модули:

Если "ничего не работает", то прежде чем писать сюда:


Сторонние модули:
Dir — поддержка вывода команд dir и ls в качестве виртуального архива. (на версии 1.10 работать не будет в связи с изменением API модулей)
Inno Setup - поддержка файлов Inno Setup (сделан на основе innounp).

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

Observer — распаковка файлов из различных контейнеров

Post by HaRT » Sat 24 Jan, 2015 15:06

Latest post of the previous page:

Ariman wrote: теперь хоть консоль не висячая
Строго говоря, по-прежнему висячая, ведь пользователь ничего не может даже посмотреть, пока файлы читаются. Но теперь хотя бы понятно, что происходит.
Ariman wrote: Предлагайте варианты, обсудим
О, мне только дай волю, я напредлагаю!
Вариант «дёшево и сердито» я уже предложил — запихать все адресные поля в Owner.
Ну а идеально было бы иметь возможность настроить, в какой кастомной колонке какие свойства элемента отображать, притом с возможностью склейки и проверки. Соответствие (mapping) можно было бы задавать в виде выражений на Луа.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1233
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman » Wed 28 Jan, 2015 11:08

HaRT wrote:Ну а идеально было бы иметь возможность настроить, в какой кастомной колонке какие свойства элемента отображать, притом с возможностью склейки и проверки. Соответствие (mapping) можно было бы задавать в виде выражений на Луа.
Насчет выражений на Луа не уверен. Это придется его поддержку в плагин внедрять что-ли?

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

Observer — распаковка файлов из различных контейнеров

Post by HaRT » Wed 28 Jan, 2015 12:08

Ariman wrote: Насчет выражений на Луа не уверен. Это придется его поддержку в плагин внедрять что-ли?
Учитывая, что поддержка макросов и плагинов на Луа в Фаре есть „искаропки“, подозреваю, что есть и несложный способ вычислять Луа-выражения из плагина. Есть плагины, где подобное уже используется, и я надеюсь, что их авторы подскажут подход.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5740
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 204 times

Observer — распаковка файлов из различных контейнеров

Post by Shmuel » Wed 28 Jan, 2015 12:12

HaRT wrote: подозреваю, что есть и несложный способ вычислять Луа-выражения из плагина
MCTL_EXECSTRING

Ariman
Posts: 1233
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman » Wed 28 Jan, 2015 12:56

Только вот как это привязать к модулям. Они про Фар ничего не знают, а все нужные данные лежат внутри.

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

Observer — распаковка файлов из различных контейнеров

Post by HaRT » Wed 28 Jan, 2015 13:52

Ariman wrote: как это привязать к модулям
Я не знаю деталей внутреннего устройства плагина, но сам, наверно, делал бы как-то так:
0. Плагин (П) запрашивает у Модуля (М) порцию данных про элементы панели.
1. М создаёт или запрашивает у П некий Луа-контекст (К), в котором создаёт под нужными именами значения, затребованные в конфигурации, и затем отправляет в П код для выполнения.
2. П выполняет код посредством Фара (и тем самым модифицирует К) и возвращает управление в М.
3. М считывает из К интересующие его результаты и возвращает сформированные данные в П традиционным образом.
PS
При необходимости можно (почти) всё это делать асинхронно.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1233
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman » Thu 29 Jan, 2015 08:21

HaRT wrote:Я не знаю деталей внутреннего устройства плагина, но сам, наверно, делал бы как-то так:
Устройство то там простое: плагин говорит модулю открыть файл, потом запрашивает файлы по очереди. Инфа по файлам приходит в одинаковом формате для всех модулей. По сути, не сильно отличается от устройства мультиарка, только извлечение добавлено и нет внешних команд.
HaRT wrote:в котором создаёт под нужными именами значения, затребованные в конфигурации, и затем отправляет в П код для выполнения.
В таком случае, чтобы понять, что надо отправить в плагин, модулю придется парсить lua-код.

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

Observer — распаковка файлов из различных контейнеров

Post by HaRT » Thu 29 Jan, 2015 12:25

Ariman wrote: чтобы понять, что надо отправить в плагин, модулю придется парсить lua-код
Этого можно избежать, если изначально закидывать в контекст полный словарь всех известных свойств элементов. Альтернативно, в качестве варианта „дёшево и сердито“, можно возложить на пользователя обязанность отдельно явно прописать, какие свойства элементов потребуются в выражении на Луа.

Если этого не делать, то вместо самопального разбора надо придумывать какой-то Луа-специфичный способ. Увы, я в Луа не силён.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1233
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman » Tue 03 Feb, 2015 21:42

Мда. Как-то всё равно заморочено получается. Надо обдумать на досуге.

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

Observer — распаковка файлов из различных контейнеров

Post by HaRT » Tue 03 Feb, 2015 21:54

Ariman wrote:Мда. Как-то всё равно заморочено получается. Надо обдумать на досуге.
Так может сделаете пока самый базовый — но уже полезный — вариант: в PST отдавать в поле Owner одно из нескольких предопределённых свойств (From/To/CC/BCC/…) в соответствии с выбором пользователя, прописанным в конфиге?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Ariman
Posts: 1233
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 12 times
Been thanked: 26 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by Ariman » Wed 04 Feb, 2015 09:23

Разве что в C0. Мое мнение, что адреса в Owner не подходят, не изменилось. А разницы в какую колонку засовывать особой нет. Сложность именно в продвинутой конфигурации и поддержке Lua.

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

Observer — распаковка файлов из различных контейнеров

Post by John Doe » Wed 04 Feb, 2015 09:35

Ariman wrote: Разве что в C0.
На плагиновой панели не может быть C0

Shmuel
Posts: 5740
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 204 times

Observer — распаковка файлов из различных контейнеров

Post by Shmuel » Wed 04 Feb, 2015 09:39

John Doe wrote: На плагиновой панели не может быть C0
Может. От C0 до C9 (до 10 кастомных колонок).

User avatar
zg
zero-gravity
Posts: 5542
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 85 times
Contact:

Observer — распаковка файлов из различных контейнеров

Post by zg » Wed 04 Feb, 2015 10:22

John Doe wrote:На плагиновой панели не может быть C0
вот откуда вы это берёте-то?

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

Observer — распаковка файлов из различных контейнеров

Post by John Doe » Wed 04 Feb, 2015 10:24

Попутал с контент-колонками. Простите великодушно.

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

Observer — распаковка файлов из различных контейнеров

Post by John Doe » Wed 04 Feb, 2015 11:29

Ariman wrote:Сложность именно в продвинутой конфигурации и поддержке Lua.
Плагин получает от модуля все свойства, формирует из них массив {имясвойства1,значение1,имясвойства2,значение2,...}, и передаёт данные в lua-скрипт (этот массив + дополнительную информацию: имя файла, имя модуля, ширину колонки, и.т.п.).
Обратно получает результирующую строку, которую и отображает в C0.

Если получать все свойства затратно, то можно задавать необходимые в ini-файле модуля.

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

Observer — распаковка файлов из различных контейнеров

Post by HaRT » Fri 06 Feb, 2015 13:31

Ariman wrote:
fibre wrote:раз сделаете поддержку формата PST, то, может быть, и OST тоже? (не исключаю вариант, что это тот же самый формат, просто расширение другое).
Ну если мелкософтская SDK поймет эти файлы, то поддержка автоматом получится. Если нет, посмотрим что можно сделать. Выложи примерчик, чтобы проверить можно было.
Похоже, что не поддерживает (или оно просто в модуле не доделано?). Я попробовал открыть OST как PST — никакого эффекта.
Прошу занести поддержку формата OST в список хотелок. Есть и соответствующая библиотека: libpff; возможно, и ещё что-то найдётся… Тестовые данные смогу изготовить и предоставить.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

Return to “Обсуждение плагинов”