Реализовать дерево директорий панельным модулем на Луа

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1577
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 107 times
Been thanked: 137 times
Contact:

Реализовать дерево директорий панельным модулем на Луа

Post by buniak_a_h »

citRiks wrote:
Sun 08 Mar, 2020 21:37
buniak_a_h wrote:
Sat 07 Mar, 2020 19:41
Я начинал делать дерево в виде панельного модуля. Вот это мне показалось наиболее удобным. Но… Отвлекли на работе.
ну положите куда-нибудь на видное место если там есть хоть что-то полезное, может кто-нибудь продолжит
Спасибо citRiks-у за наводку на tree.com - давно забытая утилитка. Получился довольно небольшой и вполне пригодный модуль. Позволяет открывать-закрывать узлы дерева, задавать глубину, на которую первоначально открываются узлы; просматривать в пассивной панели текущую папку и переходить в панели дерева на выбранную папку.



Чего может не хватать:
  • обновления дерева (по таймеру, например);
  • удаления поддерева
  • вывода характеристик (суммарный размер поддерева, дата создания папки, самого нового файла, количество файлов, атрибуты папки).
  • Что ещё - не знаю.
Если кому-нить это интересно, перечисленные недоделки я по возможности доделаю. Также принимаются предложения, чего может ещё не хватать для нормальной работы. Но так-то вроде вполне удобненько получилось … :-)
Опять же если будут добровольцы - локализацию и перевод хелпа были бы полезны. Если скрипт кому-нить покажется полезным …
Версия 1.3.1
  1. Сделано извещение о формировании дерева
  2. Рефакторинг, исправлены мелкие неточности:
    1. Корневая папка не раскрывается и не сворачивается
    2. Исправлен выход по CtrlPgDn (раньше при выходе было позиционирование на текущей папке дерева; теперь переход в неё)
  3. В командной строке реализована передача корневой папки дерева
  4. Реализовано взаимодействие с макросом поиска/фильтрации. Для этого добавлено два хоткея: CtrlF - поиск и CtrlShiftF - фильтр. Сам макрос можно скачать по адресу: viewtopic.php?p=159786
Версия 1.3.2
  1. Исправлена несовместимость с версией LuaFAR-а ранее 736
Версия 1.3.3
  1. запрещено занесение "проходных" папок в историю при включенной автоматической установке текущей папки на пассивной панели (см. пожелание от DV)
Версия 1.3.4
  1. Исправлена ошибка определения папки возврата при запуске из МЕНЮ плагинов (F11)
TreePanel_1_3_4.7z
(9.58 KiB) Downloaded 10 times


1)Корневой каталог - каталог, который вместе с вложенными показан на дереве.
Last edited by buniak_a_h on Thu 26 Mar, 2020 17:35, edited 10 times in total.

User avatar
John Doe
Бюрократ
Posts: 12716
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 36 times
Been thanked: 279 times

Реализовать дерево директорий панельным модулем на Луа

Post by John Doe »

Latest post of the previous page:

Наиболее вероятно что Far.DisableHistory просто может не иметь смысла вне клавиатурного макроса: например, назначьте вспомогательный макрос для навигации на какую-либо клавишу, и примените Far.DisableHistory там.

Я разумеется глубоко не вникал в код вашего скрипта, и не вполне представляю что там происходит, но возможно надо учитывать тот факт, что папка попадает в историю не при заходе в неё, а при выходе.
https://t.me/FarManager — Telegram чат

buniak_a_h
Posts: 1577
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 107 times
Been thanked: 137 times
Contact:

Реализовать дерево директорий панельным модулем на Луа

Post by buniak_a_h »

HaRT wrote:
Wed 25 Mar, 2020 17:20
Вас попросили привести пример кода (конкретный и самодостаточный), где не работает отключение занесения директорий в историю.
TreePanel.lua.7z
Вот.
(6.84 KiB) Downloaded 3 times
John Doe wrote:
Wed 25 Mar, 2020 17:35
Наиболее вероятно что Far.DisableHistory просто может не иметь смысла вне клавиатурного макроса: например, назначьте вспомогательный макрос для навигации на какую-либо клавишу, и примените Far.DisableHistory там.

Я разумеется глубоко не вникал в код вашего скрипта, и не вполне представляю что там происходит, но возможно надо учитывать тот факт, что папка попадает в историю не при заходе в неё, а при выходе.
Я так и подумал. Панельный модуль - это не макрос, а в описании Far.DisableHistory написано:
Позволяет выключать добавление пунктов в истории во время воспроизведения текущего макроса.
Значит, надо выключать как-то через far:config("System.SaveFoldersHistory"). Или через SQLite (key : System, name : SaveFoldersHistory)

buniak_a_h
Posts: 1577
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 107 times
Been thanked: 137 times
Contact:

Реализовать дерево директорий панельным модулем на Луа

Post by buniak_a_h »

DV wrote:
Tue 24 Mar, 2020 22:27
И небольшое пожелание по поведению: на мой взгляд, при активном "Автоматически отображать содержимое папки на пассивной панели" имеет смысл либо опционально, либо безусловно отключать добавление просмотренных папок в историю папок. А то сейчас при навигации по дереву история папок может резко увеличиться на несколько сотен пунктов.
Версия 1.3.3.
Last edited by buniak_a_h on Thu 26 Mar, 2020 11:52, edited 1 time in total.

DV
Posts: 394
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 15 times
Been thanked: 14 times

Реализовать дерево директорий панельным модулем на Луа

Post by DV »

Пожалуй, меня смущает в макросе вот что: я не понимаю, каким образом выбирается папка, в которую я попадаю при выходе из дерева (когда панель дерева закрывается и я возвращаюсь в файловую панель)...
Мои ожидания: либо та папка, которая была активна в файловой панели до показа дерева, либо та папка, в которой я находился в дереве до его закрытия.
Реальность: ??? (я так и не понял, что эта за папка)
Last edited by DV on Thu 26 Mar, 2020 14:19, edited 1 time in total.

buniak_a_h
Posts: 1577
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 107 times
Been thanked: 137 times
Contact:

Реализовать дерево директорий панельным модулем на Луа

Post by buniak_a_h »

DV, вообще-то, должна быть та папка, которая была открыта до показа дерева. Хотя пару раз я почему-то попадал не туда, повторить не могу. Эта болезнь была и в других плагиновых панелях, я даже где-то писал, и со мной согласились. Искать не буду. Тоже сейчас не могу воспроизвести на временной панели. Может, исправили и я зря там предпринимал действия для выхода "обратно". Опишите, пож., как сделать, чтоб попасть не туда. Начиная от того, как дерево вызывается (есть 3 варианта) и до того, как выходите (CtrlPgDn - намеренный переход на текущую) (Enter на .., CtrlPgUp, F10)?

DV
Posts: 394
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 15 times
Been thanked: 14 times

Реализовать дерево директорий панельным модулем на Луа

Post by DV »

Вхожу через F11 - Tree panel (кстати, у себя я убрал '[ ' и ' ]' вокруг имени макроса).
Выхожу через F10 или по Enter на самом верхнем (пустом) элементе дерева.
Кстати, при навигации по дереву я часто нажимаю Enter (например, для раскрытия вложенных узлов). И у меня такое впечатление, что нажатия Enter, равно как и нажатия на стрелочки (вверх, вниз, вправо, влево) передаются из панели дерева в реальную файловую панель.

buniak_a_h
Posts: 1577
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 107 times
Been thanked: 137 times
Contact:

Реализовать дерево директорий панельным модулем на Луа

Post by buniak_a_h »

DV, спасибо. Неправильно запоминался стартовый каталог при вызове через меню плагинов (F11). Исправил (версия 1.3.4).
DV wrote:
Thu 26 Mar, 2020 15:35
кстати, у себя я убрал '[ ' и ' ]' вокруг имени макроса
Я специально для себя вставил, чтоб в начале МЕНЮ было. Во время разработки часто вызывать приходилось - чтоб (а) не искать и (б) не присваивать символ-акселератор

User avatar
HaRT
Moderator
Posts: 9328
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 212 times

Реализовать дерево директорий панельным модулем на Луа

Post by HaRT »

buniak_a_h wrote:
Thu 26 Mar, 2020 17:38
не присваивать символ-акселератор
А какая ценность в таком решении? Акселераторы ведь как раз для быстрого частого вызова и предназначены.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 1577
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 107 times
Been thanked: 137 times
Contact:

Реализовать дерево директорий панельным модулем на Луа

Post by buniak_a_h »

HaRT wrote:
Thu 26 Mar, 2020 18:15
buniak_a_h wrote:
Thu 26 Mar, 2020 17:38
не присваивать символ-акселератор
А какая ценность в таком решении? Акселераторы ведь как раз для быстрого частого вызова и предназначены.
1. В меню выбора букву не хочу принципиально; буква должн быть буквой диска. А цифры у меня заняты с 1 до 7.
2. В меню плагинов - все буквы и цифры уже заняты. Почти. Ну, т.е. искать надо… А мне лень.
Last edited by buniak_a_h on Thu 26 Mar, 2020 18:57, edited 1 time in total.

DV
Posts: 394
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 15 times
Been thanked: 14 times

Реализовать дерево директорий панельным модулем на Луа

Post by DV »

Я назначил '[' на вызов Tree panel что в меню плагинов, что в меню дисков :)

citRiks
Posts: 417
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 133 times
Been thanked: 38 times

Реализовать дерево директорий панельным модулем на Луа

Post by citRiks »

buniak_a_h, Лень - мать всех пороков :)
А я поражаюсь что дерево архива никому не надо. И кэш. Вроде просто же делается.
планирую переписать ваше дерево, но у меня нет не только лени, но еще и времени :(

buniak_a_h
Posts: 1577
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 107 times
Been thanked: 137 times
Contact:

Реализовать дерево директорий панельным модулем на Луа

Post by buniak_a_h »

citRiks wrote:
Thu 26 Mar, 2020 21:00
дерево архива никому не надо
Вообще-то, надо. Просили уже после Вас.

citRiks
Posts: 417
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 133 times
Been thanked: 38 times

Реализовать дерево директорий панельным модулем на Луа

Post by citRiks »

buniak_a_h wrote:
Thu 26 Mar, 2020 22:30
Вообще-то, надо. Просили уже после Вас.
Олени.
Ок, "Олени" интересуются, когда будет? :)

Post Reply

Return to “Обсуждение макросов”