Code: Select all
// области действия макроса
enum MACROAREAFLAGS
{
// see also plugin.hpp # FARMACROAREA
MACRO_AUTOCOMPLETION = 0x00000001, // Список автодополнения
MACRO_DIALOG = 0x00000002, // Диалоги
MACRO_DISKS = 0x00000004, // Меню выбора дисков
MACRO_EDITOR = 0x00000008, // Редактор
MACRO_FINDFOLDER = 0x00000010, // Поиск папок
MACRO_GRABBER = 0x00000020, // Режим копирования текста с экрана
MACRO_HELP = 0x00000040, // Система помощи
MACRO_INFOPANEL = 0x00000080, // Информационная панель
MACRO_MAINMENU = 0x00000100, // Основное меню
MACRO_MENU = 0x00000200, // Прочие меню
MACRO_VERTICALMENU = 0x00000400, // Вертикальные меню
MACRO_QVIEWPANEL = 0x00000800, // Панель быстрого просмотра
MACRO_SEARCH = 0x00001000, // Быстрый поиск в панелях
MACRO_SHELL = 0x00002000, // Файловые панели
MACRO_TREEPANEL = 0x00004000, // Панель дерева папок
MACRO_USERMENU = 0x00008000, // Меню пользователя
MACRO_VIEWER = 0x00010000, // Внутренняя программа просмотра
... ???
MACRO_COMMON, = 0xFFFFFFFF, // ВЕЗДЕ! - должен быть предпоследним, т.к. приоритет самый низший !!!
};
// условия выполнения макроса
enum MACROCONDITIONFLAGS
{
MFLAGS_EMPTYCOMMANDLINE = 0x00000010, // запускать, если командная линия пуста
MFLAGS_NOTEMPTYCOMMANDLINE = 0x00000020, // запускать, если командная линия не пуста
MFLAGS_EDITSELECTION = 0x00000040, // запускать, если есть выделение в редакторе
MFLAGS_EDITNOSELECTION = 0x00000080, // запускать, если есть нет выделения в редакторе
MFLAGS_SELECTION = 0x00000100, // активная: запускать, если есть выделение
MFLAGS_PSELECTION = 0x00000200, // пассивная: запускать, если есть выделение
MFLAGS_NOSELECTION = 0x00000400, // активная: запускать, если нет выделения
MFLAGS_PNOSELECTION = 0x00000800, // пассивная: запускать, если нет выделения
MFLAGS_NOFILEPANELS = 0x00001000, // активная: запускать, если это плагиновая панель
MFLAGS_PNOFILEPANELS = 0x00002000, // пассивная: запускать, если это плагиновая панель
MFLAGS_NOPLUGINPANELS = 0x00004000, // активная: запускать, если это файловая панель
MFLAGS_PNOPLUGINPANELS = 0x00008000, // пассивная: запускать, если это файловая панель
MFLAGS_NOFOLDERS = 0x00010000, // активная: запускать, если текущий объект "файл"
MFLAGS_PNOFOLDERS = 0x00020000, // пассивная: запускать, если текущий объект "файл"
MFLAGS_NOFILES = 0x00040000, // активная: запускать, если текущий объект "папка"
MFLAGS_PNOFILES = 0x00080000, // пассивная: запускать, если текущий объект "папка"
... ???
};
// условия выполнения макроса для событий ввода
enum MACROINPUTCONDITIONFLAGS
{
MFLAGS_KEYDOWN = 0x00000001, // Макрос срабатывает только при нажатии (без автоповтора)
MFLAGS_KEYHOLD = 0x00000002, // Макрос срабатывает при удержании клавиши в течении N мс.
MFLAGS_KEYPRESS = 0x00000003, // Макрос срабатывает только при нажатии клавиши
// или кнопки мыши заданное кол-во раз (см. KeyPressCount)
MFLAGS_KEYRELEASE = 0x00000004, // Макрос срабатывает при отпускании клавиши или кнопки мыши
MFLAGS_KEYUP = 0x00000005, // Макрос срабатывает при отпускании.
// В отличии от Release макрос срабатывает при отпускании префиксных клавиш,
// даже если были комбинированные нажатия
... ???
};
enum MACROACTIONFLAGS
{
MFLAGS_DISABLEOUTPUT = 0x00000001, // подавить обновление экрана во время выполнения макроса
MFLAGS_NOSENDKEYSTOPLUGINS = 0x00000002, // НЕ передавать плагинам клавиши во время записи/воспроизведения макроса
... ???
};
// События, при которых выполняется макрос
enum MACROEVENTFLAGS
{
MFLAGS_RUNAFTERFARSTART = 0x00000001, // макрос запускается при старте ФАРа
MFLAGS_RUNBEFOREFAREXIT = 0x00000002, // макрос запускается перед закрытием ФАРа
MFLAGS_RUNAFTERVIEWEROPEN = 0x00000004, // макрос запускается после открытия файла во вьюере
MFLAGS_RUNBEFOREVIEWERCLOSE = 0x00000008, // макрос запускается перед закрытием файла во вьюере
MFLAGS_RUNAFTEREDITOROPEN = 0x00000010, // макрос запускается после открытия файла в редакторе
MFLAGS_RUNBEFOREEDITORCLOSE = 0x00000020, // макрос запускается перед закрытием файла в редакторе
MFLAGS_RUNAFTERDIALOGOPEN = 0x00000040, // макрос запускается после открытия диалога
MFLAGS_RUNBEFOREDIALOGCLOSE = 0x00000080, // макрос запускается перед закрытием диалога
MFLAGS_RUNAFTERMENUOPEN = 0x00000100, // макрос запускается после открытия меню
MFLAGS_RUNBEFOREMENUCLOSE = 0x00000200, // макрос запускается перед закрытием меню
... ???
};
// внутренние флаги
enum MACROINTERNALFLAGS
{
MFLAGS_DISABLEMACRO = 0x00000001, // макрос отключен
MFLAGS_NEEDSAVEMACRO = 0x00000002, // необходимо этот макрос запомнить
MFLAGS_POSTFROMPLUGIN = 0x00000004, // последовательность пришла от АПИ
MFLAGS_RUNAFTERFARSTARTED = 0x00000008, // макрос уже запускался при старте ФАРа
... ???
};
struct MacroRecord
{
int Id; // Id макроса (для DB)
int Priority; // Приоритет макроса
wchar_t *KeyNameMask; // Маска (маски) назначенной(ых) клавиш(и) (или имя macro func).
wchar_t *TitleMask; // Маска (маски) заголовка диалога или меню
GUID *Guids // Guid'ы меню или диалогов, в которых срабатывает макрос
int KeyPressCount; // Количество нажатий клавиш, при которых выполняется макропоследовательность
wchar_t *Sequence; // "текст" макроса
wchar_t *Description; // Описание макроса
MACROINTERNALFLAGS IntFlags; // Внутренние флаги
MACROAREAFLAGS Areas; // Области выполнения макропоследовательности
MACROCONDITIONFLAGS Conditions; // Условия выполнения макропоследовательности
MACROINPUTCONDITIONFLAGS InputConditions; // Условия выполнения макропоследовательности
MACROMACROACTIONFLAGS Actions; // Действия макропоследовательности
MACROEVENTFLAGS Events; // События, при которых выполняется макропоследовательность
int BufferSize; // Размер буфера компилированной последовательности
DWORD *Buffer; // Компилированная последовательность (OpCode) макроса
DWORD Reserved[2]; // Зарезервировано
};