"Виртуализировать" вьювер

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
User avatar
HaRT
Moderator
Posts: 9769
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 128 times
Been thanked: 266 times

Re: "Виртуализировать" вьювер

Post by HaRT »

Latest post of the previous page:

Max Rusov wrote:Вот если бы все API было на интерфейсах, тогда - да. А так - как то выбивается...
“Дорога в тысячу миль начинается с первого шага.”
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ariman
Posts: 1306
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 13 times
Been thanked: 47 times
Contact:

Re: "Виртуализировать" вьювер

Post by Ariman »

Переезд на COM интерфейсы имел бы смысл, если бы планировалась интеграция с другими программами. А там, imho, совершенно ненужный багаж.
Max Rusov
Posts: 3643
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 15 times

Re: "Виртуализировать" вьювер

Post by Max Rusov »

Ну не скажи. Было бы удобно. Например, usecase: поисковый плагин, который может искать в файловых системах, эмулируемых другими плагинами. Запрашивается в текущей панели интерфейс IFarFileSystem и дергаются его методы... Среди них есть метод GetFile, возвращающий интерфейс IStream... Лепота...
User avatar
HaRT
Moderator
Posts: 9769
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 128 times
Been thanked: 266 times

Re: "Виртуализировать" вьювер

Post by HaRT »

Max Rusov wrote:Запрашивается в текущей панели интерфейс IFarFileSystem и дергаются его методы... Среди них есть метод GetFile, возвращающий интерфейс IStream... Лепота...
В целом да. Только не IFarFileSystem, а IStorage. 8)
Фар есть инструмент, а не нянька. © 2009 DrKnS
Max Rusov
Posts: 3643
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 15 times

Re: "Виртуализировать" вьювер

Post by Max Rusov »

Ну, это надо думать. Возможно, IFarFileSystem может имплементить и IStorage, но вряд-ли они могут быть тождественны. Все таки у Far'а своя специфика...
User avatar
HaRT
Moderator
Posts: 9769
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 128 times
Been thanked: 266 times

Re: "Виртуализировать" вьювер

Post by HaRT »

Только если и использовать COM-интерфейсы, то надо хорошо продумать, хотим ли мы завязывать Фар на подсчёт ссылок (это ещё полбеды) и регистрацию реализаций в реестре (вот это уже куда более тяжёлая штука, впрочем, необходимая для работы стандартных фабрик).
Фар есть инструмент, а не нянька. © 2009 DrKnS
Max Rusov
Posts: 3643
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 15 times

Re: "Виртуализировать" вьювер

Post by Max Rusov »

HaRT wrote:регистрацию реализаций в реестре
Вот этого - точно не надо.
Ariman
Posts: 1306
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 13 times
Been thanked: 47 times
Contact:

Re: "Виртуализировать" вьювер

Post by Ariman »

HaRT wrote:Только если и использовать COM-интерфейсы, то надо хорошо продумать, хотим ли мы завязывать Фар на подсчёт ссылок (это ещё полбеды) и регистрацию реализаций в реестре (вот это уже куда более тяжёлая штука, впрочем, необходимая для работы стандартных фабрик).
Вот именно такие довески к интерфейсам меня и напрягают. Идея в чистом виде может и хороша, но чтобы сделать реализовать COM интерфейс в плагине нужно будет написать ещё целую тучу кода.
Max Rusov
Posts: 3643
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 15 times

Re: "Виртуализировать" вьювер

Post by Max Rusov »

Да прямо - кучу. Посмотрите FarHints, например. В нем API субплагинов на интерфейсах. Размер субплагина ~12K, и это на Delphi. На C будет еще меньше...
User avatar
HaRT
Moderator
Posts: 9769
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 128 times
Been thanked: 266 times

Re: "Виртуализировать" вьювер

Post by HaRT »

Ariman wrote:чтобы сделать реализовать COM интерфейс в плагине нужно будет написать ещё целую тучу кода.
Это заблуждение.
Я реализовывал COM-сервера и по собственному опыту знаю, что оверхед небольшой.
К тому же мы вроде пока и не говорим про полновесные COM-объекты. Но повторюсь, это надо очень хорошо взвесить с точки зрения перспектив.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Ariman
Posts: 1306
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 13 times
Been thanked: 47 times
Contact:

Re: "Виртуализировать" вьювер

Post by Ariman »

Max Rusov wrote:Посмотрите FarHints, например. В нем API субплагинов на интерфейсах.
Так уж прям там полноценные COM интерфейсы? С регистрацией, счетчиком ссылок и т.п.
Я не против интерфейсов вообще. Мне идея тащить полновесный COM не нравиться.
HaRT wrote:Это заблуждение.
Я реализовывал COM-сервера и по собственному опыту знаю, что оверхед небольшой.
Это он небольшой если база есть. Как на делфи, например, где и счетчик ссылок готовый и регистратор и всё остальное. А если с нуля делать, то телодвижений хватает. Сделать то не проблема, но хочется удобств по максимуму :)
2useven10
Posts: 4303
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 218 times

Re: "Виртуализировать" вьювер

Post by 2useven10 »

Ariman
Posts: 1306
Joined: Fri 30 Nov, 2007 15:32
Location: Крым
Has thanked: 13 times
Been thanked: 47 times
Contact:

Re: "Виртуализировать" вьювер

Post by Ariman »

Я не совсем уловил как это всё с плагинами будет взаимодействовать то?
2useven10
Posts: 4303
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 218 times

Re: "Виртуализировать" вьювер

Post by 2useven10 »

Честно говоря, не знаю как это нужно делать...
Могу, например, добавить команды для ViewerControl ( ADD_VFILE, DEL_VFILE )...
Или надо добавить параметр [Far]Viewer / экспортировать [Far]ViewerEx ... ??
Maximus5
Posts: 3294
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 7 times
Contact:

Re: "Виртуализировать" вьювер

Post by Maximus5 »

Что-то такой подход мне не нравится.
1. Получается, что плагин должен регистрироваться как "виртуальный вьювер". В какой момент, собственно? Особенно, если он НЕ PF_PRELOAD? Imho, проще (и правильнее) добавить событий в ViewerEvent. А-ля VE_OPENVFILE / VE_READVFILE / VE_CLOSEVFILE (последнее ест-но если "интерфейс" был создан)
2. Текущая реализация не различает View/QView. А некоторые вещи нужно перехватывать только в QView (Anamorphosis)
User avatar
HaRT
Moderator
Posts: 9769
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 128 times
Been thanked: 266 times

Re: "Виртуализировать" вьювер

Post by HaRT »

И прошу не забыть, что ключевое достоинство просмотрщика — подгрузка файла по частям по мере надобности. На самом деле, интерфейс наподобие читательной части IStream был бы наиболее адекватен.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

Return to “Предложения и идеи”