Под “панелями” понимаются следующие области: файловые панели (Shell
), информационная панель (Info
), панель быстрого просмотра (QView
), панель дерева папок (Tree
).
Все плагиновые панели относятся к файловым (Shell
).
boolean
)APanel.Bof
, PPanel.Bof
APanel.Eof
, PPanel.Eof
APanel.Empty
, PPanel.Empty
APanel.Filter
, PPanel.Filter
APanel.Folder
, PPanel.Folder
APanel.LFN
, PPanel.LFN
APanel.Plugin
, PPanel.Plugin
APanel.Root
, PPanel.Root
APanel.Selected
, PPanel.Selected
APanel.FilePanel
, PPanel.FilePanel
APanel.Left
, PPanel.Left
APanel.Visible
, PPanel.Visible
Префикс APanel.
относится к активной панели, PPanel.
— к пассивной.
APanel.ColumnCount
, PPanel.ColumnCount
number
APanel.CurPos
, PPanel.CurPos
number
APanel.Current
, PPanel.Current
string
APanel.DriveType
, PPanel.DriveType
number
содержит тип привода на панели:
-1
0
2
3
4
5
6
15
APanel.ItemCount
, PPanel.ItemCount
number
APanel.Path
, PPanel.Path
string
\
’)
APanel.SelCount
, PPanel.SelCount
number
APanel.UNCPath
, PPanel.UNCPath
string
\
’); для плагиновой панели — prefix:[hostfile/]path
APanel.Format
, PPanel.Format
string
APanel.HostFile
, PPanel.HostFile
string
APanel.OPIFlags
, PPanel.OPIFlags
number
набор битовых флагов, характеризующих свойства плагиновой панели:
0x00000001
0x00000002
0x00000004
0x00000010
0x00000020
используется стандартная обработка файла FAR’ом, если запрошенная операция не поддерживается плагином;
если этот флаг указан, элементы на панели плагина являются именами реальных файлов
0x00000040
0x00000080
0x00000100
имена файлов показаны в оригинальном регистре (независимо от настроек FAR).
Если панель не плагиновая, то значение будет = 0
APanel.Path0
, PPanel.Path0
string
содержит путь на реальной файловой системе, до вызова плагинов, создающих свою панель (без заключительного ‘\
’).
Примечание: путь в корне диска будет содержать заключительный ‘\
’.
APanel.Prefix
, PPanel.Prefix
string
:
’)
APanel.Height
, PPanel.Height
number
APanel.Width
, PPanel.Width
number
APanel.Type
, PPanel.Type
number
содержит тип панели:
0
1
2
3
Префикс APanel.
относится к активной панели, PPanel.
— к пассивной.
b=Panel.FAttr(panelType,S)
Возвращает файловые атрибуты файла/папки S
из активной (panelType=0
) или пассивной (panelType=1
) панели.
0x00000001
FILE_ATTRIBUTE_READONLY
. Файл только для чтения.
0x00000002
FILE_ATTRIBUTE_HIDDEN
. Файл скрыт.
0x00000004
FILE_ATTRIBUTE_SYSTEM
. Этот файл — часть операционной системы.
0x00000010
FILE_ATTRIBUTE_DIRECTORY
. Это папка.
0x00000020
FILE_ATTRIBUTE_ARCHIVE
. Это архивный файл.
0x00000080
FILE_ATTRIBUTE_NORMAL
. У этого файла не установлены другие атрибуты.
0x00000100
FILE_ATTRIBUTE_TEMPORARY
. Это временный файл.
0x00000200
FILE_ATTRIBUTE_SPARSE_FILE
. Файл является разрежённым.
0x00000400
FILE_ATTRIBUTE_REPARSE_POINT
. Папка является точкой повторной обработки.
0x00000800
FILE_ATTRIBUTE_COMPRESSED
. Файл или папка сжаты.
0x00001000
FILE_ATTRIBUTE_OFFLINE
. Данные файла не доступны непосредственно.
0x00002000
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
.
0x00004000
FILE_ATTRIBUTE_ENCRYPTED
. Файл или папка зашифрованы.
0x00010000
FILE_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
функция возвращает следующие свойства элемента:
0
string
1
string
2
number
3
string
15
number
4
string
16
number
5
string
17
number
20
string
21
number
6
number
7
number
8
boolean
9
number
10
number
11
string
12
string
13
number
14
number
18
number
19
number
22
23
number
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
может быть одним из следующих значений:
0
1
2
3
Необязательный параметр Mode
может принимать следующие значения:
0
/ или не указанAction
для всех элементов
Items
игнорируется
1
number
Action
для элемента с индексом Items
.
Items
является числом — индексом элемента панели.
Если Items = 0
(или отсутствует) — выполнить действие Action
для текущего элемента.
2
string
Action
для элементов, указанных в Items
.
Items
является строкой — списком имён файловых объектов (возможно с полными путями).
3
string
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
.
Параметры:
Mode
100
и ≤0x7FFFFFFF
Settings
таблица, содержит следующие поля:
Condition
Panel.LoadCustomSortMode()
.
Compare
DirectoriesFirst
, SelectedFirst
, RevertSorting
, SortGroups
0
— опция выключена, 1
— опция включена, любое другое значение или отсутствие данного поля означают “использовать текущую установку Far Manager”.
InvertByDefault
Indicator
NoSortEqualsByName
true
.
Description
Panel.CustomSortMenu
).
SortFunction
shellsort
” (значение по умолчанию) или “qsort
”.
InitSort
FarOptions
(см. ниже одноимённый параметр функции Compare
).
EndSort
Если значение Settings
равно nil
или false
, это означает выгрузку (удаление) данного режима сортировки.
Возвращает: Ничего
Compare
result=Compare(Pi1,Pi2,FarOptions)
Параметры:
Pi1
и Pi2
SortingPanelItem
.
FarOptions
DirectoriesFirst
, 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
). Иначе не будет произведено никаких действий.
Параметры
Mode
100
и ≤0x7FFFFFFF
whatpanel
0
=активная панель, 1
=пассивная панель
order
auto
” — стандартный выбор направления сортировки (значение по умолчанию)
current
” — сохранить текущее направление сортировки в панели
direct
” — установить прямую сортировку
reverse
” — установить обратную сортировку
Возвращает: Ничего
Пример:
1
.Panel.SetPos()
, Panel.SetPath()
и Panel.SetPosIdx()
макросы замораживаются до момента выполнения этих функций.На “больших” папках (например, сетевые, с большим количеством файловых объектов и/или медленных каналах) эти функции могут выводить сообщения о процессе сбора данных о файлах/папках, с возможностью отменить процесс по Esc.
Смотрите также: