Что такое APanel.Path0

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
buniak_a_h
Posts: 696
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h » Mon 23 Apr, 2018 23:01

Возможно, я ошибся форумом, но помогите, пожалуйста, если кто знает.
Цитирую документацию:
Path0 - содержит путь на реальной файловой системе, до вызова плагинов, создающих свою панель (без заключительного '\')
Из этого, вроде, следует, что Path0 запоминается при создании плагином панели и не зависит от позиции, на которой стоит указатель в панели.
ОДНАКО!
Временная панель; содержит следующие файлы:
C:\Root\qqq.txt
C:\Root\Sub\www.txt

Если указатель стоит на первом файле, то APanel.Path0=C:\Root
Если указатель стоит на втором файле, то APanel.Path0=C:\Root\Sub
При том, что «до вызова плагина, создавшего свою панель» (цитата из документации) путь был, естественно, один.
Ну и вдогонку. Есть ли возможность определить каталог, который был при создании временной панели (на самом деле - любой панели плагина)?

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

Что такое APanel.Path0

Post by HaRT » Mon 23 Apr, 2018 23:14

buniak_a_h wrote:
Mon 23 Apr, 2018 23:01
«до вызова плагина, создавшего свою панель» (цитата из документации)
Очевидно, документация написана для случая панели наподобие архивной.
buniak_a_h wrote:
Mon 23 Apr, 2018 23:01
определить каталог, который был при создании временной панели (на самом деле - любой панели плагина)?
Какую задачу вы хотите решить?
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 696
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h » Mon 23 Apr, 2018 23:46

HaRT wrote:
Mon 23 Apr, 2018 23:14
Какую задачу вы хотите решить?
Видимо, довольно часта ситуация: временная панель, полученная после поиска, содержит список файлов в папке и её вложенных подпапках. Требуется скопировать все/отмеченные файлы в другую папку, сохраняя структуру каталогов (относительно "корневой"). Я сделал, но чрезсидалищно перанально... Если получится сделать по уму - думаю, такой сервис будет многим полезен. Впрочем, возможно, он уже есть. Я не нашёл...

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

Что такое APanel.Path0

Post by HaRT » Mon 23 Apr, 2018 23:52

buniak_a_h wrote:
Mon 23 Apr, 2018 23:46
скопировать все/отмеченные файлы в другую папку, сохраняя структуру каталогов (относительно "корневой")
Лично я бы делал через архивирование без сжатия с сохранением относительных путей. И Фар для этого не особо нужен, ну разве что скормить выделенные пути архиватору. Если архиватор умеет писать/читать стандартный выход/вход, то можно даже без явного временного файла.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 696
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h » Tue 24 Apr, 2018 00:25

HaRT wrote:
Mon 23 Apr, 2018 23:52
buniak_a_h wrote:
Mon 23 Apr, 2018 23:46
скопировать все/отмеченные файлы в другую папку, сохраняя структуру каталогов (относительно "корневой")
Лично я бы делал через архивирование без сжатия с сохранением относительных путей. И Фар для этого не особо нужен, ну разве что скормить выделенные пути архиватору. Если архиватор умеет писать/читать стандартный выход/вход, то можно даже без явного временного файла.
Насчёт "Фар для этого не особо нужен" я не понял. С помощью FindStr (Grep) искать, что ли?
Когда-то на MSDOS я так и делал. Не особо удобно...

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

Что такое APanel.Path0

Post by HaRT » Tue 24 Apr, 2018 00:38

Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 12162
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 30 times
Been thanked: 159 times

Что такое APanel.Path0

Post by John Doe » Tue 24 Apr, 2018 08:30

buniak_a_h wrote:
Mon 23 Apr, 2018 23:01
Есть ли возможность определить каталог, который был при создании временной панели (на самом деле - любой панели плагина)?
Можно проверить Path0 стоя на элементе ..

buniak_a_h
Posts: 696
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h » Tue 24 Apr, 2018 09:22

John Doe wrote:
Tue 24 Apr, 2018 08:30
Можно проверить Path0 стоя на элементе ..
Я так и сделал.
В этом есть неудобство. То ли действительно в ФАРе недоделка, то ли я не нашёл нормального способа. Поясню.
В структуре PanelInfo есть два элемента, характеризующие положение указателя на панели: CurrentItem и TopPanelItem. Для получения Path0 я перехожу на первый итем (на ".."), затем по Panel.SetPosIdx возвращаю указатель на старое место. При этом положение на панели меняется. Приходится в цикле делать Keys"Down", пока TopPanelItem не станет таким, как до перемещения. Или я не нашёл способа при перемещении задать TopPanelItem.

Shmuel
Posts: 5678
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 199 times

Что такое APanel.Path0

Post by Shmuel » Tue 24 Apr, 2018 09:40

buniak_a_h wrote:
Tue 24 Apr, 2018 09:22
Или я не нашёл способа при перемещении задать TopPanelItem.
panel.RedrawPanel

User avatar
Wave
Posts: 1759
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 14 times

Что такое APanel.Path0

Post by Wave » Tue 24 Apr, 2018 13:17

А вот скопировать с временной панели с сохранением структуры — это очень и очень полезная фича! Нужна редко, но метко. Трюк с архиватором возьму на заметку, если не забуду к следующему разу, но вообще считаю этот трюк очень перректальным.
Пользуюсь ФАРом больше 20 лет © собирательный.

Shmuel
Posts: 5678
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 199 times

Что такое APanel.Path0

Post by Shmuel » Tue 24 Apr, 2018 13:24

Wave wrote:
Tue 24 Apr, 2018 13:17
А вот скопировать с временной панели с сохранением структуры — это очень и очень полезная фича!
А в чём проблема написать макрос для этого? Есть функции win.CreateDir, win.CopyFile и т.д. Подозреваю, что такой макрос в 20 строк уложится.
Last edited by Shmuel on Tue 24 Apr, 2018 13:28, edited 1 time in total.

buniak_a_h
Posts: 696
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h » Tue 24 Apr, 2018 17:48

Shmuel wrote:
Tue 24 Apr, 2018 13:24
А в чём проблема написать макрос для этого? Есть функции win.CreateDir, win.CopyFile и т.д. Подозреваю, что такой макрос в 20 строк уложится.
Так и пишу. Были несколько проблем (описанных в этой теме). В остальном у меня 64 строки получилось. Это - ещё без подтверждения перезаписи. Сделаю - выложу.

Shmuel
Posts: 5678
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 21 times
Been thanked: 199 times

Что такое APanel.Path0

Post by Shmuel » Tue 24 Apr, 2018 17:59

buniak_a_h wrote:
Tue 24 Apr, 2018 17:48
В остальном у меня 64 строки получилось.
Ну да, 20 строк это слишком оптимистично было сказано.

Smitis
Posts: 1559
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 16 times
Been thanked: 31 times
Contact:

Что такое APanel.Path0

Post by Smitis » Tue 24 Apr, 2018 19:42

buniak_a_h wrote:
Tue 24 Apr, 2018 09:22
Или я не нашёл способа при перемещении задать TopPanelItem.
Тремя вызовами Panel.SetPosIdx: cначала на -1 (в конец), затем на TopPanelItem, затем снова на CurrentItem.

П.С.
Опередили, уже посоветовали panel.RedrawPanel.
Last edited by Smitis on Tue 24 Apr, 2018 19:44, edited 1 time in total.
Разум когда-нибудь победит.

buniak_a_h
Posts: 696
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 67 times
Been thanked: 19 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h » Tue 24 Apr, 2018 20:14


User avatar
Wave
Posts: 1759
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 4 times
Been thanked: 14 times

Что такое APanel.Path0

Post by Wave » Tue 24 Apr, 2018 20:38

buniak_a_h, спасибо! Я как увидел в rss-читалке, сразу же скачал и опробовал. То что надо и работает без нареканий!
Пользуюсь ФАРом больше 20 лет © собирательный.

Post Reply

Return to “Нужна помощь”