# 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_RECURSIVEPANEL | Если плагин запущен из панели (возможно другого) плагина, то этот флаг указывает, что после закрытия плагина Far Manager должен вернуться в панель предыдущего плагина, а не в файловую панель.†
OPIF_DELETEFILEONCLOSE | Флаг указывает, что после закрытия плагина Far Manager должен удалить файл-контейнер, содержимое которого плагин показывает на панели.†
OPIF_DELETEDIRONCLOSE | Флаг указывает, что после закрытия плагина Far Manager должен удалить директорию, где находится файл-контейнер, содержимое которого плагин показывает на панели.†
OPIF_NONE | Нулевой флаг.

† Этот флаг используется только если плагин открыт при помощи меню плагинов `F11 → плагин → …`, префикса плагина `prefix:command` или функции Lua `Plugin.Command(GUID, command)`.
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.

Смотрите также:
структуры