Под “панелями” понимаются следующие области: файловые панели (Shell), информационная панель (Info), панель быстрого просмотра (QView), панель дерева папок (Tree).
Все плагиновые панели относятся к файловым (Shell).
boolean)APanel.Bof, PPanel.BofAPanel.Eof, PPanel.EofAPanel.Empty, PPanel.EmptyAPanel.Filter, PPanel.FilterAPanel.Folder, PPanel.FolderAPanel.LFN, PPanel.LFNAPanel.Plugin, PPanel.PluginAPanel.Root, PPanel.RootAPanel.Selected, PPanel.SelectedAPanel.FilePanel, PPanel.FilePanelAPanel.Left, PPanel.LeftAPanel.Visible, PPanel.VisibleПрефикс APanel. относится к активной панели, PPanel. — к пассивной.
APanel.ColumnCount, PPanel.ColumnCountnumber
APanel.CurPos, PPanel.CurPosnumber
APanel.Current, PPanel.Currentstring
APanel.DriveType, PPanel.DriveTypenumber
содержит тип привода на панели:
-102345615APanel.ItemCount, PPanel.ItemCountnumber
APanel.Path, PPanel.Pathstring
\’)
APanel.SelCount, PPanel.SelCountnumber
APanel.UNCPath, PPanel.UNCPathstring
\’); для плагиновой панели — prefix:[hostfile/]path
APanel.Format, PPanel.Formatstring
APanel.HostFile, PPanel.HostFilestring
APanel.OPIFlags, PPanel.OPIFlagsnumber
набор битовых флагов, характеризующих свойства плагиновой панели:
0x000000010x000000020x000000040x000000100x00000020используется стандартная обработка файла FAR’ом, если запрошенная операция не поддерживается плагином;
если этот флаг указан, элементы на панели плагина являются именами реальных файлов
0x000000400x000000800x00000100имена файлов показаны в оригинальном регистре (независимо от настроек FAR).
Если панель не плагиновая, то значение будет = 0
APanel.Path0, PPanel.Path0string
содержит путь на реальной файловой системе, до вызова плагинов, создающих свою панель (без заключительного ‘\’).
Примечание: путь в корне диска будет содержать заключительный ‘\’.
APanel.Prefix, PPanel.Prefixstring
:’)
APanel.Height, PPanel.Heightnumber
APanel.Width, PPanel.Widthnumber
APanel.Type, PPanel.Typenumber
содержит тип панели:
0123Префикс APanel. относится к активной панели, PPanel. — к пассивной.
b=Panel.FAttr(panelType,S)Возвращает файловые атрибуты файла/папки S из активной (panelType=0) или пассивной (panelType=1) панели.
0x00000001FILE_ATTRIBUTE_READONLY. Файл только для чтения.
0x00000002FILE_ATTRIBUTE_HIDDEN. Файл скрыт.
0x00000004FILE_ATTRIBUTE_SYSTEM. Этот файл — часть операционной системы.
0x00000010FILE_ATTRIBUTE_DIRECTORY. Это папка.
0x00000020FILE_ATTRIBUTE_ARCHIVE. Это архивный файл.
0x00000080FILE_ATTRIBUTE_NORMAL. У этого файла не установлены другие атрибуты.
0x00000100FILE_ATTRIBUTE_TEMPORARY. Это временный файл.
0x00000200FILE_ATTRIBUTE_SPARSE_FILE. Файл является разрежённым.
0x00000400FILE_ATTRIBUTE_REPARSE_POINT. Папка является точкой повторной обработки.
0x00000800FILE_ATTRIBUTE_COMPRESSED. Файл или папка сжаты.
0x00001000FILE_ATTRIBUTE_OFFLINE. Данные файла не доступны непосредственно.
0x00002000FILE_ATTRIBUTE_NOT_CONTENT_INDEXED.
0x00004000FILE_ATTRIBUTE_ENCRYPTED. Файл или папка зашифрованы.
0x00010000FILE_ATTRIBUTE_VIRTUAL. Этот файл — виртуальный файл.
Если файловый объект не существует, функция возвращает -1.
В параметре S допускается использование символов масок ‘*’ и ‘?’. В этом случае функция возвращает атрибуты для первого найденного файла/папки.
В отличие от mf.fattr(), функция работает только с панелями.
itemIdx=Panel.FExist(panelType,S)Проверяет существование файла/папки S из активной (panelType=0) или пассивной (panelType=1) панели.
В параметре S допускается использование символов ‘*’ и ‘?’. В этом случае функция проверяет только первое вхождение файла/папки.
Функция возвращает 0, если такого объекта на панели нет, или индекс элемента.
В отличие от fexist(), функция работает только с панелями.
V=Panel.Item(panelType,itemIdx,Property)Возвращает различную информацию для элемента панели itemIdx из активной (panelType=0) или пассивной (panelType=1) панели.
В зависимости от запрашиваемого Property функция возвращает следующие свойства элемента:
0string
1string
2number
3string
15number
4string
16number
5string
17number
20string
21number
6number
7number
8boolean
9number
10number
11string
12string
13number
14number
18number
19number
2223number
ReparseTag (актуально только для ссылок)
Для панели “Дерево папок” возвращается только имя файла (Property=0), остальные значения Property игнорируются.
Для получения данных о текущем элементе (под курсором) itemIdx должен быть равен 0.
Дата/время могут возвращаться в форматах:
DD.MM.YYYY HH:MM:SS. Разделители и порядок в дате зависят от региональных настроек.Пример — выделить все файлы/папки новее текущего:
local APANEL,CUR_ITEM = 0,0 -- common
local MOD_TIME = 17 -- Panel.Item
local SELECT,MODE_IDX = 1,1 -- Panel.Select
Macro {
description="выделить все файлы/папки новее текущего";
area="Shell"; key="CtrlShiftAdd";
action=function()
local d = Panel.Item(APANEL,CUR_ITEM,MOD_TIME)
for i=1,APanel.ItemCount do
if Panel.Item(APANEL,i,MOD_TIME)>d then
Panel.Select(APANEL,SELECT,MODE_IDX,i)
end
end
end;
}N=Panel.Select(panelType,Action[,Mode[,Items]])Операции с выделением элементов на активной (panelType=0) или пассивной (panelType=1) панели.
Action может быть одним из следующих значений:
0123Необязательный параметр Mode может принимать следующие значения:
0 / или не указанAction для всех элементов
Items игнорируется
1number
Action для элемента с индексом Items.
Items является числом — индексом элемента панели.
Если Items = 0 (или отсутствует) — выполнить действие Action для текущего элемента.
2string
Action для элементов, указанных в Items.
Items является строкой — списком имён файловых объектов (возможно с полными путями).
3string
Action для элементов, подходящих под маски, указанные в Items.
Items является строкой — списком файловых масок.
Для строковых значений Items:
Lf (“\n”) или CrLf (“\r\n”).Items равно "" (или отсутствует) — действие не выполняется.Функция возвращает количество элементов, над которыми производилось Action.
Примеры:
Panel.Select(0,0)Panel.Select(0,1)Panel.Select(0,2)Panel.Select(0,2,1)Panel.Select(0,1,1,10)Panel.Select(0,0,3)Panel.Select(0,1,2,mf.clip(0))E=Panel.SetPath(panelType,path[,filename])На активной (panelType=0) или пассивной (panelType=1) панели выставляет путь path и позиционирует курсор на элемент с именем filename (если указан).
Возвращает true в случае успешной установки пути, и false, если папка не существует.
Например, на активной панели выставить папку C:\WINDOWS, на пассивной — C:\Program Files, активную панель сделать слева и установить курсор на папку FAR:
itemIdx=Panel.SetPos(panelType,filename)Позиционирует курсор на элемент с именем filename на активной (panelType=0) или пассивной (panelType=1) панели.
Возвращает позицию (индекс) элемента или 0, если такого элемента на панели нет.
См. Примеры
itemIdx=Panel.SetPosIdx(panelType,PosIdx[,InSelection])Позиционирует курсор на элемент с индексом itemIdx на активной (panelType=0) или пассивной (panelType=1) панели.
Параметр PosIdx может принимать отрицательные значения, в этом случае элементы панели нумеруются от конца к началу.
Если задать itemIdx=0, то перехода не происходит, просто возвращается текущая позиция.
С помощью необязательного параметр InSelection можно осуществить позиционирование среди отмеченных элементов (для этого нужно указать InSelection=1).
Функция возвращает позицию элемента или 0, если такого элемента на панели нет.
Функции, позволяющие определять и устанавливать пользовательские режимы сортировки, доступны если в качестве движка Lua используется LuaJIT 2.
Panel.CustomSortMenu()Выводит меню со списком загруженных пользовательских сортировок.
Параметры: Нет
Возвращает: Ничего
Нажатие Enter устанавливает выбранный режим сортировки на активной панели, нажатие Ctrl+Enter — на пассивной, Ctrl+Shift+Enter — на обеих.
Клавиши Add и Subtract работают так же, как в меню выбора режима сортировки Far. При этом также поддерживаются модификаторы Ctrl— и Ctrl+Shift—, определяющие выбор панелей для установки режима сортировки.
Panel.LoadCustomSortMode(Mode,Settings)Функция загружает (или выгружает) пользовательский режим сортировки для панелей. Если режим загружен, он может быть установлен в панели посредством вызова функции Panel.SetCustomSortMode.
Параметры:
Mode100 и ≤0x7FFFFFFF
Settingsтаблица, содержит следующие поля:
ConditionPanel.LoadCustomSortMode().
CompareDirectoriesFirst, SelectedFirst, RevertSorting, SortGroups0 — опция выключена, 1 — опция включена, любое другое значение или отсутствие данного поля означают “использовать текущую установку Far Manager”.
InvertByDefaultIndicatorNoSortEqualsByNametrue.
DescriptionPanel.CustomSortMenu).
SortFunctionshellsort” (значение по умолчанию) или “qsort”.
InitSortFarOptions (см. ниже одноимённый параметр функции Compare).
EndSortЕсли значение Settings равно nil или false, это означает выгрузку (удаление) данного режима сортировки.
Возвращает: Ничего
Compareresult=Compare(Pi1,Pi2,FarOptions)
Параметры:
Pi1 и Pi2SortingPanelItem.
FarOptionsDirectoriesFirst, SelectedFirst, RevertSorting, SortGroups, NumericSort, CaseSensitiveSort.
Возвращает:
result: если 1-й элемент должен оказаться после прямой сортировки выше 2-го, нужно возвратить отрицательное число, если ниже — положительное, а если элементы по критерию сортировки равны — ноль.
Примечания:
Пользовательская сортировка использует библиотеку FFI от LuaJIT 2. Программирование с использованием LuaJIT FFI требует предварительного освоения документации.
Пользовательские режимы сортировок панелей восстанавливаются при перезапуске Far, если текущая конфигурация была сохранена, при условии, что соответствующие вызовы Panel.LoadCustomSortMode() производятся в процессе загрузки макросов. Восстановление происходит после окончания загрузки макросов, до начала исполнения автостартующих макросов.
Пользовательские режимы сортировки принудительно выгружаются при выгрузке макросов.
Пример:
-- Загрузить сортировку по длине имени файла.
local ffi = require "ffi"
local C = ffi.C
Panel.LoadCustomSortMode (100,
{
Compare = function(p1, p2, opt)
local l1, l2 = C.wcslen(p1.FileName), C.wcslen(p2.FileName)
return l1<l2 and -1 or l1>l2 and 1 or 0
end;
Description = "sorting by file name length";
Indicator = "bB";
})Panel.SetCustomSortMode(Mode,whatpanel[,order])установка пользовательского режима сортировки Mode в заданной панели
Заданный режим сортировки Mode должен быть предварительно загружен (см. Panel.LoadCustomSortMode). Иначе не будет произведено никаких действий.
Параметры
Mode100 и ≤0x7FFFFFFF
whatpanel0=активная панель, 1=пассивная панель
orderauto” — стандартный выбор направления сортировки (значение по умолчанию)
current” — сохранить текущее направление сортировки в панели
direct” — установить прямую сортировку
reverse” — установить обратную сортировку
Возвращает: Ничего
Пример:
1.Panel.SetPos(), Panel.SetPath() и Panel.SetPosIdx() макросы замораживаются до момента выполнения этих функций.На “больших” папках (например, сетевые, с большим количеством файловых объектов и/или медленных каналах) эти функции могут выводить сообщения о процессе сбора данных о файлах/папках, с возможностью отменить процесс по Esc.
Смотрите также: