PluginPanelItem

Структура PluginPanelItem описывает элемент файловой системы в файловой системе эмулируемой плагином. Она используется для возвращения информации о файловой системе плагина и для передачи плагину списка файлов для обработки.

ВНИМАНИЕ! ВНИМАНИЕ!

struct PluginPanelItem
{
#ifndef _FAR_USE_WIN32_FIND_DATA
  struct FAR_FIND_DATA   FindData;
#else
  WIN32_FIND_DATA FindData;
#endif
  DWORD PackSizeHigh;
  DWORD PackSize;
  DWORD Flags;
  DWORD NumberOfLinks;
  char *Description;
  char *Owner;
  char **CustomColumnData;
  int CustomColumnNumber;
  DWORD_PTR UserData;
  DWORD CRC32;
  DWORD Reserved[2];
};

Элементы

FindData
Структура FindData содержит много файловых параметров. См. описание структуры WIN32_FIND_DATA для более подробной информации.
PackSizeHigh
Содержит старшие 4 байта упакованного размера файла, в байтах. Сейчас не используется.
PackSize
Содержит младшие 4 байта упакованного размера файла, в байтах.
Flags
Может быть комбинацией следующих значений (перечисление PLUGINPANELITEMFLAGS):
ФлагОписание
PPIF_PROCESSDESCR Использовать внутреннюю обработку описаний FAR'а. Этот флаг может быть установлен для обрабатываемых файлов в функциях DeleteFiles, GetFiles и PutFiles. В этом случае FAR будет обновлять файлы описаний с именами, возвращенными в функции GetOpenPluginInfo.
PPIF_SELECTED Для Control, в функциях FCTL_GETPANELINFO, FCTL_GETANOTHERPANELINFO, FCTL_SETSELECTION и FCTL_SETANOTHERSELECTION этот флаг позволяет проверить и установить выделение элементов.
В функциях PutFiles, GetFiles и ProcessHostFile, если операция не удалась, но часть файлов была успешно обработана, плагин может убрать выделение только с обработанных файлов.
Для этого плагин должен очистить флаг PPIF_SELECTED у обрабатываемых элементов в переданном функции списке PluginPanelItem.
PPIF_USERDATA Если этот флаг установлен, FAR считает поле UserData указателем на структуру пользовательских данных. Читайте описание UserData для уточнения информации.

Младшее слово параметра Flags может быть использовано плагином для своих собственных флагов.

NumberOfLinks
Количество жестких связей.
Description
Указывает на описание файла. Плагин может использовать это поле для передачи описания файла FAR'у. Если вы не хотите указывать описания, установите Description в NULL. Если плагин использует стандартную обработку описаний FAR'а, и передал имена описаний FAR'у в функции GetOpenPluginInfo, это поле также должно быть NULL.
Owner
Указывает на имя владельца файла. Плагин может использовать это поле для передачи имен владельцев файлов FAR'у. Если Вам это не нужно, установите это поле в NULL.
CustomColumnData
Указывает на массив адресов строк для определенных плагином типов колонок. Первая строка содержит данные для типа колонки C0, вторая - для C1 и т.д. Может быть задано до 10 дополнительных типов колонок от C0 до C9. Если вы не нуждаетесь в дополнительных типах колонок, установите это поле в NULL.
CustomColumnNumber
Число строк с данными о дополнительных типах колонок.
UserData
Это поле может быть использовано плагином для хранения 32-битного значения или указателя на структуру данных. В последнем случае, когда UserData указывает на структуру данных, первое поле этой структуры должно быть 32-битным значением, равным размеру структуры, и плагин должен установить флаг PPIF_USERDATA в поле Flags. Это позволит FAR'у правильно скопировать структуру во внутренний буфер FAR'а и позже передать ее плагину в списках PluginPanelItem. В функции FreeFindData плагин должен освободить память, занятую такими дополнительными структурами.
CRC32
Контрольная сумма. FAR не использует это поле.
Reserved
Зарезервировано для будущего использования. Установите в 0.

Замечания

  1. Все данные, выделенные плагином для членов Description, Owner и CustomColumnData, должны быть освобождены им. FAR создает копии этих данные в своих внутренних структурах. Таким образом они могут быть освобождены в любой момент после передачи FAR'у в функции GetFindData.
  2. Если плагин использует, например, UserData для получения данных о файле, то плагинописатель должен удостовериться в валидности этих данных. Это связано с тем, что при вызове GetFiles из списка найденных файлов FAR передает плагину элементы PluginPanelItem только с одним правильно заполненным членом - FindData, остальные члены установлены в NULL.
Смотрите также:
структуры | _FAR_USE_WIN32_FIND_DATA | FAR_FIND_DATA | TPluginPanelItem