PluginPanelItem описывает элемент файловой системы плагина. Она используется для возвращения информации о файловой системе плагина и для передачи плагину списка файлов для обработки.
struct PluginPanelItem
{
FILETIME CreationTime;
FILETIME LastAccessTime;
FILETIME LastWriteTime;
FILETIME ChangeTime;
unsigned __int64 FileSize;
unsigned __int64 AllocationSize;
const wchar_t *FileName;
const wchar_t *AlternateFileName;
const wchar_t *Description;
const wchar_t *Owner;
const wchar_t * const *CustomColumnData;
size_t CustomColumnNumber;
PLUGINPANELITEMFLAGS Flags;
struct
{
void *Data;
FARPANELITEMFREECALLBACK FreeData;
} UserData;
uintptr_t FileAttributes;
uintptr_t NumberOfLinks;
uintptr_t CRC32;
intptr_t Reserved[2];
};
Description в NULL. Если плагин
использует стандартную обработку описаний Far Manager'а, и передал имена описаний Far Manager'у в функции GetOpenPanelInfoW, это поле также должно быть NULL.NULL.C0
до C99. Если вы не нуждаетесь в дополнительных типах колонок, установите это поле в NULL.| Флаг | Описание |
|---|---|
| PPIF_PROCESSDESCR | Использовать внутреннюю обработку описаний Far Manager'а. Этот флаг может быть установлен для обрабатываемых файлов в функциях DeleteFilesW, GetFilesW и PutFilesW. В этом случае Far Manager будет обновлять файлы описаний с именами, возвращёнными в функции GetOpenPanelInfoW. |
| PPIF_SELECTED | Этот флаг отвечает за выделение элемента. В функциях PutFilesW, GetFilesW и ProcessHostFileW, если операция не удалась, но часть файлов была успешно обработана, плагин может убрать выделение только с обработанных файлов. Для этого плагин должен очистить флаг PPIF_SELECTED у обрабатываемых элементов в переданном функции списке PluginPanelItem. |
| PPIF_NONE | Нулевой флаг. |
UserData.Data указывает на структуру данных и требуется её освобождение, то плагин должен определить функцию UserData.FreeData, используемую Far Manager'ом для освобождения занятых ресурсов.| Атрибут | Описание |
|---|---|
| FILE_ATTRIBUTE_ARCHIVE | Это архивный файл. Приложения должны использовать этот флаг для копирования, архивирования или удаления. |
| FILE_ATTRIBUTE_COMPRESSED | Файл или каталог сжат. Для файла это означает, что все данные его сжаты, для каталога - что компрессия по умолчанию применяется ко всем его файлам и подкаталогам. |
| FILE_ATTRIBUTE_DIRECTORY | Это каталог. |
| FILE_ATTRIBUTE_ENCRYPTED | Файл или каталог зашифрован. Для файла, это означает, что все данные в файле зашифрованы. Для директория, это означает, что шифрование является умолчанием для вновь созданных файлов и подкаталогов. |
| FILE_ATTRIBUTE_HIDDEN | Файл скрыт. Такой файл не включается в обычный листинг каталога. |
| FILE_ATTRIBUTE_NORMAL | У этого файла не установлены другие атрибуты. Это значение корректно только при использовании без остальных флагов. |
| FILE_ATTRIBUTE_OFFLINE | Данные файла не доступны непосредственно. Означает, что реальные данные файла были физически перемещены на устройства хранения. |
| FILE_ATTRIBUTE_READONLY | Файл только для чтения. Приложения могут читать такой файл, но не могут записывать или удалять его. |
| FILE_ATTRIBUTE_REPARSE_POINT | Каталог является точкой повторной обработки. |
| FILE_ATTRIBUTE_SPARSE_FILE | Файл является т.н. "Sparse file". |
| FILE_ATTRIBUTE_SYSTEM | Этот файл - часть операционной системы. |
| FILE_ATTRIBUTE_TEMPORARY | Это временный файл. Приложения должны записывать в такой файл только в крайней необходимости. Большая часть данных файла находится в памяти и не сбрасывается на диск, так как файл будет удален. |
| FILE_ATTRIBUTE_NOT_CONTENT_INDEXED | Этот файл или каталог не будут индексироваться службой индексирования. |
| FILE_ATTRIBUTE_VIRTUAL | Этот файл - виртуальный файл. |
0.FileName, AlternateFileName, Description, Owner и CustomColumnData, должны быть освобождены им.
Far Manager создаёт копии этих данных в своих внутренних структурах. Таким образом они могут быть освобождены в любой момент после передачи Far Manager'у в
функции GetFindDataW.
FileName, а усеченная версия формата 8.3 сохраняется в AlternateFileName. Иначе AlternateFileName пусто.
AlternateFileName может содержать любую строку сформированную плагином, т.е. за содержимое отвечает опрашиваемый плагин.