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

Здесь обсуждается всё, что касается макросов.
Post Reply
buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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.4.1
  1. Реализовано построение дерева при вызове из панели плагина ArcLite (с некоторыми ограничениями)
  2. Очередная попытка навести порядок с корневой папкой при старте модуля и с папкой возврата.
  3. Положено начало локализации скрипта. Для этого требуется модуль BAX.GetMsg (обсуждение)
TreePanel_1_4_1.7z
(10.45 KiB) Downloaded 7 times


1)Корневой каталог - каталог, который вместе с вложенными показан на дереве.
Last edited by buniak_a_h on Mon 30 Mar, 2020 04:37, edited 11 times in total.

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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: 5772
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 142 times
Contact:

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

Post by zg »

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

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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: Спрятан офтопик

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

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

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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: 450
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 135 times
Been thanked: 40 times

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

Post by citRiks »

buniak_a_h wrote:
Tue 24 Mar, 2020 23:37
В одном из макросов я через SQLite удалял последнее значение, но как-то это неправильно.
а в каком, где глянуть?

buniak_a_h
Posts: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

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

User avatar
John Doe
Бюрократ
Posts: 12718
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: 1598
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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: 12718
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 “Обсуждение макросов”