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

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Latest post of the previous page:

На счет 'второй половины' - уже не раз говорили.

Мне видится такой сценарий
  • Юзер жмет F3 или CtrlQ на файле (и если таки открывается вьювер, а не кто-то другой по ассоциации, то)
  • Фар посылает во все плагины, экспортирующие ProcessViewerEventW событие (новое) VE_ANALYSE с информацией о файле: откуда открываем (F3/CtrlQ), путь, размер,...
  • Если никто из плагинов событие не обработал - работаем как обычно (показать содержимое файла во встроенном вьювере)
  • Если же (>=1) плагинов согласились, то выбираем плагин как и с архивами (по CtrlPgDn), и в выбранный посылаем событие (новое) VE_OPENVFILE, чтобы этот плагин создал интерфейс для работы с файлом
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Maximus5 wrote:Причем перехват идет только в CtrlQ
Зачем анаморфозису вообще что-то перехватывать?
Имхо стоит подойти с другой стороны: сделать область быстрого просмотра настраиваемой, и позволить выводить туда к примеру содержание предоставляемое плагинами, типа С0.
Maximus5 wrote:[*]Фар посылает во все плагины, экспортирующие ProcessViewerEventW событие (новое) VE_ANALYSE с информацией о файле: откуда открываем (F3/CtrlQ), путь, размер,...
Допустим открыта панель FTP. Зачем по F3 посылать что-то куда-то, если заведомо известно что обработать событие должен хост-плагин панели?

P.S.
И что насчёт 'третьей половины': виртулизировать поиск и т.п.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

John Doe wrote:
Maximus5 wrote:Причем перехват идет только в CtrlQ
Зачем анаморфозису вообще что-то перехватывать?
Имхо стоит подойти с другой стороны: сделать область быстрого просмотра настраиваемой, и позволить выводить туда к примеру содержание предоставляемое плагинами, типа С0.
Странное "имхо". Может ты читал невнимательно? Обрисуй сценарий (алгоритм) как должна работать "настраиваемая" область просмотра.
"Перехват" анаморфозис выполняет сейчас, т.к. апи не было. А как-раз апи я и предлагаю.
John Doe wrote:
Maximus5 wrote:[*]Фар посылает во все плагины, экспортирующие ProcessViewerEventW событие (новое) VE_ANALYSE с информацией о файле: откуда открываем (F3/CtrlQ), путь, размер,...
Допустим открыта панель FTP. Зачем по F3 посылать что-то куда-то, если заведомо известно что обработать событие должен хост-плагин панели?
А какая нафиг разница, открывается файл с диска или из ахрива/плагина? Когда я жму F3 или CtrlQ - я ожидаю увидеть содержимое файла, или, что предлагается, некую декодированную информацию. Какая мне разница, откуда фар достанет этот файл??
John Doe wrote:И что насчёт 'третьей половины': виртулизировать поиск и т.п.
А там, имхо, вообще обсуждать нечего. Все более-менее однозначно. И интерфейс я уже предложил
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Maximus5 wrote:Обрисуй сценарий (алгоритм) как должна работать "настраиваемая" область просмотра.
В простейшем случае туда просто выводятся данные C0-колонок.
Maximus5 wrote:А какая нафиг разница, открывается файл с диска или из ахрива/плагина? Когда я жму F3 или CtrlQ - я ожидаю увидеть содержимое файла, или, что предлагается, некую декодированную информацию. Какая мне разница, откуда фар достанет этот файл??
Пользователя не интересует откуда возьмутся данные, да.
Но разница откуда открывается файл есть: владелец панели заведомо знает что делать с данными, и зачем опрашивать какие-то другие плагины мне неясно.
Возможно я невнимательно читал, да, поэтому и прошу пояснить.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

В простейшем случае туда просто выводятся данные C0-колонок.
Хм. Возможно, конечно, но только не C0.
Данные для отображения в колонке панели и области QView могут различаться не только форматом, но и степенью детализации. То есть, нужно или городить новый интерфейс для извлечения "колонок" C1, или таки доводить до ума существующий.
Но для "доведения" нужно с ТЗ определиться.

С одной стороны, разработчику плагина (да и фара) проще отдать/взять данные одним махом (блоком памяти), а с другой - нафига тогда этот SVFile делали? Честно говоря, я себе не представляю UseCase, когда нельзя отдать данные одним блоком.
Но разница откуда открывается файл есть: владелец панели заведомо знает что делать с данными, и зачем опрашивать какие-то другие плагины мне неясно.
Возможно я невнимательно читал, да, поэтому и прошу пояснить.
Разницы как раз нет. На твоем же примере - на ftp лежит файл 1234.mp3, я хочу в области QView смотреть информацию по нему, а не содержимое. Ты же не будешь утверждать, что владелец панели (плагин ftp) должен знать как извлекать эту информацию?
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

Для режима QuickView, на мой взгляд, придётся научить вьювер работать с цветом.
Например на каждый символ - 4 байта: 2 код (1200 или заданный CodePage) и 2 индекс цвета (из стандартного набора или из заданной палитры). Для этого интерфейс VFile надо немного расширить.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Эээ, стой, нафига FarColor делался? Никаких индексов. Структура уже есть.

А вот на счет цвета - это хорошо. На отсутствие колорера во вьювере часто жалуются)
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

Я имел ввиду примерно так...
VFile {
...
bool GetPalette(int &nitem, const FarColor* &palette) { ... }
bool GetFormat( uint &cpdepage, uint &clormode ) { codepage = 1200; colormode = 1; returt true; /* если false - дефолт - как сейчас */ }
};
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Ты чего, какая палитра в TrueColor? Кто ее тебе заранее сформирует?
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

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

Post by 2useven10 »

палитра неудачное название. пусть будут используемые цвета (colors) - обычный текст, selected, ...
сформирует тот кто отдаёт данные для просмотра. просто FarColor на каждый символ - жаба душит :)
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

Не мудри. В редакторе и панелях, жаба значит не душит. А во вьювере внезапно объявится? Чем он такой особенный?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Maximus5 wrote:Данные для отображения в колонке панели и области QView могут различаться не только форматом, но и степенью детализации. То есть, нужно или городить новый интерфейс для извлечения "колонок" C1, или таки доводить до ума существующий.
Было бы неплохо довести до ума существующий, и это кстати обсуждалось в теме C0.

Maximus5 wrote:На твоем же примере - на ftp лежит файл 1234.mp3, я хочу в области QView смотреть информацию по нему, а не содержимое. Ты же не будешь утверждать, что владелец панели (плагин ftp) должен знать как извлекать эту информацию?
Да, мы тут просто о разных вещах говорим.
1. Получить файл (например с фтп), и не весь, а только часть, требуемую для 2.
2. Получить информацию для C0 и QView.
Перед тем как перейти к 2 надо сделать 1.

В моём понимании эти шаги должны быть разделены, и 1 это нижний уровень, на котором уже будут строиться и 2, и поиск, и всё остальное.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

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

Post by Maximus5 »

На счет C0.
Может, лучше сделать 2 (или даже 3) различных интерфейса, чтобы уменьшить набор плагинов, который фар будет опрашивать при загрузке данных в панелях/вьювере. Вполне возможно, что плагины, отдающие информацию для панелей - не будут отдавать данные для QView.

Хотя, вот подумалось. Каталог исходников под source control. Сейчас есть svn_C0. Мне информации в колонке вполне достаточно. Но может кому-то хочется видеть ее в QView? Не слепленную в одну строку как в панелях, а например

Code: Select all

file: changelog
svn: 6551
diz: здесь был вася
Причем, думаю, интересно видеть не только информацию от плагинов, но и само содержимое файла. Причем, вероятно сразу, чтобы не требовалось переключать "вид" в QView.
Хотя, на счет переключения "вида" в QView можно и подумать.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

Maximus5 wrote:Вполне возможно, что плагины, отдающие информацию для панелей - не будут отдавать данные для QView.
Однозначно та же самая информация но в QView не помешает.
Но у каждого различные потребности, и поэтому всё хозяйство необходимо будет как-то настраивать.
И это возвращает нас к идее мета-плагина.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

2useven10 wrote:что такое сохранение позиции при переключении режимов просмотра?
позиция имеет смысл для реальных данных, которые показываются через интерфейс (вьювер не имеет к ним доступа),
у каждой такой 'проекции' позиции свои, и 'сохранять' их очень сомнительное занятие.
Начну издалека.
Важное достоинство имеющегося сейчас просмотрщика в том, что он не грузит в память весь файл, а вычитывает из него только нужный фрагмент. При этом есть такое понятие, как текущая позиция в файле — она соответствует первому символу, отображаемому в окне просмотрщика. (В случае наличия выделения при поиске есть смысл ориентироваться на найденное, но это уже детали.) Так вот предположим, некий гипотетический плагин предоставляет аналог hex-просмотрщика, но в переключаемых системах счисления (двоичной, восьмеричной, шестнадцатеричной, …). Поскольку то, что он отображает, взаимно-однозначно соответствует исходным данным, понятие текущей позиции переносится в него один в один. Когда пользователь переключает, по какому основанию (или с какой разбивкой на группы) отображать данные, он ожидает, что будет видеть тот же фрагмент данных, что и до переключения.

Разумеется, кроме плагина, формирующего текст для отображения, никто не знает, как позиции в нём соответствуют позициям в исходном тексте, поэтому в программном интерфейсе должна быть предусмотрена возможность об этом позаботиться.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

John Doe wrote:1. Получить файл (например с фтп), и не весь, а только часть, требуемую для 2.
2. Получить информацию для C0 и QView.
Перед тем как перейти к 2 надо сделать 1.

В моём понимании эти шаги должны быть разделены, и 1 это нижний уровень, на котором уже будут строиться и 2, и поиск, и всё остальное.
Полностью согласен! Желательно иметь два раздельных уровня:
1. Формирование данных — вообще говоря, потенциально по всему доступному контексту, включая текущий и выделенные элементы активной, а также пассивной панелей, обычных или плагиновых.
2. Представление данных, сформированных в п.1, — разумеется, оно должно зависеть от природы данных (особенно если будет и раскраска).
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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