PluginPanelItem

Programming Far Manager plugins

PluginPanelItem

Структура 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];
};

Элементы

CreationTime
Время создания - структура FILETIME содержащая время создания файла. FindFirstFile и FindNextFile возвращают время файла в UTC-формате. Эти функции устанавливают элементы FILETIME в ноль, если файловая система, содержащая файл не поддерживает этот временной атрибут. Вы можете использовать функцию FileTimeToLocalFileTime для преобразования из UTC в локальное время и тогда использовать функцию FileTimeToSystemTime для преобразования локального времени в структуру SYSTEMTIME содержащую отдельные элементы для месяца, дня, года и так далее...
LastAccessTime
Структура FILETIME с временем последнего доступа к файлу. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
LastWriteTime
Структура FILETIME с временем последней записи в файл. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
ChangeTime
Структура FILETIME с временем последнего изменения файла. Время хранится в UTC формате; элементы структуры установлены в ноль, если файловая система не поддерживает этого свойства.
FileSize
Размер файла в байтах.
AllocationSize
Выделенный размер файла в байтах.
FileName
Указатель на строку с именем файла.
AlternateFileName
Указатель на строку с альтернативным именем файла.
Description
Указывает на описание файла. Плагин может использовать это поле для передачи описания файла Far Manager'у. Если вы не хотите указывать описания, установите Description в NULL. Если плагин использует стандартную обработку описаний Far Manager'а, и передал имена описаний Far Manager'у в функции GetOpenPanelInfoW, это поле также должно быть NULL.
Owner
Указывает на имя владельца файла. Плагин может использовать это поле для передачи имён владельцев файлов Far Manager'у. Если Вам это не нужно, установите это поле в NULL.
CustomColumnData
Указывает на массив адресов строк для определённых плагином типов колонок. Первая строка содержит данные для типа колонки C0, вторая - для C1 и т.д. Может быть задано до 100 дополнительных типов колонок от C0 до C99. Если вы не нуждаетесь в дополнительных типах колонок, установите это поле в NULL.
CustomColumnNumber
Число строк с данными о дополнительных типах колонок.
Flags
Может быть комбинацией следующих значений (тип PLUGINPANELITEMFLAGS):
ФлагОписание
PPIF_PROCESSDESCR Использовать внутреннюю обработку описаний Far Manager'а.
Этот флаг может быть установлен для обрабатываемых файлов в функциях DeleteFilesW, GetFilesW и PutFilesW. В этом случае Far Manager будет обновлять файлы описаний с именами, возвращёнными в функции GetOpenPanelInfoW.
PPIF_SELECTED Этот флаг отвечает за выделение элемента.
В функциях PutFilesW, GetFilesW и ProcessHostFileW, если операция не удалась, но часть файлов была успешно обработана, плагин может убрать выделение только с обработанных файлов.
Для этого плагин должен очистить флаг PPIF_SELECTED у обрабатываемых элементов в переданном функции списке PluginPanelItem.
PPIF_NONE Нулевой флаг.
UserData
Это поле может быть использовано плагином для хранения целого значения или указателя на структуру данных.
В последнем случае, когда UserData.Data указывает на структуру данных и требуется её освобождение, то плагин должен определить функцию UserData.FreeData, используемую Far Manager'ом для освобождения занятых ресурсов.
FileAttributes
Указывает атрибуты найденного файла. Этот элемент может быть комбинацией следующих значений:
АтрибутОписание
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 Этот файл - виртуальный файл.
NumberOfLinks
Количество жёстких ссылок.
CRC32
Контрольная сумма. Far Manager не использует это поле. Если плагин использует это поле, необходимо выставить флаг OPIF_USECRC32.
Reserved
Поля зарезервированы для будущего использования. Установите в 0.

Замечания

  1. Все данные, выделенные плагином для членов FileName, AlternateFileName, Description, Owner и CustomColumnData, должны быть освобождены им. Far Manager создаёт копии этих данных в своих внутренних структурах. Таким образом они могут быть освобождены в любой момент после передачи Far Manager'у в функции GetFindDataW.
  2. При запросе файлового объекта с панели Far Manager'а - если файл имеет длинное имя, то полное имя возвращается в элементе FileName, а усеченная версия формата 8.3 сохраняется в AlternateFileName. Иначе AlternateFileName пусто.
  3. При запросе файлового объекта с панели плагина - AlternateFileName может содержать любую строку сформированную плагином, т.е. за содержимое отвечает опрашиваемый плагин.
  4. Не все файловые системы позволяют хранить время создания файла и последнего доступа к нему, и не все системы хранят их одинаково. Например, в файловой системе FAT под Windows NT время создания файла записывается с разрешением 10 миллисекунд, время последней модификации - 2 секунды, а время доступа - 1 день (то есть, фактически, записывается только дата доступа). На файловой системе NTFS время доступа имеет разрешение 1 час.
Смотрите также: