OpenPanelInfo

Programming Far Manager plugins

OpenPanelInfo

Структура OpenPanelInfo возвращает в Far Manager информацию о панели плагина в функции GetOpenPanelInfoW.
struct OpenPanelInfo
{
  size_t StructSize;
  HANDLE hPanel;
  OPENPANELINFO_FLAGS Flags;
  const wchar_t *HostFile;
  const wchar_t *CurDir;
  const wchar_t *Format;
  const wchar_t *PanelTitle;
  const struct InfoPanelLine *InfoLines;
  size_t InfoLinesNumber;
  const wchar_t * const *DescrFiles;
  size_t DescrFilesNumber;
  const struct PanelMode *PanelModesArray;
  size_t PanelModesNumber;
  intptr_t StartPanelMode;
  enum OPENPANELINFO_SORTMODES StartSortMode;
  intptr_t StartSortOrder;
  const struct KeyBarTitles *KeyBar;
  const wchar_t *ShortcutData;
  unsigned __int64 FreeSize;
};

Элементы

StructSize
Это поле должно содержать размер структуры OpenPanelInfo. Перед использованием структуры плагин должен заполнить поле.
hPanel
Описатель панели, возвращаемый функцией OpenW. Поле заполнено Far Manager'ом.
Flags
Комбинация следующих значений (тип OPENPANELINFO_FLAGS):
ФлагОписание
OPIF_DISABLEFILTER Отключить фильтр файлов в панели плагина.
OPIF_DISABLESORTGROUPS Не использовать группы сортировки в панели плагина.
OPIF_DISABLEHIGHLIGHTING Не использовать раскраску файлов в панели плагина.
OPIF_ADDDOTS Автоматически добавить элемент, равный двум точкам (..).
OPIF_RAWSELECTION Выбор папок независимо от настроек Far Manager'а.
OPIF_REALNAMES Включает использование стандартной обработки файла Far Manager'ом, если запрошенная операция не поддерживается плагином. Если этот флаг указан, элементы на панели плагина должны быть именами реальных файлов.
OPIF_SHOWNAMESONLY Показывать по умолчанию имена без путей во всех режимах просмотра.
OPIF_SHOWRIGHTALIGNNAMES Показывать по умолчанию имена, выровненные по правому краю во всех режимах просмотра.
OPIF_SHOWPRESERVECASE Показывать имена файлов в оригинальном регистре независимо от настроек Far Manager'a.
OPIF_COMPAREFATTIME Преобразовывать временные метки в формат FAT при выполнении команды Compare folders. Установите этот флаг, если файловая система плагина не обеспечивает требуемую для стандартного стравнения времени точность.
OPIF_EXTERNALGET OPIF_EXTERNALPUT
OPIF_EXTERNALDELETE
OPIF_EXTERNALMKDIR
Флаги могут быть использованы только с OPIF_REALNAMES. Вынуждает использование соответствующих функций Far Manager, даже если требуемая функция экспортируется плагином.
OPIF_USEATTRHIGHLIGHTING Использовать раскраску файлов в панели плагина только по атрибутам, а имена объектов в раскраске не учитывать. Выбор цвета происходит только среди тех групп раскраски файлов, у которых маски исключены из анализа, т.е. опция "[ ] Совпадение с маской (масками)" в настройках раскраски файлов отключена.
OPIF_USECRC32 Флаг указывает, что плагин заполняет поле CRC32 элементов панели PluginPanelItem.
OPIF_USEFREESIZE Флаг указывает, что плагин заполняет поле FreeSize. Не у всех эмулированных плагинами файловых системах возможно понятие "свободное место" (например, в плагине ImpEx).
OPIF_SHORTCUT Флаг указывает, что плагин позволяет добавлять смену каталогов в историю Far Manager'a, а также поддерживает установку "быстрых каталогов" на своей панели.
OPIF_NONE Нулевой флаг.
HostFile
Имя файла-контейнера, на основе которого эмулируется файловая система на панели. Если плагин не эмулирует файловую систему, основанную на файле, установите эту переменную в NULL.
CurDir
Текущая директория панели. Если панельный плагин вернёт здесь пустую строку, то при нажатии ENTER на ".." Far Manager закроет панель плагина автоматически.
Format
Имя формата панели плагина. Оно показывается в диалоге копирования файла.
PanelTitle
Заголовок панели плагина.
InfoLines
Адрес массива структур  InfoPanelLine. Каждая структура описывает одну строку в информационной панели. Если вы не нуждаетесь в показе текста, зависимого от плагина в информационной панели, установите InfoLines в NULL.
InfoLinesNumber
Число структур InfoLine.
DescrFiles
Адрес массива указателей на имена файлов описаний. Far Manager попытается прочитать эти файлы (функцией GetFilesW) при показе описаний и обновить их после обработки файлов, если флаг PPIF_PROCESSDESCR в структуре PluginPanelItem был установлен. В зависимости от типа плагина, обработка описаний может занять значительное время. Если Вам это не нужно, установите DescrFiles в NULL.
DescrFilesNumber
Число имён файлов описаний.
PanelModesArray
Адрес массива структур PanelMode. Используя его, вы можете переопределить настройки режимов просмотра. Первая структура описывает режим просмотра номер 0, вторая - 1 и т.д. Если Вам не нужно определение новых режимов просмотра, установите PanelModesArray в NULL.
PanelModesNumber
Число структур PanelMode.
StartPanelMode
Режим просмотра, который будет установлен после создания панели плагина. Он должен быть в формате '0'+<номер режима просмотра>. Например, '1' или 0x31 будут устанавливать Краткий режим просмотра. Если вы не хотите менять режим просмотра панели после запуска плагина, установите StartPanelMode в 0.
StartSortMode
Режим сортировки, который будет установлен после создания панели плагина. Если вы не хотите менять режим сортировки после запуска плагина, установите StartSortMode в SM_DEFAULT или 0.
StartSortOrder
Если вы указали StartSortMode, в поле StartSortOrder вы должны задать направление сортировки, 0 или 1 (обратная сортировка).
KeyBar
Адрес структуры KeyBarTitles. Используя его, вы можете переопределить метки функциональных клавиш в строке функциональных клавиш. Если Вам это не нужно, установите KeyBar в NULL.
ShortcutData
Адрес текстовой строки, оканчивающейся нулём, описывающей текущее состояние панели плагина. Эта строка передаётся в OpenW, когда плагин активирован командой ссылки на папку. Например, FTP клиент может поместить сюда текущий хост, логин и пароль. Нет необходимости сохранять здесь текущий каталог, потому что он будет восстановлен самим Far Manager'ом.
Если вы не нуждаетесь в такой дополнительной информации для обработки ссылки на папку, установите данную строку в NULL.
FreeSize
Количество свободного места в эмулированной плагином файловой системе.

Замечания

  1. Все передаваемые в этой структуре данные должны быть правильными после возвращения из GetOpenPanelInfoW, таким образом, вы не должны использовать адреса стековых переменных. Используйте статические или глобальные переменные.
  2. Структура, передаваемая плагину в функцию GetOpenPanelInfoW, уже заполнена 0.
Смотрите также: