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

Здесь обсуждается всё, что касается макросов.
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.

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 »

Latest post of the previous page:

DV wrote:
Tue 24 Mar, 2020 15:58
Не уверен, что проблема в работе со строками.
Посмотрел на старом ФАРе.
Дело, конечно, в строках. Уровень вложенности узла я определяю по количеству символов псевдографики перед именем папки. А до LuaFAR-а версии 736 разбор строк, содержащих двухбайтовые символы, вместо позиции символа выдавал номер байта. В результате у первой папки уровень вложенности вместо "1" получается "3", а путь для 3-го уровня ещё не сформирован. Я добавил контроль, уж очень не хочется синтаксический разбор строк переделывать в расчёте на странную библиотеку Selene Unicode, которая путается в символах и байтах.
Ура разработчикам, вняли моим доводам и заменили эту библиотеку на luautf8 (если я правильно понял суть исправления).

User avatar
zg
zero-gravity
Posts: 5769
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 141 times
Contact:

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

Post by zg »

buniak_a_h wrote:
Tue 24 Mar, 2020 18:00
в расчёте на странную библиотеку Selene Unicode, которая путается в символах и байтах.
путаницы там нет, всё работает строго в согласии с документацией.

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 »

 ! Message from: HaRT
Дальнейший офтопик будет быстро удалён.
Last edited by HaRT on Tue 24 Mar, 2020 18:29, edited 1 time in total.
Reason: Спрятан офтопик

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, Вам реально нужно дерево на старом ФАРе? Я посмотрел - за вечер адаптирую. Просто если это - случайный глюк, легко исправляемый обновлением, то лишних телодвижений делать не хочется…

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 »

Версия 1.3.2 от 24.03.2020
Исправлена несовместимость с версией LuaFAR-а ранее 736

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

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

Post by DV »

Спасибо! Заметил странную штуку: строка 392 вызывает nfo.Help(), однако сам метод объявлен на строке 67 с маленькой буквы: help = function(nfo,name).

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, Спасибо. Действительно, вылетает …
Ну, уже, наверно, в следующей выкладке

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

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

Post by DV »

И небольшое пожелание по поведению: на мой взгляд, при активном "Автоматически отображать содержимое папки на пассивной панели" имеет смысл либо опционально, либо безусловно отключать добавление просмотренных папок в историю папок. А то сейчас при навигации по дереву история папок может резко увеличиться на несколько сотен пунктов.

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
И небольшое пожелание по поведению: на мой взгляд, при активном "Автоматически отображать содержимое папки на пассивной панели" имеет смысл либо опционально, либо безусловно отключать добавление просмотренных папок в историю папок. А то сейчас при навигации по дереву история папок может резко увеличиться на несколько сотен пунктов.
У меня с этим всегда проблемы были. Вставляю Far.DisableHistory(2) - не работает. Да и Far.DisableHistory(-1) тоже не работает. И нашёл я тут пример скрипта, там вроле для этого такая строка предлагается: Far.DisableHistory(0x0F) - тоже не работает. Я не знаю, как запретить занесение в историю… В одном из макросов я через SQLite удалял последнее значение, но как-то это неправильно.
Last edited by buniak_a_h on Tue 24 Mar, 2020 23:41, edited 2 times in total.

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:
Tue 24 Mar, 2020 23:37
В одном из макросов я через SQLite удалял последнее значение, но как-то это неправильно.
а в каком, где глянуть?

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, не через SQLite, а просто работа с историей тут:
конкретно удаления не нашёл быстро возможно, осталось в экспериментах), но поиск по истории и чтение из истории есть, например, в «Копирование файлов на временную панель». И в Показывать также искомую строку в заголовке результатов поиска по файлам. А собственно удаление есть в модуле BaxUtils.lua, функция mDelList
Last edited by buniak_a_h on Wed 25 Mar, 2020 16:35, 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 »

citRiks, а пример работы через SQLite - есть у меня два макроса: создание режима просмотра панели на базе существующего (сделать копию режима и подкорректировать её) и добавление в маску файлов именованной группы масок (как оказалось, имена групп файлов регистрозависимые, поэтому я сделал для себя мелкую фичу - выбор из списка. Ну, память то старческая…)

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 »

buniak_a_h wrote:
Tue 24 Mar, 2020 23:37
Вставляю Far.DisableHistory(2) - не работает.
Пример кода где не работает можете привести?
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 »

John Doe wrote:
Wed 25 Mar, 2020 16:59
buniak_a_h wrote:
Tue 24 Mar, 2020 23:37
Вставляю Far.DisableHistory(2) - не работает.
Пример кода где не работает можете привести?
Так в опубликованной версии 1.3.2 добавьте перед строкой 281: Panel.SetPath(1, UserData.FullName) - вот это и не работает. Также не работает, если вставить в самое начало функции mod.GetOpenPanelInfo.

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:
Wed 25 Mar, 2020 17:18
John Doe wrote:
Wed 25 Mar, 2020 16:59
buniak_a_h wrote:
Tue 24 Mar, 2020 23:37
Вставляю Far.DisableHistory(2) - не работает.
Пример кода где не работает можете привести?
Так в опубликованной версии 1.3.2 добавьте перед строкой 281: Panel.SetPath(1, UserData.FullName) - вот это и не работает. Также не работает, если вставить в самое начало функции mod.GetOpenPanelInfo.
Вас попросили привести пример кода (конкретный и самодостаточный), где не работает отключение занесения директорий в историю.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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 »

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

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

Post Reply

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