[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 1814: Undefined array key 422
[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 1814: Trying to access array offset on value of type null
[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 1814: Undefined array key 422
[phpBB Debug] PHP Warning: in file [ROOT]/viewtopic.php on line 1814: Trying to access array offset on value of type null
forum.farmanager.com • Реализовать дерево директорий панельным модулем на Луа - Page 5
Page 5 of 19

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

Posted: Sun 08 Mar, 2020 22:31
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 143 times


1)Корневой каталог - каталог, который вместе с вложенными показан на дереве.

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

Posted: Tue 24 Mar, 2020 18:00
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 (если я правильно понял суть исправления).

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

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

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

Posted: Tue 24 Mar, 2020 18:13
by buniak_a_h
 ! Message from: HaRT
Дальнейший офтопик будет быстро удалён.

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

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

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

Posted: Tue 24 Mar, 2020 20:14
by buniak_a_h
Версия 1.3.2 от 24.03.2020
Исправлена несовместимость с версией LuaFAR-а ранее 736

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

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

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

Posted: Tue 24 Mar, 2020 21:35
by buniak_a_h
DV, Спасибо. Действительно, вылетает …
Ну, уже, наверно, в следующей выкладке

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

Posted: Tue 24 Mar, 2020 22:27
by DV
И небольшое пожелание по поведению: на мой взгляд, при активном "Автоматически отображать содержимое папки на пассивной панели" имеет смысл либо опционально, либо безусловно отключать добавление просмотренных папок в историю папок. А то сейчас при навигации по дереву история папок может резко увеличиться на несколько сотен пунктов.

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

Posted: Tue 24 Mar, 2020 23:37
by buniak_a_h
DV wrote: Tue 24 Mar, 2020 22:27 И небольшое пожелание по поведению: на мой взгляд, при активном "Автоматически отображать содержимое папки на пассивной панели" имеет смысл либо опционально, либо безусловно отключать добавление просмотренных папок в историю папок. А то сейчас при навигации по дереву история папок может резко увеличиться на несколько сотен пунктов.
У меня с этим всегда проблемы были. Вставляю Far.DisableHistory(2) - не работает. Да и Far.DisableHistory(-1) тоже не работает. И нашёл я тут пример скрипта, там вроле для этого такая строка предлагается: Far.DisableHistory(0x0F) - тоже не работает. Я не знаю, как запретить занесение в историю… В одном из макросов я через SQLite удалял последнее значение, но как-то это неправильно.

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

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

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

Posted: Wed 25 Mar, 2020 16:34
by buniak_a_h
citRiks, не через SQLite, а просто работа с историей тут:
конкретно удаления не нашёл быстро возможно, осталось в экспериментах), но поиск по истории и чтение из истории есть, например, в «Копирование файлов на временную панель». И в Показывать также искомую строку в заголовке результатов поиска по файлам. А собственно удаление есть в модуле BaxUtils.lua, функция mDelList

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

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

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

Posted: Wed 25 Mar, 2020 16:59
by John Doe
buniak_a_h wrote: Tue 24 Mar, 2020 23:37 Вставляю Far.DisableHistory(2) - не работает.
Пример кода где не работает можете привести?

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

Posted: Wed 25 Mar, 2020 17:18
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.

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

Posted: Wed 25 Mar, 2020 17:20
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.
Вас попросили привести пример кода (конкретный и самодостаточный), где не работает отключение занесения директорий в историю.

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

Posted: Wed 25 Mar, 2020 17:35
by John Doe
Наиболее вероятно что Far.DisableHistory просто может не иметь смысла вне клавиатурного макроса: например, назначьте вспомогательный макрос для навигации на какую-либо клавишу, и примените Far.DisableHistory там.

Я разумеется глубоко не вникал в код вашего скрипта, и не вполне представляю что там происходит, но возможно надо учитывать тот факт, что папка попадает в историю не при заходе в неё, а при выходе.