Копирование файлов на временную панель

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 2854
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 154 times
Been thanked: 406 times
Contact:

Копирование файлов на временную панель

Post by buniak_a_h »

Здравствуйте!
Предлагаю к обсуждению скрипт для копирования отмеченных файлов на временную панель.
Суть скрипта такова:
1. Вешается обработчик событий на инициализацию и закрытие стандартного диалога копирования файлов
2. При инициализации в историю добавляется имя временной панели (в зависимости от язка может быть разное)
3. При закрытии диалога, если нажата кнопка "по умолчанию" и в качестве приёмника указана временна панель, то происходит отказ от реального копирования, а помеченные элементы добавляются на временную панель. После этого состояние панелей (видимость, тип) восстанавливается.
--
Отсюда ограничение: не гарантируется корректность работы скрипта, если пассивная панель открыта плагином, не поддерживающим функцию far.SetPanelDirectory (я знаю один такой: MultiArc). Также не проверялась работа скрипта, если активная панель - плагиновая. НО! Даже если работать не будет, полезность скрипта лично у меня не вызывает сомнений, т.к. постоянно приходится переключаться на временную панель и добавлять…


CopySelectedToTempPanel.v1_1_0.7z
(23.09 KiB) Downloaded 46 times
Last edited by buniak_a_h on Fri 17 Jan, 2020 13:32, edited 4 times in total.
LAT
Posts: 340
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 21 times
Been thanked: 38 times

Копирование файлов на временную панель

Post by LAT »

Latest post of the previous page:

buniak_a_h wrote: Tue 14 Jan, 2020 22:36Варианты решения...
Да, это более надежно, чем предложил я.
buniak_a_h
Posts: 2854
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 154 times
Been thanked: 406 times
Contact:

Копирование файлов на временную панель

Post by buniak_a_h »

LAT, учтены Ваши замечания, реализовано, как я писал.
Вышла версия 1.1.0:
  1. Добавлен контроль введённого пути назначения. Если строка-целевая папка начинается с заголовка временной панели или префикса с двоеточием (например, «Temporary panel:» или «tmp:»), и после двоеточия имеются "лишние" символы, то задаётся уточняющий вопрос, что пользователь имеет в виду: временную панель (вкралась ошибка) или файл с альтернативными потоками. Кроме указанных вариантов предоставляется возможность "передумать"; в этом случае фокус передаётся на поле ввода целевой папки.
  2. Добавлена локализация; в комплект поставки добавлено два языковых файла.
User avatar
Wave
Posts: 1801
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 5 times
Been thanked: 19 times

Копирование файлов на временную панель

Post by Wave »

На секундочку, а это так и задумано?

Code: Select all

files       = [[%FARPROFILE%\modules\BAX\BaxUtils.lua, %FARPROFILE%\modules\BAX\TmpPanelUtils.lua, %FARPROFILE%\modules\BAX\GetMsg.lua, CopySelectedToTempPanel*.lng]];
Разве не должно быть %FARPROFILE%\Macros\modules\
Пользуюсь ФАРом больше 20 лет © собирательный.
buniak_a_h
Posts: 2854
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 154 times
Been thanked: 406 times
Contact:

Копирование файлов на временную панель

Post by buniak_a_h »

Wave wrote: Sun 10 Jan, 2021 21:57 На секундочку, а это так и задумано?

Code: Select all

files       = [[%FARPROFILE%\modules\BAX\BaxUtils.lua, %FARPROFILE%\modules\BAX\TmpPanelUtils.lua, %FARPROFILE%\modules\BAX\GetMsg.lua, CopySelectedToTempPanel*.lng]];
Разве не должно быть %FARPROFILE%\Macros\modules\
В самом макросе написано require"BAX.TmpPanelUtils", require"BAX.GetMsh" и т.п. . Я не очень стал разбираться с загрузчиком модулей (там очень много буковок), единственно, что я "вычислил" (на примерах других скриптов) - это что если в require написано AAA.BBB, то загрузка модуля происходит из подкаталога AAA, файла BBB.lua папки …\macros\modules. Чем и пользуюсь: все мои модули расположены в подпапке BAX.
Last edited by buniak_a_h on Mon 11 Jan, 2021 01:43, edited 1 time in total.
buniak_a_h
Posts: 2854
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 154 times
Been thanked: 406 times
Contact:

Копирование файлов на временную панель

Post by buniak_a_h »

Wave, добавочка.
Приведённая Вами цитата вообще относится к макросу Info. Я нигде строгого описания правил оформления этой таблицы не встречал. Наверно, Вы правы (ScriptsBrowser не показывает такую конструкцию). Но это вроде как неправильно. От этой строки ничего не зависит, переписывайте как хотите.
Last edited by buniak_a_h on Mon 11 Jan, 2021 01:45, edited 1 time in total.
buniak_a_h
Posts: 2854
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 154 times
Been thanked: 406 times
Contact:

Копирование файлов на временную панель

Post by buniak_a_h »

Wave, главное-то я и не заметил. Конечно, там должно быть слово macros. Просто я не знаю, на что это влияет. И ошибочка, видимо, в ScriptsBrowser закралась: в просмотре списка файлов, если сначала идут модули, а затем - CopySelectedToTempPanel*.lng, то в список попадает CopySelectedToTempPanelCopySelectedToTempPanel*.lng. Хотя, возможно, это - результат уже моих переделок. Разберусь - напишу автору (если это его касается).
User avatar
Wave
Posts: 1801
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 5 times
Been thanked: 19 times

Копирование файлов на временную панель

Post by Wave »

Угу, отлично. Себе-то я сразу поправил, ещё до первой же пробы, просто потому, что открыл посмотреть, как это сделано, и глаза сами уцепились, что что-то не то.
Кстати, вообще-то спасибо за скрипт — оказывается, удобно.
Пользуюсь ФАРом больше 20 лет © собирательный.
buniak_a_h
Posts: 2854
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 154 times
Been thanked: 406 times
Contact:

Копирование файлов на временную панель

Post by buniak_a_h »

Wave wrote: Mon 11 Jan, 2021 12:13 посмотреть, как это сделано
Сделано было ДО того, как появился far.Host (в частности, far.Host.PutFiles). Всё руки не доходят попробовать…
Post Reply

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