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

Здесь обсуждается всё, что касается макросов.
Post Reply
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 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 - давно забытая утилитка. Получился довольно небольшой и вполне пригодный модуль. Позволяет открывать-закрывать узлы дерева, задавать глубину, на которую первоначально открываются узлы; просматривать в пассивной панели текущую папку и переходить в панели дерева на выбранную папку.



Чего может не хватать:
  • обновления дерева (по таймеру, например);
  • вывода характеристик (суммарный размер поддерева, самого нового файла, количество файлов).
  • Что ещё - не знаю.
Если кому-нить это интересно, перечисленные недоделки я по возможности доделаю. Также принимаются предложения, чего может ещё не хватать для нормальной работы. Но так-то вроде вполне удобненько получилось … :-)
Опять же если будут добровольцы - локализацию и перевод хелпа были бы полезны. Если скрипт кому-нить покажется полезным …

Версия 2.6.6.
  1. Исправлен «снос» имени текущей папки в командную строку: теперь оно заменяет отмеченную часть командной строки или (если ничего не отмечено) вставляется в текущую позицию строки.
  2. Исправлена мелкая неточность: вопрос о пересоздании кэша задаётся только в том случае, если задан период актуализации кэша
TreePanel_2_6_6.7z
(31.08 KiB) Downloaded 144 times


1)Корневой каталог - каталог, который вместе с вложенными показан на дереве.
Last edited by buniak_a_h on Mon 14 Dec, 2020 07:40, edited 37 times in total.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 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: 6035
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

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

Post by zg »

buniak_a_h wrote: Tue 24 Mar, 2020 18:00в расчёте на странную библиотеку Selene Unicode, которая путается в символах и байтах.
путаницы там нет, всё работает строго в согласии с документацией.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

 ! Message from: HaRT
Дальнейший офтопик будет быстро удалён.
Last edited by Guest on Tue 24 Mar, 2020 18:29, edited 1 time in total.
Reason: Спрятан офтопик
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

DV, Вам реально нужно дерево на старом ФАРе? Я посмотрел - за вечер адаптирую. Просто если это - случайный глюк, легко исправляемый обновлением, то лишних телодвижений делать не хочется…
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

Версия 1.3.2 от 24.03.2020
Исправлена несовместимость с версией LuaFAR-а ранее 736
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

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

Post by DV »

Спасибо! Заметил странную штуку: строка 392 вызывает nfo.Help(), однако сам метод объявлен на строке 67 с маленькой буквы: help = function(nfo,name).
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

DV, Спасибо. Действительно, вылетает …
Ну, уже, наверно, в следующей выкладке
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

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

Post by DV »

И небольшое пожелание по поведению: на мой взгляд, при активном "Автоматически отображать содержимое папки на пассивной панели" имеет смысл либо опционально, либо безусловно отключать добавление просмотренных папок в историю папок. А то сейчас при навигации по дереву история папок может резко увеличиться на несколько сотен пунктов.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 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.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

buniak_a_h wrote: Tue 24 Mar, 2020 23:37 В одном из макросов я через SQLite удалял последнее значение, но как-то это неправильно.
а в каком, где глянуть?
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 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.
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 times
Contact:

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

Post by buniak_a_h »

citRiks, а пример работы через SQLite - есть у меня два макроса: создание режима просмотра панели на базе существующего (сделать копию режима и подкорректировать её) и добавление в маску файлов именованной группы масок (как оказалось, имена групп файлов регистрозависимые, поэтому я сделал для себя мелкую фичу - выбор из списка. Ну, память то старческая…)
User avatar
John Doe
Бюрократ
Posts: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Tue 24 Mar, 2020 23:37 Вставляю Far.DisableHistory(2) - не работает.
Пример кода где не работает можете привести?
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4262
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 644 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: 10863
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 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: 13853
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 428 times
Contact:

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

Post by John Doe »

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

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

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