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
Количество свободного места в эмулированной плагином файловой системе.
Замечания
- Все передаваемые в этой структуре данные должны быть правильными после возвращения из GetOpenPanelInfoW, таким образом, вы не должны использовать адреса стековых переменных. Используйте статические или глобальные переменные.
- Структура, передаваемая плагину в функцию GetOpenPanelInfoW, уже заполнена 0.
Смотрите также: