PictureView 3 — просмотр изображений различных форматов

Здесь можно обсудить ваш любимый плагин.
SEt
Posts: 526
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 46 times

PictureView 3 — просмотр изображений различных форматов

Post by SEt »

В этой теме обсуждается плагин PictureView 3.
Старый тред с обсуждением предыдущих версий: PictureView 1 и 2.

Дальнейшее развитие версии 1.5, переделано под API Far 3.0.



Об извлечении плагинов из дистрибутивов ACDSee.


PS: API как было убогим в Far 2, так и осталось...
Attachments
PictureView3_20140813_last_xp.7z
Последняя версия, работающая на WinXP
(321.22 KiB) Downloaded 1201 times
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

PictureView 3 — просмотр изображений различных форматов

Post by buniak_a_h »

Latest post of the previous page:

SEt wrote: Tue 27 Oct, 2020 03:33 так как в API теперь нет быстрого способа узнать, файл или каталог
Такое не считается быстрым? Прошу прощения, если в синтаксисе напорол - на C с 94-го года прошлого тысячелетия не писал… Но идея понятна

Code: Select all

PanelControl(PANEL_ACTIVE, FCTL_GETPANELITEM, i, &pri);
if (pri->item.FileAttributes & FILE_ATTRIBUTE_DIRECTORY = FILE_ATTRIBUTE_DIRECTORY)
SEt
Posts: 526
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 46 times

PictureView 3 — просмотр изображений различных форматов

Post by SEt »

Ага, только вот первой строчке нужно дать память неизвестного размера, так как она туда копирует имя файла (до 32768 символов), описание и прочую очень полезную информацию помимо нужных FileAttributes и Flags.
Last edited by SEt on Tue 27 Oct, 2020 13:21, edited 1 time in total.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

PictureView 3 — просмотр изображений различных форматов

Post by HaRT »

SEt wrote: Tue 27 Oct, 2020 13:21 Ага, только вот первой строчке нужно дать память неизвестного размера, так как она туда копирует имя файла (до 32768 символов), описание и прочую очень полезную информацию помимо нужных FileAttributes и Flags.
Я поднял вопрос.
Но ведь даже и сейчас, пробегая по элементам панели, можно не освобождать память после опроса каждого элемента и перевыделять, если для очередного элемента требуется больше, чем уже выделено. А если, когда нужно больше, увеличивать размер не менее чем вдвое, то лишь на очень специально сформированных панелях это будет тормозить. Кстати, при таком подходе можно будет проверять и расширения имён файлов, чтобы подсчитывать только те файлы, которые по имени похожи на картинки поддерживаемых форматов.
Last edited by HaRT on Tue 27 Oct, 2020 14:17, edited 2 times in total.
Reason: Добавлена ремарка про анализ имён файлов для более точного подсчёта
Фар есть инструмент, а не нянька. © 2009 DrKnS
SEt
Posts: 526
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 46 times

PictureView 3 — просмотр изображений различных форматов

Post by SEt »

HaRT wrote: Tue 27 Oct, 2020 14:02 Кстати, при таком подходе можно будет проверять и расширения имён файлов, чтобы подсчитывать только те файлы, которые по имени похожи на картинки поддерживаемых форматов.
PV практически никогда не определяет поддерживаемость файла по расширению.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

PictureView 3 — просмотр изображений различных форматов

Post by HaRT »

Теперь можно получать атрибуты без манипуляций с динамической памятью и без удвоения вызова PanelControl.
DrKnS wrote: Tue 27 Oct, 2020 21:57 5695: если размер меньше необходимого, то пишем столько, сколько получится.
Фар есть инструмент, а не нянька. © 2009 DrKnS
SEt
Posts: 526
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 46 times

PictureView 3 — просмотр изображений различных форматов

Post by SEt »

Я бы не спешил с текущей реализацией – ответил там.
User avatar
Grom PE
Posts: 34
Joined: Sun 21 Jun, 2015 14:24
Has thanked: 5 times
Been thanked: 2 times
Contact:

PictureView 3 — просмотр изображений различных форматов

Post by Grom PE »

Иногда нужно смотреть файлы картинок текстом, в просмотрщике Far'а, для инспекции байтов.
Поэтому я захотел по Alt+F3 включать обычный просмотрщик, а по F3 — как и было до этого, картинки — картинками, остальное — текстом.

Прямых функций для одноразового просмотра без PictureView не нашёл, как и прямых функций для включения/выключения настройки "Process Actions → [x] View", поэтому накостылил через вызов диалога настроек перед просмотром и после:

%APPDATA%\Far Manager\Profile\Macros\scripts\Shell_AltF3.lua

Code: Select all

local PVID="50563330-D240-4625-AC8B-B70DF9075630";
local needReenable = false;
-- assuming that picture view on View action is normally always enabled

local viewConfigKey = {English="w", Russian="п"};

Macro {
  description="Bypass picture viewer";
  area="Shell";
  key="AltF3";
  condition=function()
    return Plugin.Exist(PVID);
  end;
  action=function()
    if Plugin.Config(PVID) then
      needReenable = true
      Keys(viewConfigKey[Far.GetConfig("language.main")] or viewConfigKey.English)
      Keys("Enter F3")
    end;
  end;
}

function doWhenInShell()
  if Plugin.Config(PVID) then
    Keys(viewConfigKey[Far.GetConfig("language.main")] or viewConfigKey.English)
    Keys("Enter")
    needReenable = false
  end
end

Event {
  description="Test";
  group="ViewerEvent";
  action=function(Id, Event, Param)
    if needReenable and Event == far.Flags.VE_KILLFOCUS then
      mf.postmacro(doWhenInShell)
    end
  end;
}
Оставляю здесь на случай, если кому пригодится. Но и буду рад менее костыльному решению.
Last edited by Grom PE on Thu 29 Oct, 2020 03:36, edited 1 time in total.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

PictureView 3 — просмотр изображений различных форматов

Post by skipik »

SEt, обнаружил очень странное явление, пришлось изрядно потрудиться, но виновник был найден - этот плагин.
Для воспроизведения потребуется скачать это:
1. Установщик фубара2000: https://www.dropbox.com/s/mn8mjctjyplsc ... 2.exe?dl=1
2. Архив портабельной версии с моими дополненными компонентами: https://www.dropbox.com/s/03yoomspualyk ... ar.7z?dl=1
3. Фар + плагин PictureView 3
---
- Распаковываем Foobar.7z
- Запускаем фар и убеждаемся, что плагин PictureView 3 установлен и запущен
- Делаем Far.exe /clearcache (обязательно) и закрываем фар
- Запускаем фар
- Запускаем энтером установщик foobar2000_v1.6.3_beta_2.exe, выбираем портабельную версию, в качестве папки выбираем ту, что распаковали ранее, то есть ./Foobar и ставим крыжик Keep components in their current folder
- Install
---
Ожидаемое поведение: фубар обновится без проблем
Реальное поведение: будет ругань на Shared.dll, причём ОК нажимается 7 раз, то есть ровно столько, сколько моих (не дефолтных компонентов в ./Components)

Если удалить плагин PictureView 3, то ошибка не воспроизводится.
Очень странный случай, поэтому прошу помощи.
Last edited by skipik on Sat 09 Jan, 2021 11:18, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

PictureView 3 — просмотр изображений различных форматов

Post by citRiks »

на всякий случай скажу что у меня не повторяется,
хотя вроде все сделал по твоему описанию,
причем даже несколько раз, со всеми упомянутыми галочками и -clearcache

PictureView 3.2019.10.9
Far Manager, version 3.0.5687.0 x86
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

PictureView 3 — просмотр изображений различных форматов

Post by skipik »

citRiks, у меня абсолютно стабильное повторение, поэтому и запостил сюда.
После очистки кеша фар перезапускали? Это важно, чуть дополнил инструкцию.
Если что - вот видео проблемы: https://www.dropbox.com/s/bsf3ovnrcdqkd ... 1.mp4?dl=0
Для меня загадка, как может влиять плагин-просмотрщик на установку других программ, но факт остаётся фактом - стОит убрать PV3 и сразу ошибка пропадает...
Last edited by skipik on Sat 09 Jan, 2021 11:26, edited 2 times in total.
SEt
Posts: 526
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 46 times

PictureView 3 — просмотр изображений различных форматов

Post by SEt »

skipik, не могу повторить – всё устанавливается без проблем.
Могу предложить следующие варианты:
1) Отключить всякие антивирусы, в том числе что там встроено в win10.
2) Под Process Monitor посмотреть, что происходит при удачной и при неудачной установке.
skipik
Posts: 318
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 67 times
Been thanked: 29 times

PictureView 3 — просмотр изображений различных форматов

Post by skipik »

SEt, все антивирусы выключил - всё равно повторяется. Сейчас попробую на виртуалке повторить и если что - залью вам снапшот.

UPD: повторилось на виртуалке с только что установленной ОС, сейчас предоставлю снапшот.
Как воспроизводить - показывал на видео.

UPD2: готово, вот снапшот: https://www.dropbox.com/s/ncnwtv3ax0nkz ... s.rar?dl=1
ОС свежая, только что установленная, фар тоже свежий, только добавлен плагин PV3, больше никаких настроек.
Last edited by skipik on Sat 09 Jan, 2021 15:54, edited 4 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

PictureView 3 — просмотр изображений различных форматов

Post by citRiks »

skipik wrote: Sat 09 Jan, 2021 11:15 После очистки кеша фар перезапускали?
да, перезапускал, в итоге.
может у меня и была нарушена последовательность в первых попытках воспроизвести.
но в последних попытках уже я думаю точно что все по твоему списку.
С виртуалкой это ты хорошо придумал, автор плагина нашелся,
поэтому я умываю руки на данный момент :)
SEt
Posts: 526
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 46 times

PictureView 3 — просмотр изображений различных форматов

Post by SEt »

skipik, нашёл причину, в следующей версии будет исправлено.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

PictureView 3 — просмотр изображений различных форматов

Post by HaRT »

SEt wrote: Sat 09 Jan, 2021 20:15нашёл причину
А можно в двух словах для широкой публики, что приводило к таким странным эффектам?
Фар есть инструмент, а не нянька. © 2009 DrKnS
SEt
Posts: 526
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 46 times

PictureView 3 — просмотр изображений различных форматов

Post by SEt »

Изменение поиска dll из-за наследования SetDllDirectory в запускаемых процессах.
Post Reply

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