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

Здесь можно обсудить ваш любимый плагин.
SEt
Posts: 479
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 27 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 806 times
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 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: 479
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 27 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: 9603
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 114 times
Been thanked: 233 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: 479
Joined: Mon 21 Mar, 2005 10:22
Location: Питер
Been thanked: 27 times

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

Post by SEt »

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

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

Post by HaRT »

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

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

Post by SEt »

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

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.
Post Reply

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