IgorZ wrote: ↑Wed 17 Apr, 2019 12:26 Описание:
Скрипт является панельным модулем, предназначенным заменять временную панель при выводе результатов поиска файлов. Основные отличия
- форма вывода информации приближёна к формату результатов поиска в диалоге поиска Far.
- функциональность скрипта, в отличие от стандартной временной панели, ограничена реальными файлами.
- вызов путём нажатия на кнопку
[ Панель ]
диалога поиска файлов (обычно с последующим выбором пунктаLuaMacro
из меню). В этом режиме файлы из диалога результатов поиска копируются в данную панель и, опционально, во временную панель Far, которая в этом случае опционально может быть открыта на пассивной панели Far.- вызов путём выбора пункта
Панель результатов поиска файлов
из меню плагинов/дисков Far
или с помощью клавиатурной комбинацииAltShiftF6
(только при активной временной панели). Данный способ работает, если на активной панели Far открыта временная панель (при этом в панель копируются файлы из временной панели, и данная панель открывается в активной панели Far вместо временной), или если данная панель уже открывалась и была закрыта(открывается на активной панели с предыдущим содержимым).
Требуемая версия Far 3.0.5182+.
Замечание: скрипт передаёт список содержимого плагину "Временная панель" через файл. Сборки плагина 107-109 при заполнении Временной панели содержимым из файла для каждого элемента заполняютAPanel.UNCPath
полным именем (включая абсолютный путь) файла-списка. Если это может сломать работу Ваших скриптов, используйте сборку Временной панели 106 от более ранней версии Far, а лучше перейдите на Far 3.0.5641+, содержащий Временную панель сборки 110+ с устранённой вышеописанной особенностью.
- Предрелизные версии можно найти в данной теме ниже.
- Версия 1.0.0 - Первый релиз.
- Версия 1.0.1 - Исправлена ошибка в языковых файлах. Добавлена независимость от расширения файла.
- Версия 1.1.0 - Добавлена стандартная обработка F5/ShiftF5/F6/ShiftF6/F8/ShiftF8/ShiftDel/AltDel/Enter/CtrlPgDn. Добавлена обработка AltShiftF3 (перейти на файл под курсором в пассивной панели), AltF5 (скопировать на пассивную панель с учётом путей), AltF6 (перенести на пассивную панель с учётом путей), AltShiftF5 (скопировать содержимое панели на временную и открыть её на пассивной панели), AltShiftF6 (скопировать содержимое панели на временную и открыть её активной панели вместо данной), F7 (убрать файл с панели, не трогать на диске). При выделении каталога вместо него выделяются все файлы в нём и его подкаталогах. После закрытия список файлов сохраняется и восстанавливается при повторном открытии через меню дисков/плагинов. Добавлен неполноэкранный режим панели. Пункт добавлен в меню дисков. Рефакторинг.
- Версия 1.1.1 - Исправлены две обнаруженные ошибки.
- Версия 1.2.0 - Показываются результаты поиска в архиве.
- Версия 1.2.1 - Настройка использования 7zip. Обработка F3/F4/F5/F6/F7/F8/Del в архивах. Исправление обнаруженных ошибок. Рефакторинг.
- Версия 1.2.2 - Опциональная принудительная настройка колонок для списка результатов поиска. Рефакторинг.
- Версия 1.2.3 - Исправлено чтение файлов с временной панели. Рефакторинг.
В общем, чтоб не быть голословным (а если честно, просто самому захотелось попробовать сделать), я сляпал простейший панельный модулёк.Во вложении он же в архиве.
local F = far.Flags local Title ="TmpPanel" local DirSortMode PanelModule{ Info={ Guid=win.Uuid("BA461384-095B-4D0F-AA87-07365A0E2AF6"); Title=Title; Description="Временная панель, как окно поиска"; Version="0.1"; Author="IgorZ"; }; -- Open=function(OpenFrom) if OpenFrom==F.OPEN_FINDLIST then DirSortMode = band(panel.GetPanelInfo(nil,1).Flags,F.PFLAGS_DIRECTORIESFIRST)~=0 return {} end end; -- SetFindList=function(object,_,Items) object.List = Items return true end; -- GetFindData=function (object) local Items = {win.GetFileInfo(object.List[1].FileName:match("^(.*)\\[^\\]*$"))} Items[1].FileName = far.ConvertPath(Items[1].FileName,F.CPM_FULL) for _,PI in ipairs(object.List) do Items[#Items+1] = { LastWriteTime = PI.LastWriteTime, LastAccessTime = PI.LastAccessTime, CreationTime = PI.CreationTime, ChangeTime = PI.ChangeTime, FileSize = PI.FileSize, AllocationSize = PI.AllocationSize, FileName = PI.FileAttributes:match("d") and PI.FileName or " "..PI.FileName:match("[^\\]*$"), AlternateFileName = PI.AlternateFileName, FileAttributes = PI.FileAttributes, Flags = PI.Flags, NumberOfLinks = PI.NumberOfLinks, CRC32 = PI.CRC32, Description = PI.Description, Owner = PI.Owner, CustomColumnData = PI.CustomColumnData, UserData = PI.UserData, } end return Items end; -- GetOpenPanelInfo=function() return { Flags = F.OPIF_DISABLEFILTER+F.OPIF_DISABLESORTGROUPS+F.OPIF_ADDDOTS+F.OPIF_REALNAMES; PanelTitle = Title; PanelModesArray = {{ ColumnTypes = "D,T,S,A,N"; ColumnWidths = "10,8,0,0,0"; StatusColumnTypes = "N"; StatusColumnWidths = "0"; Flags = F.PMFLAGS_FULLSCREEN; }}; PanelModesNumber = 1; StartPanelMode = "1"; StartSortMode = F.SM_UNSORTED; StartSortOrder = 0; ShortcutData = ""; } end; -- ProcessPanelEvent=function(_,_,Event) if Event==F.FE_GOTFOCUS then panel.SetDirectoriesFirst(nil,1) end return false end; -- ProcessPanelInput=function(object,_,rec) if rec.EventType== F.KEY_EVENT and APanel.CurPos>2 and not object.List[APanel.CurPos-2].FileAttributes:match("d") then if rec.VirtualKeyCode==0x73 and band(rec.ControlKeyState,0x1f)==0 then local fn = object.List[APanel.CurPos-2].FileName editor.Editor(fn) object.List[APanel.CurPos-2] = win.GetFileInfo(fn) panel.UpdatePanel(nil,1,true) return true end end return false end; -- ClosePanel=function() panel.SetDirectoriesFirst(nil,1,DirSortMode) end; }GeSHi © Codebox Plus Extension
Как использовать: кладём в папку scripts, перезапускаем Far (или просто перезагружаем макросы), набираем в нужном каталогеAltF7
, после завершения сканирования жмём[Панель]
, выбираем плагин LuaMacro и получаем результат. В данной версии предусмотрено только редактирование файлов поF4
, это, по сути, демка.
TmpPanel.lua.7z
Панель для результатов поиска файлов
Панель для результатов поиска файлов
IgorZ wrote: ↑Wed 17 Apr, 2019 12:26 Описание:
Скрипт является панельным модулем, предназначенным заменять временную панель при выводе результатов поиска файлов. Основные отличия
- форма вывода информации приближёна к формату результатов поиска в диалоге поиска Far.
- функциональность скрипта, в отличие от стандартной временной панели, ограничена реальными файлами.
Требуемая версия Far 3.0.5182+.
Замечание: скрипт передаёт список содержимого плагину "Временная панель" через файл. Сборки плагина 107-109 при заполнении Временной панели содержимым из файла для каждого элемента заполняютAPanel.UNCPath
полным именем (включая абсолютный путь) файла-списка. Если это может сломать работу Ваших скриптов, используйте сборку Временной панели 106 от более ранней версии Far, а лучше перейдите на Far 3.0.5641+, содержащий Временную панель сборки 110+ с устранённой вышеописанной особенностью.
- Attachments
-
- TmpPanel.1.2.3.7z
- (12.73 KiB) Downloaded 100 times
Last edited by IgorZ on Tue 18 Aug, 2020 07:14, edited 16 times in total.
не обновляются атрибуты после редактирования найденных файлов
Переделал.
Во вложении он же в архиве.
Изменения:
Изменения:
- изменён внешний вид, чтобы ещё больше приблизить его к списку поиска;
- благодаря переработке внутренней логики теперь стандартно обрабатываются любые действия Far для панели;
- в качестве побочного эффекта в панели вместо ".." отображается пустая строка (в статусной строке по-прежнему "..").
- Attachments
-
- TmpPanel.lua.0.4.7z
- (1.22 KiB) Downloaded 51 times
Last edited by IgorZ on Mon 22 Apr, 2019 12:27, edited 1 time in total.
-
- Posts: 9
- Joined: Wed 15 Aug, 2018 12:17
- Has thanked: 2 times
не обновляются атрибуты после редактирования найденных файлов
Выводится только одна, первая, строка с именем папки и далее найденные файлы из всех подпапок. А ведь в окне результаты поиска (тому что хотим подражать) выводится каждая строка с путем перед найденными в этой папке файлами (даже если сами папки не ищем).
Пробовал на чистом FAR x86 3.0.5375 и 3.0.5387.
Пробовал на чистом FAR x86 3.0.5375 и 3.0.5387.
не обновляются атрибуты после редактирования найденных файлов
Попробовал на чистом FAR x86 3.0.5387 (скачал с сайта, распаковал, профиль нулевой, . Всё нормально (результат ниже под спойлером). Единственное - первый, корневой, каталог неверно сформировался. Это посмотрю.MasterLogic wrote: ↑Mon 22 Apr, 2019 20:38 Выводится только одна, первая, строка с именем папки и далее найденные файлы из всех подпапок. А ведь в окне результаты поиска (тому что хотим подражать) выводится каждая строка с путем перед найденными в этой папке файлами (даже если сами папки не ищем).
Пробовал на чистом FAR x86 3.0.5375 и 3.0.5387.
Last edited by IgorZ on Tue 23 Apr, 2019 06:40, edited 1 time in total.
-
- Posts: 9
- Joined: Wed 15 Aug, 2018 12:17
- Has thanked: 2 times
не обновляются атрибуты после редактирования найденных файлов
IgorZ, так а запрос какой? Если *.* и стоит галка Искать папки то да, все ок. Но если в той же папке искать к примеру *.txt - строка только одна.
Shmuel, и от этой галки, в таком случае, ничего не меняется.
Но в окне поиска (что и хотим сымитировать) папки выводятся всегда, в независимости от этой галки.
Вообщем у меня выходит так:
-ищем *.*, галка не стоит - папка только первая;
-ищем *.*, галка стоит - все ок как и надо;
-ищем *.txt, галка стоит или не стоит - папка только первая.
И везде в первой строке последний каталог дважды.
Shmuel, и от этой галки, в таком случае, ничего не меняется.
Но в окне поиска (что и хотим сымитировать) папки выводятся всегда, в независимости от этой галки.
Вообщем у меня выходит так:
-ищем *.*, галка не стоит - папка только первая;
-ищем *.*, галка стоит - все ок как и надо;
-ищем *.txt, галка стоит или не стоит - папка только первая.
И везде в первой строке последний каталог дважды.
не обновляются атрибуты после редактирования найденных файлов
Оказывается, Far передаёт список найденных файлов панели довольно неожиданно (по крайней мере, для меня), хоть и логично. Если искать с текущей папки, то текущую папку он не включает в список. И это я правил сразу (хоть и некорректно, как оказалось). Если же искать в отмеченных папках, то не включаются все отмеченные (корневые, так сказать). То же относится и к поиску по путям. В общем, вроде, новая версия должна работать корректно с любыми вариантами настроек.
Во вложении он же в архиве.
Изменения:
Изменения:
- переделана обработка каталогов.
- Attachments
-
- TmpPanel.0.5.7z
- (1.26 KiB) Downloaded 39 times
Last edited by IgorZ on Tue 23 Apr, 2019 09:32, edited 1 time in total.
-
- Posts: 9
- Joined: Wed 15 Aug, 2018 12:17
- Has thanked: 2 times
Панель для результатов поиска
Да, сейчас список строится правильно. Спасибо.
Желательно еще чтобы при нажатии кнопки Панель в окне результатов не только строить этот список, но и передавать параллельно его во Временную панель (как из коробки), чтобы он не потерялся и можно было копировать и т.д.
Это не сложно доделать?
Желательно еще чтобы при нажатии кнопки Панель в окне результатов не только строить этот список, но и передавать параллельно его во Временную панель (как из коробки), чтобы он не потерялся и можно было копировать и т.д.
Это не сложно доделать?
Панель для результатов поиска
Не знаю. Посмотрю, но не гарантирую.MasterLogic wrote: ↑Tue 23 Apr, 2019 10:30 Да, сейчас список строится правильно. Спасибо.
Желательно еще чтобы при нажатии кнопки Панель в окне результатов не только строить этот список, но и передавать параллельно его во Временную панель (как из коробки), чтобы он не потерялся и можно было копировать и т.д.
Это не сложно доделать?
-
- Posts: 6194
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 31 times
- Been thanked: 337 times
Панель для результатов поиска
Можно создать файл-список, перейти на вторую панель и передать имя этого файла с комстроки: tmp:<имя файла>.MasterLogic wrote: ↑Tue 23 Apr, 2019 10:30 передавать параллельно его во Временную панель (как из коробки), чтобы он не потерялся и можно было копировать и т.д.
Панель для результатов поиска
Собственно, уже. Во вложении он же в архиве.Shmuel wrote: ↑Tue 23 Apr, 2019 11:18Можно создать файл-список, перейти на вторую панель и передать имя этого файла с комстроки: tmp:<имя файла>.MasterLogic wrote: ↑Tue 23 Apr, 2019 10:30 передавать параллельно его во Временную панель (как из коробки), чтобы он не потерялся и можно было копировать и т.д.
Изменения:
- На пассивной панели открывается временная панель, куда копируется список файлов.
- Attachments
-
- TmpPanel.0.6.7z
- (1.44 KiB) Downloaded 46 times
Last edited by IgorZ on Tue 23 Apr, 2019 12:30, edited 1 time in total.
-
- Posts: 9
- Joined: Wed 15 Aug, 2018 12:17
- Has thanked: 2 times
Панель для результатов поиска
В таком варианте на времен.панель попадают и папки, которые результатом поиска не являются (те что в основном открывающемся списке были для удобства). А передать данные во времен.панель никак кроме как в лоб, через внеш.файл нельзя, так как делалось фаром по дефолту?
Если нет, тогда возможно проще чтобы фар сам обрабатывал кнопку Панель, т.е. передал туда результаты поиска, а макрос вместо времен.панели выводил этот свой список.
Панель для результатов поиска
Образно говоря, Вам шашечки, или ехать? Данные передаются, а как это делается - какая Вам разница?MasterLogic wrote: ↑Tue 23 Apr, 2019 14:04В таком варианте на времен.панель попадают и папки, которые результатом поиска не являются (те что в основном открывающемся списке были для удобства). А передать данные во времен.панель никак кроме как в лоб, через внеш.файл нельзя, так как делалось фаром по дефолту?
Папки могу не передавать - это несложно сделать.
А это уже никак. Временная панель ничего не знает про сторонний скрипт, следовательно, ничего не сможет в него передать.MasterLogic wrote: ↑Tue 23 Apr, 2019 14:04 Если нет, тогда возможно проще чтобы фар сам обрабатывал кнопку Панель, т.е. передал туда результаты поиска, а макрос вместо времен.панели выводил этот свой список.
И ещё. Макрос - это то, что запускается по нажатию комбинации клавиш. То, что я сваял, является панельным модулем.
- John Doe
- Бюрократ
- Posts: 13000
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 40 times
- Been thanked: 310 times
Панель для результатов поиска
Ну, в принципе может, это я слегка неточно выразился. Временная панель не сможет после открытия автоматически запустить скрипт. То есть, нужно запускать скрипт (причём, существенно переписанный заново) вручную. Налицо существенное ухудшение удобства пользования. Зачем?