Стек плагиновых панелей в фар

Разработка Far.
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

По мотивам...
Речь о том что сейчас такой стек есть но в нетрадиционном очень своеобразном виде.

Если в архивном плагине (arclite) нажать Enter или Ctrl+PgDn на элементе панели (не каталоге),
фар (если может) извлекает этот элемент во временный файл и пытается его открыть в новой панели.
Если это удалось, после закрытия новой мы возвращаемся в панель архиватора -- стек вроде как есть.

Если же какой-то плагин, например через Open в меню плагинов, сам создаст новую панель из текущего элемента архива
(сам извлечёт файл из архива и откроет временный файл, или откроет прямо в архиве) новая панель будет создана,
но после её закрытия мы окажемся не в панели архиватора, а в обычной файловой панели.
Архиватор закрыт - стека нет.

Как пример можно открыть .exe/.dll файл в PEAnalyzer из архива arclite.

Думаю для подобных сценариев стек панелей должен делать сам фар.
Чтобы отличать открытие новой панели из элемента другой панели (когда стек нужен - PEAnalyzer...)
от панели созданной 'из воздуха' (стек не нужен - NetBox...), можно ввести специальный флаг в свойствах плагина.
Что-то вроде PF_RECURSIVE_PANEL
Last edited by 2useven10 on Sun 30 Apr, 2023 08:36, 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

Стек плагиновых панелей в фар

Post by HaRT »

2useven10 wrote: Sun 30 Apr, 2023 08:35 специальный флаг в свойствах плагина
Может, лучше в аргументах вызова открытия панели? Чтобы плагин мог, когда надо открывать со стеком, а когда не надо — без такового.
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

Можно и так. Но, imho, не было бы ничего страшного, если всегда открывать со стеком.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Стек плагиновых панелей в фар

Post by buniak_a_h »

2useven10 wrote: Mon 01 May, 2023 12:38 не было бы ничего страшного, если всегда открывать со стеком.
Видимо, тогда должна быть возможность очистки стека. Типа зашли в одну панель (архив), из неё - в другую, в третью, затем вернулись в архивную и история уже не нужна.
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

Сделал в 6134 (надеюсь).
Без нового флага PF_RECURSIVEPANEL можно было обойтись,
он добавлен скорее для страховки, чтобы поведение существующих плагинов не изменилось без их ведома.
Denis
Posts: 1444
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 10 times
Been thanked: 5 times

Стек плагиновых панелей в фар

Post by Denis »

Чего-то потерялось:
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

Да, plugin.hpp ...
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

Продолжение для Plugin.Command и префиксов
build 6140, arclite += PF_RECURSIVEPANEL
https://github.com/FarGroup/FarManager/issues/680

Возможны неучтённые побочные эффекты..
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Стек плагиновых панелей в фар

Post by John Doe »

2useven10 wrote: Fri 12 May, 2023 12:44 Продолжение для Plugin.Command и префиксов
Нельзя ли описать как в данном случае проявляется новая функциональность?
Как запускать и чего нового при этом ожидать?
https://t.me/FarManager — Telegram чат
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

Открытие новой панели должно быть 'рекурсивным' для плагинов с PF_RECURSIVEPANEL (на данный момент их 2 PEAnalyzer и arclite),
после выхода возврат в плагиновую панель а не в файловую.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Стек плагиновых панелей в фар

Post by John Doe »

Зависит ли рекурсивность от того, каким образом открыта панель?
  • Enter/PgDn
  • Меню Дисков/Плагинов
  • по префиксу, или Plugin.Command
  • ???
В первом случае стек был и раньше.
В прочих случаях эффект ожидается идентичный?
Зависит ли от того, связаны ли панели с хостфайлами?
https://t.me/FarManager — Telegram чат
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

Изначально (см. первый пост темы) рекурсивность была только при обработке Enter (Ctrl+PgDn относится туда же) в плагиновой панели.
В этом случае фар сам получал временный файл из текущего элемента панели и если мог открывал новую панель.

6134 расширил рекурсивность на создание новой панели из меню плагинов если новая панель создана
1) из плагиновой панели (почти всегда это архивная панель)
2) вновь созданная панель принадлежит плагину с флагом PF_RECURSIVEPANEL (первый PEAnalyzer, сейчас +arclite)
3) у новой панели есть не пустой hostfile

6140 всё аналогично, но панель может быть создана также в Plugin.Command или по префиксу
Last edited by 2useven10 on Fri 12 May, 2023 21:57, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Стек плагиновых панелей в фар

Post by John Doe »

2useven10 wrote: Fri 12 May, 2023 21:55 2) вновь созданная панель принадлежит плагину с флагом PF_RECURSIVEPANEL (первый PEAnalyzer, сейчас +arclite)
Что если (экспериментально) добавить опцию, по которой стек будет создаваться и для плагинов, не знающих о PF_RECURSIVEPANEL?
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Стек плагиновых панелей в фар

Post by HaRT »

John Doe wrote: Fri 12 May, 2023 22:19Что если (экспериментально) добавить опцию, по которой стек будет создаваться и для плагинов, не знающих о PF_RECURSIVEPANEL?
На мой взгляд, спокойнее будет иметь возможность задавать это для каждого такого плагина отдельно (по GUID'у). Иначе может получиться, что несколько плагинов работают нормально, но один, субъективно очень важный, «портит всё стадо».
Фар есть инструмент, а не нянька. © 2009 DrKnS
2useven10
Posts: 5209
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Стек плагиновых панелей в фар

Post by 2useven10 »

John Doe, HaRT,
Сделать не сложно (я пока склонен ко второму варианту). Но для начала хочется убедиться что всё работает как задумывалось.
Если всё ок и будет реальная потребность в подобной рекурсивности для плагинов которые нельзя пересобрать - можно добавить настройку.
Post Reply

Return to “Development”