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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1610
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 141 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 13 times


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

citRiks
Posts: 484
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 144 times
Been thanked: 41 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: 1610
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 141 times
Contact:

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

Post by buniak_a_h »

У меня возник вопрос (проблема выбора):
1. Если в FileName пихать полный путь, то при переходах по папкам (узлам дерева) меняется текущая папка; т.е. запуск внешних команд происходит из той папки. НО! Не работает QuickSearch.
2 Если в FileName пихать только имя папки, то - наоборот - работает поиск по панели, зато не выставляется текущий каталог.
Разрешить это противоречие я не могу; надо выбирать. Если есть заинтересованные - что посоветуете?

User avatar
HaRT
Moderator
Posts: 9333
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 213 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: 1610
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 141 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: 9333
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 213 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: 9333
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 213 times

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

Post by HaRT »

buniak_a_h wrote:
Sat 14 Mar, 2020 15:43
фильтрация полностью поломает древовидную структуру
Зато быстрым фильтром отлично заменяется быстрый поиск. Поэтому если фильтр работает, пусть и с нарушением дерева, то я за то, чтобы оставить фильтр и текущую директорию, пожертвовав быстрым поиском.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by buniak_a_h »

HaRT wrote:
Sat 14 Mar, 2020 15:53
быстрым фильтром отлично заменяется быстрый поиск
Я чего-то не знаю про ФАР … Что такое "быстрый фильтр"?

User avatar
HaRT
Moderator
Posts: 9333
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 99 times
Been thanked: 213 times

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

Post by HaRT »

buniak_a_h wrote:
Sat 14 Mar, 2020 15:59
Что такое "быстрый фильтр"?
Я имел в виду скрипты «Автофильтр» или «Фильтр панели».
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by buniak_a_h »

HaRT, понятно.
Не пробовал. Я какой-то из них ставил, мне не понравилось (по-моему, просто непривычными хоткеями).
--
Неприятно, что быстрый поиск по образцу вида *a тоже не работает; почему - непонятно мне. Если знаете, в чём дело - напишите (после публикации версии 1.2.1 - там будет полный путь). Если нет - я разбираться, наверно, не буду. Легче сваять свой быстрый поиск …

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

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

Post by buniak_a_h »

Выпустил версию 1.2.1.
Основное внутреннее отличие: в поле FileName теперь записан полный путь к соответствующему каталогу.
Внешнее отличие: управление стрелками, как принято в деревьях; переход на каталог выше; строка подсказки функциональных клавиш. Дописан хелп.

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

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

Post by zg »

если нет анси плагинов, текущая папка процесса всегда будет %FARHOME%, соответственно дерево — всегда папка фара.

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

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

Post by zg »

buniak_a_h wrote:
Sat 14 Mar, 2020 23:54
Возможно, я чего-то не понимаю.
ваш макрос запускается как внешний процесс фаром?

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

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

Post by buniak_a_h »

Какой макрос?
dpr - это файл программы на структурном паскале (на Delphi). Я сделал маленький тестик в одну строчку. Получил exe-шник. Именно его я запускаю из командной строки во время работы панельного модуля. И он отрабатывает правильно (т.е. в соответствии с ожиданием): выводит имя папки, которой соответствует текущий узел дерева.
Я не силён в формулировках; Вы мне уже писали, что переназначить текущий каталог системы невозможно. Но (а) в виндах уже нет такого понятия, как текущий каталог, есть стартовый каталог процесса и (б) я именно имел в виду "запуск внешнего процесса в контексте папки" (по-моему, я именно так и сформулировал). И этот тест показывает, что поведение именно то, что требуется. Так что всё же скорее не я чего-то не понимаю, а Вы.

buniak_a_h
Posts: 1610
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 141 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 “Обсуждение макросов”