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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 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.5
  1. Исправлена ошибка, возникавшая при перестроении всего дерева по клавише Ctrl+R (обновить). Кроме того, по этой клавише возможно обновление кэша.
  2. При выходе из дерева состояние другой панели теперь восстанавливается только в случае, если включено немедленное открытие текущего каталога на противоположной панели.
  3. Добавлен минимальный контроль актуальности данных о папке в кэше: если в корневой папке имеются подпапки, а дерево формируется пустым, то выводится сообщение о критической неактуальности кэша и предлагается его перестроить. В случае отказа только перестраивается в памяти ветка корневого каталога дерева.
  4. При обновлении дерева по Ctrl+R также предлагается обновить кэш диска.
  5. Экспериментально!] При смене каталога на другой (не_древесной) панели (если она активна) указатель в дереве переносится на соответствующий узел дерева; при этом он помечается символом «►».
TreePanel_2_6_5.7z
(30.63 KiB) Downloaded 15 times


1)Корневой каталог - каталог, который вместе с вложенными показан на дереве.
Last edited by buniak_a_h on Tue 17 Nov, 2020 18:12, edited 35 times in total.
citRiks
Posts: 903
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 274 times
Been thanked: 47 times

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

Post by citRiks »

Latest post of the previous page:

buniak_a_h wrote: Fri 13 Mar, 2020 14:40 В предлагаемом bat-нике во временной папке создается зеркальная структура папок и далее всё делается с ней.
ну пустые папки в ТЕМПе - это приблизительно ноль ресурсов компа, а потом они стираются..
buniak_a_h wrote: Fri 13 Mar, 2020 14:40 Можно. Есть arclite, в него по моей просьбе добавлен функционал для удобства использования в макросах. Судя по скорости реакции автора, он не против обоснованных пожеланий.
не очень понимаю как это делать через arclite, но если вы понимаете и реализуете, то буду счастлив и этим :)
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
Novichok 13
Posts: 5
Joined: Fri 13 Mar, 2020 19:58
Has thanked: 14 times
Been thanked: 1 time

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

Post by Novichok 13 »

Всем привет! Поддерживаю идею создания этой фичи. Я тоже считаю что очень стоит сделать дерево для архивов,
и временные пустые директории не выглядят сверх-нагрузкой. Всем спасибо !
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

У меня возник вопрос (проблема выбора):
1. Если в FileName пихать полный путь, то при переходах по папкам (узлам дерева) меняется текущая папка; т.е. запуск внешних команд происходит из той папки. НО! Не работает QuickSearch.
2 Если в FileName пихать только имя папки, то - наоборот - работает поиск по панели, зато не выставляется текущий каталог.
Разрешить это противоречие я не могу; надо выбирать. Если есть заинтересованные - что посоветуете?
User avatar
HaRT
Moderator
Posts: 9603
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 114 times
Been thanked: 233 times

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

Post by HaRT »

buniak_a_h wrote: Sat 14 Mar, 2020 15:24 проблема выбора
А что в том и другом случае будет с фильтром панели?
Last edited by HaRT on Sat 14 Mar, 2020 15:55, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Sat 14 Mar, 2020 15:38
buniak_a_h wrote: Sat 14 Mar, 2020 15:24 проблема выбора
А что в том и другом случае будет с фильтром панели?
1. Это не новичок, это я писал :-)
2. Это намёк, что для панели дерева надо установить флаг OPIF_DISABLEFILTER ? Логично, спасибо. Действительно, фильтрация полностью поломает древовидную структуру. Для сокрытия внутренностей есть другой способ.
Last edited by HaRT on Sat 14 Mar, 2020 15:59, edited 1 time in total.
Reason: Исправлена цитата
User avatar
HaRT
Moderator
Posts: 9603
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 114 times
Been thanked: 233 times

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

Post by HaRT »

buniak_a_h wrote: Sat 14 Mar, 2020 15:43 Это не новичок, это я писал
Это не я, это форум глючит с мобильника, известная проблема, потом с компа исправлю (а вы у себя, надеюсь, можете исправить уже сейчас).
18:00 MSK Я исправил и там, и там.
Last edited by HaRT on Sat 14 Mar, 2020 16:00, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 9603
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 114 times
Been thanked: 233 times

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

Post by HaRT »

buniak_a_h wrote: Sat 14 Mar, 2020 15:43 фильтрация полностью поломает древовидную структуру
Зато быстрым фильтром отлично заменяется быстрый поиск. Поэтому если фильтр работает, пусть и с нарушением дерева, то я за то, чтобы оставить фильтр и текущую директорию, пожертвовав быстрым поиском.
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Sat 14 Mar, 2020 15:53 быстрым фильтром отлично заменяется быстрый поиск
Я чего-то не знаю про ФАР … Что такое "быстрый фильтр"?
User avatar
HaRT
Moderator
Posts: 9603
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 114 times
Been thanked: 233 times

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

Post by HaRT »

buniak_a_h wrote: Sat 14 Mar, 2020 15:59 Что такое "быстрый фильтр"?
Я имел в виду скрипты «Автофильтр» или «Фильтр панели».
Фар есть инструмент, а не нянька. © 2009 DrKnS
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

HaRT, понятно.
Не пробовал. Я какой-то из них ставил, мне не понравилось (по-моему, просто непривычными хоткеями).
--
Неприятно, что быстрый поиск по образцу вида *a тоже не работает; почему - непонятно мне. Если знаете, в чём дело - напишите (после публикации версии 1.2.1 - там будет полный путь). Если нет - я разбираться, наверно, не буду. Легче сваять свой быстрый поиск …
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

Выпустил версию 1.2.1.
Основное внутреннее отличие: в поле FileName теперь записан полный путь к соответствующему каталогу.
Внешнее отличие: управление стрелками, как принято в деревьях; переход на каталог выше; строка подсказки функциональных клавиш. Дописан хелп.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 155 times
Contact:

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

Post by zg »

если нет анси плагинов, текущая папка процесса всегда будет %FARHOME%, соответственно дерево — всегда папка фара.
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

Возможно, я чего-то не понимаю. Но … Просто тупо сделал dpr из одной строчки:
  1. MessageBox(0, PChar(GetCurrentDir()), '', MB_OK);
и в последней версии получаю именно папку, соответствующую узлу дерева, а не %FarHome%. ЧТД.
Last edited by buniak_a_h on Sat 14 Mar, 2020 23:55, edited 1 time in total.
User avatar
zg
zero-gravity
Posts: 5878
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 155 times
Contact:

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

Post by zg »

buniak_a_h wrote: Sat 14 Mar, 2020 23:54Возможно, я чего-то не понимаю.
ваш макрос запускается как внешний процесс фаром?
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

Какой макрос?
dpr - это файл программы на структурном паскале (на Delphi). Я сделал маленький тестик в одну строчку. Получил exe-шник. Именно его я запускаю из командной строки во время работы панельного модуля. И он отрабатывает правильно (т.е. в соответствии с ожиданием): выводит имя папки, которой соответствует текущий узел дерева.
Я не силён в формулировках; Вы мне уже писали, что переназначить текущий каталог системы невозможно. Но (а) в виндах уже нет такого понятия, как текущий каталог, есть стартовый каталог процесса и (б) я именно имел в виду "запуск внешнего процесса в контексте папки" (по-моему, я именно так и сформулировал). И этот тест показывает, что поведение именно то, что требуется. Так что всё же скорее не я чего-то не понимаю, а Вы.
buniak_a_h
Posts: 2137
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 131 times
Been thanked: 212 times
Contact:

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

Post by buniak_a_h »

HaRT wrote: Sat 14 Mar, 2020 16:11
buniak_a_h wrote: Sat 14 Mar, 2020 15:59 Что такое "быстрый фильтр"?
Я имел в виду скрипты «Автофильтр» или «Фильтр панели».
У скрипта PanelAutoFilter мне не удалось вызвать фильтр ни для обычной панели, ни для дерева. Уж очень экзотические там хоткеи.Конфликтуют даже с PuntoSwitcher-ом!
Фильтр PanelFilter, наверно, можно сделать. Проблнма у меня в том, что при его вызове (у меня - CtrlP)вызывается диалог установки фильтра, а тогда в нём нет смысла. Но фильтрацию узлов дерева с учётом обычного фильтра я, наверно, сделаю (пока особых проблем не вижу).
Post Reply

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