Замена оверлейных иконок символами в отдельном колумне

Хотите предложить идею нового плагина или знаете, что улучшить в существующем? Пишите сюда.
User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by CyberShadow »

Latest post of the previous page:

Да, для каждого файла нужно запросить иконку. MSDN рекомендует это делать асинхронно, но я так понимаю что FAR API это делать не позволяет.

Впрочем, если просто спрашивать у разных VCS статус как было предложено выше, думаю выйдет не лучше, так как у Tortoise* есть доработанные механизмы кеширования (этим занимаются процессы TSVNCache/TGitCache/TortoiseHgOverlayServer).
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Maximus5 »

В bis я сделал опциональное чтение C0 только для видимых файлов. Это немного облегчает ситуацию. Но да, развить апи или таки сделать "менеджер C0 плагинов" не помешало бы
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Max Rusov »

Можно и асинхронно. Читать в отдельном потоке, обновлять по ACTL_Synchro...
User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by CyberShadow »

Синхронизация с главным покотом FAR это только часть проблемы. Остаются вопросы:

1) Можно передать новое значение колонки C0 FAR-у, когда оно будет знакомо?

Если нет, значит надо сохранить значение в памяти и попросить FAR спросить новые значения у плагина еще раз. Тогда остаются еще два вопроса:

2) Можно попросить FAR обновить панель, не перечитывая список файлов с диска?
3) Как правильно различить свежий запрос (при переходе в другую папку или нажатии на Ctrl+R) от повторного перезапроса для получения результата вычисленного в фоновом потоке?
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Max Rusov »

CyberShadow wrote:2) Можно попросить FAR обновить панель, не перечитывая список файлов с диска?
Теоретически - FCTL_REDRAWPANEL. Если не поможет, то пусть перечитывает (FCTL_UPDATEPANEL), какие проблемы?...
CyberShadow wrote:3) Как правильно различить свежий запрос (при переходе в другую папку или нажатии на Ctrl+R) от повторного перезапроса для получения результата вычисленного в фоновом потоке?
Вызовы FCTL_ скорее всего синхронны, т.ч. простго lock'а должно быть достаточно...
User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by CyberShadow »

Max Rusov wrote:Если не поможет, то пусть перечитывает (FCTL_UPDATEPANEL), какие проблемы?...
Допустим что входим в папку с 1000 файлов. Поток считывает по одной иконке и просит FAR обновить панель. Получается что FindFirstFile вызывается 1000 раз, а FindNextFile - около миллиона...

(Можно конечно группировать обновления с таймаутами итд, но это далеко не лучший вариант.)
User avatar
Tim Sobolev
Posts: 729
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Has thanked: 1 time
Been thanked: 7 times

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Tim Sobolev »

CyberShadow wrote:Впрочем, если просто спрашивать у разных VCS статус как было предложено выше, думаю выйдет не лучше, так как у Tortoise* есть доработанные механизмы кеширования (этим занимаются процессы TSVNCache/TGitCache/TortoiseHgOverlayServer).
Тут вот какое дело... Процесс этот у меня отключён (Status cache - Shell), но в проводнике всё работает намного быстрее.
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by Maximus5 »

Так ведь проводник считывает только видимые иконки :D
User avatar
CyberShadow
Posts: 194
Joined: Sun 15 Apr, 2007 17:12
Been thanked: 1 time
Contact:

Re: Замена оверлейных иконок символами в отдельном колумне

Post by CyberShadow »

Tim Sobolev wrote:Тут вот какое дело... Процесс этот у меня отключён (Status cache - Shell), но в проводнике всё работает намного быстрее.
Для иконок файлов этот процесс особо не нужен, а оверлеи над папками отображаются? Без кеширования непонятно как эффективно знать статус всех файлов в папке и всех подпапок.
Post Reply

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