Что такое APanel.Path0

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

Что такое APanel.Path0

Post by buniak_a_h »

Возможно, я ошибся форумом, но помогите, пожалуйста, если кто знает.
Цитирую документацию:
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: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Что такое APanel.Path0

Post by HaRT »

buniak_a_h wrote: Mon 23 Apr, 2018 23:01 «до вызова плагина, создавшего свою панель» (цитата из документации)
Очевидно, документация написана для случая панели наподобие архивной.
buniak_a_h wrote: Mon 23 Apr, 2018 23:01 определить каталог, который был при создании временной панели (на самом деле - любой панели плагина)?
Какую задачу вы хотите решить?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h »

HaRT wrote: Mon 23 Apr, 2018 23:14 Какую задачу вы хотите решить?
Видимо, довольно часта ситуация: временная панель, полученная после поиска, содержит список файлов в папке и её вложенных подпапках. Требуется скопировать все/отмеченные файлы в другую папку, сохраняя структуру каталогов (относительно "корневой"). Я сделал, но чрезсидалищно перанально... Если получится сделать по уму - думаю, такой сервис будет многим полезен. Впрочем, возможно, он уже есть. Я не нашёл...
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Что такое APanel.Path0

Post by HaRT »

buniak_a_h wrote: Mon 23 Apr, 2018 23:46 скопировать все/отмеченные файлы в другую папку, сохраняя структуру каталогов (относительно "корневой")
Лично я бы делал через архивирование без сжатия с сохранением относительных путей. И Фар для этого не особо нужен, ну разве что скормить выделенные пути архиватору. Если архиватор умеет писать/читать стандартный выход/вход, то можно даже без явного временного файла.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h »

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: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

Что такое APanel.Path0

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Что такое APanel.Path0

Post by John Doe »

buniak_a_h wrote: Mon 23 Apr, 2018 23:01 Есть ли возможность определить каталог, который был при создании временной панели (на самом деле - любой панели плагина)?
Можно проверить Path0 стоя на элементе ..
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h »

John Doe wrote: Tue 24 Apr, 2018 08:30 Можно проверить Path0 стоя на элементе ..
Я так и сделал.
В этом есть неудобство. То ли действительно в ФАРе недоделка, то ли я не нашёл нормального способа. Поясню.
В структуре PanelInfo есть два элемента, характеризующие положение указателя на панели: CurrentItem и TopPanelItem. Для получения Path0 я перехожу на первый итем (на ".."), затем по Panel.SetPosIdx возвращаю указатель на старое место. При этом положение на панели меняется. Приходится в цикле делать Keys"Down", пока TopPanelItem не станет таким, как до перемещения. Или я не нашёл способа при перемещении задать TopPanelItem.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Что такое APanel.Path0

Post by Shmuel »

buniak_a_h wrote: Tue 24 Apr, 2018 09:22Или я не нашёл способа при перемещении задать TopPanelItem.
panel.RedrawPanel
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Что такое APanel.Path0

Post by Wave »

А вот скопировать с временной панели с сохранением структуры — это очень и очень полезная фича! Нужна редко, но метко. Трюк с архиватором возьму на заметку, если не забуду к следующему разу, но вообще считаю этот трюк очень перректальным.
Пользуюсь ФАРом больше 20 лет © собирательный.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Что такое APanel.Path0

Post by Shmuel »

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.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h »

Shmuel wrote: Tue 24 Apr, 2018 13:24 А в чём проблема написать макрос для этого? Есть функции win.CreateDir, win.CopyFile и т.д. Подозреваю, что такой макрос в 20 строк уложится.
Так и пишу. Были несколько проблем (описанных в этой теме). В остальном у меня 64 строки получилось. Это - ещё без подтверждения перезаписи. Сделаю - выложу.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Что такое APanel.Path0

Post by Shmuel »

buniak_a_h wrote: Tue 24 Apr, 2018 17:48В остальном у меня 64 строки получилось.
Ну да, 20 строк это слишком оптимистично было сказано.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

Что такое APanel.Path0

Post by Smitis »

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.
Разум когда-нибудь победит.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Что такое APanel.Path0

Post by buniak_a_h »

Post Reply

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