***************************************************************** *** ToolBar AkelPad plugin v12.5 *** ***************************************************************** 2006-2016 Шенгальц Александр aka Instructor (Shengalts@mail.ru) *** Описание *** Добавляет настраиваемую панель инструментов. Замечания: - Правый клик мыши (либо левый клик мыши с удерживанием клавиши Ctrl) по кнопке на панели инструментов открывает диалог настроек с отмеченным кодом кнопки. *** Функции *** ToolBar::Main Главная функция для запуска и остановки плагина. *** Синтаксис *** Переменные: %f активный файл %d директория активного файла %a директория AkelPad'а %m идентификатор панели инструментов (handle) %i идентификатор кнопки %bl левый угол нажатой кнопки в экранных координатах %bt верхний угол нажатой кнопки в экранных координатах %br правый угол нажатой кнопки в экранных координатах %bb нижний угол нажатой кнопки в экранных координатах %% символ % %системная переменная% Комментарии: # комментарий ; комментарий Специальные пункты: SEPARATOR кнопка разделитель. SEPARATOR1 тоже, что и SEPARATOR, но, если указано несколько SEPARATOR1 подряд, то сливается в один SEPARATOR1. BREAK перенос последующих кнопок на новую строку (создание нового ряда). Если кнопке предшествует SEPARATOR, то новая строка будет отделена разделителем. BREAK работает только при горизонтальном расположении панели. SET(флаги[, дополнительные параметры]) устанавливает флаг обработки текста (не отменяет уже установленные). Задается суммой членов: SET(1) игнорировать последующие строки, если используется режим SDI. SET(2) игнорировать последующие строки, если используется режим MDI. SET(4) игнорировать последующие строки, если используется режим PMDI. SET(32, "%a\AkelFiles\Plugs\Scripts.dll") обрабатывать последующие строки, если файл "Scripts.dll" найден. SET(64, If("выражение"[, ЕслиИстина, ЕслиЛожь])) обрабатывать последующие строки, если результат не равен нулю. "выражение" Выражение может содержать: - математические операции: +, -, *, /, %, &, |, ^. - логические операции: >, <, ==, !=, >=, <=, &&, ||, x?y:z. - комментарии: /*комментарий*/ - методы: SendMain(nMessage, wParam, lParam) nMessage Сообщение, которое посылается главному окну программы. wParam Дополнительная информация. lParam Дополнительная информация. SendEdit(nMessage, wParam, lParam) nMessage Сообщение, которое посылается текущему окну редактирования. wParam Дополнительная информация. lParam Дополнительная информация. Call("Плагин::Функция"[, дополнительные параметры]) - Если вызывается плагин, то код выхода передаётся через специальный параметр &nResult. &nResult должен находится на месте, где синтаксис внешнего вызова требует указатель на число. SET(64, If(`Call("Coder::CodeFold", 1, &nResult)`) обрабатывать последующие строки, если открыто окно CodeFold. - Если вызывается скрипт, то необходимо использовать внешние вызовы 2 или 4, а также передавать код выхода из скрипта через AkelPad.ScriptExitCode. SET(64, If(`Call("Scripts::Main", 4, "EvalCmd.js", 'if (AkelPad.GetEditFile(0)) AkelPad.ScriptExitCode(1);')`) обрабатывать последующие строки, если текущий документ имеет имя. - Возможно вызывать метод Scripts плагина напрямую. Разрешено в SET(128). SET(64, If(`AkelPad.Constants._X64 == 1`)) обрабатывать последующие строки, если программа имеет битность x64. ЕслиИстина Числовое значение, если результат выражения - истина (не равен нулю). ЕслиЛожь Числовое значение, если результат выражения - ложь (равен нулю). SET(64, If(`SendMain(1222 /*AKD_GETMAININFO*/, 5 /*MI_SAVESETTINGS*/, 0) == 2 /*SS_INI*/`)) обрабатывать последующие строки, если настройки сохраняются в ini файл. SET(128, If("выражение"[, ЕслиИстина, ЕслиЛожь])) установить статус кнопки. "выражение" См. описание SET(64). В SET(128) вызов скрипта запрещён. ЕслиИстина 0x0 //IFS_NORMAL Обычный пункт. 0x1 //IFS_CHECKED Отмеченный (вдавленный) пункт. 0x2 //IFS_GRAYED Неактивный, серый пункт. 0x4 //IFS_DISABLED Неактивный пункт. ЕслиЛожь 0x0 //IFS_NORMAL Обычный пункт. 0x1 //IFS_CHECKED Отмеченный (вдавленный) пункт. 0x2 //IFS_GRAYED Неактивный, серый пункт. 0x4 //IFS_DISABLED Неактивный пункт. SET(128, If("SendMain(1223 /*AKD_GETFRAMEINFO*/, 69 /*FI_CARETOPTIONS*/, 0) & 0x2 /*CO_CARETVERTLINE*/", 0x1, 0x0)) отметить последующие пункты, если включен активный столбец. SET(128, If(`Call("Scripts::Main", 5, "SearchReplace.js", 2 /*SH_THISSCRIPT*/, &nResult)`, 0x1, 0x0)) отметить последующие пункты, если работает скрипт SearchReplace.js. SET(128, If(`AkelPad.IsPluginRunning("Coder::HighLight")`, 0x1, 0x0)) отметить последующие пункты, если работает Coder::HighLight. UNSET(128) UNSET(флаги) снимает флаг обработки текста. См. SET() для описания. Создание кнопки: [-]"[текст кнопки]" [Command() | Call() | +Call() | Exec() | OpenFile() | SaveFile() | Font() | Recode() | Insert() | Menu()] Icon() [-]"[текст кнопки]" "Моя кнопка" текст появляющийся во всплывающей подсказке, при наведении мышкой на кнопку. -"Моя кнопка" при наличии знака минуса, кнопка не будет каким-либо образом менять свой статус (становиться неактивной, вдавливаться). "" при отсутствии текста кнопки, а также использовании метода Command(), берется текст пункта главного меню, на который ссылается метод Command(). Command(номер) Command(4162) метод вызывает внутреннюю команду под номером 4162. В данном случае этот код отвечает за открытие диалогового окна "Перейти к строке...". Для полного перечня команд: см. AkelHelp-Rus.htm или AkelDLL.h в исходных кодах плагина. Call("Плагин::Функция"[, дополнительные параметры]) Call("Scripts::Main") метод вызывает плагин Scripts и функцию Main. +Call("Плагин::Функция"[, дополнительные параметры]) +Call("LineBoard::Main") метод вызывает плагин LineBoard и функцию Main. Плагин также будет работать после перезагрузки программы. Exec("командная строка"[, "рабочая директория"][, Ожидать][, СтильОкна]) "командная строка" Командная строка. "рабочая директория" Рабочая директория. По умолчанию "". Ожидать Ожидать завершения программы. 1 - ожидать, 0 - не ожидать (по умолчанию). СтильОкна (один из следующих): 0 скрытое окно. 1 окно как есть (по умолчанию). 2 свернутое окно. 3 развернутое окно. 6 свернутое, не активное окно. 9 не развернутое окно. Замечание: программы могут игнорировать данный параметр. Exec("notepad.exe") метод вызывает блокнот. Exec(`notepad.exe`) метод вызывает блокнот. Exec('notepad.exe') метод вызывает блокнот. Exec('%windir%\notepad.exe') метод вызывает блокнот. Exec(`rundll32.exe shell32,ShellExec_RunDLL "%f"`, "%d") метод передает активный файл для открытия по ассоциации Windows. OpenFile("файл"[, Кодировка][, СигнатураBOM]) "файл" Файл для открытия. Кодировка Кодировка открытия. Если -1 либо не указана, она будет определена автоматически. СигнатураBOM Сигнатура BOM файла. Если -1 либо не указана, она будет определена автоматически. OpenFile("C:\File.txt", 65001, -1) метод открывает файл в кодировке UTF-8. SaveFile("файл"[, Кодировка][, СигнатураBOM]) "файл" Сохранение текущего документа в указанный файл. Кодировка Кодировка сохранения. Если -1 либо не указана, будет использована текущая кодировка. СигнатураBOM Сигнатура BOM файла. 1 - присутствует, 0 - отсутствует, -1 либо не указана - используется текущий BOM. SaveFile("C:\File.txt", 65001, 0) метод сохраняет файл в кодировке UTF-8 без BOM. Font("Шрифт", Начертание, Размер) "Шрифт" Имя шрифта, например, "Courier". Не изменяется, если "". Начертание (одно из следующих): 0 игнорировать. 1 обычный шрифт. 2 жирный шрифт. 3 курсивный шрифт. 4 жирный курсивный шрифт. Размер Размер шрифта. Не изменяется, если 0. Font("Courier", 4, 10) метод устанавливает жирный курсив Courier шрифт размером 10 pt. Recode(ПерекодироватьИз, ПерекодироватьВ) ПерекодироватьИз Кодировка источник. Если -1, она будет определена автоматически. ПерекодироватьВ Кодировка приемник. Если -1, она будет определена автоматически. Recode(1251, 866) метод перекодирует текст из кодировки 1251 в 866. Insert("текст"[, Esc-последовательности]) "текст" Вставляемый текст. Esc-последовательности: 0 "текст" не содержит Esc-последовательностей (по умолчанию). 1 "текст" содержит Esc-последовательности. Набор последовательностей аналогичен диалогу поиска/замены в программе, а также: "\s" - заменяется на выделенный в окне редактирования текст; "\|" - указывает на положение каретки после вставки текста. Insert("Некая строка") метод заменяет выделение на указанный текст. Insert("\s", 1) метод добавляет к выделению текст по краям. Insert("\[0031 0032 0033]", 1) метод заменяет выделение на "123". Menu("ИМЯ МЕНЮ") "ИМЯ МЕНЮ" Название подменю из "Меню ContextMenu::Show" (ContextMenu плагин). Если метод используется как дополнительный, например с Command(), то меню отображается по нажатию на стрелочку. Если метод используется один, то стрелочка не рисуется и меню отображается по нажатию на кнопку. Пример: 1. Создадим новую кнопку. "Специальные символы" +Call("SpecialChar::Main") Menu("SPECIALCHAR") Icon("%a\AkelFiles\Plugs\SpecialChar.dll", 0) 2. Создадим новое подменю. Для этого откроем "Главное меню->Настройки->Плагины...->ContextMenu::Main", выберем "Меню ContextMenu::Show" и добавим код подменю: "SPECIALCHAR" { "Настроить..." Call("SpecialChar::Settings") } Icon(["файл"][, индекс]) Icon("Shell32.dll", 47) иконка находится в файле Shell32.dll под индексом 47. Icon("%a\AkelFiles\Plugs\Explorer.dll") иконка находится в файле Explorer.dll под индексом 0. Icon("%a\AkelFiles\Plugs\Toolbar\MyIcon.ico") иконка находится в файле MyIcon.ico. Icon(12) иконка находится в файле ToolBar.dll под индексом 12. Примеры: "Перекодировать выделение" Command(4182) Icon(0) "" Command(4182) Icon(0) "Сортировать строки" Call("Format::LineSortStrAsc") Icon(0) -"Проверить орфографию" Call("Scripts::Main", 1, "SpellCheck.js", "") Icon(0) "Подсветка синтаксиса" +Call("Coder::Highlight") Icon(0) "Редактор реестра" Exec("regedit.exe") Icon("regedit.exe") *** Внешний вызов *** Call("ToolBar::Main", 1, "ROWS(SHOW)") Параметры: 1 Открыть панель инструментов с указанными рядами. См. описание BREAK. Если панель уже открыта, то: - Если указанная строка рядов совпадает с активной, то панель закрывается; - Если указанная строка рядов не совпадает с активной, то панель остается открытой и устанавливается новый набор рядов. "ROWS(SHOW)" Строка с номерами рядов и их видимости (опционально) через запятую. Например: "1,2,4" или "1(1),2(-1),4". Если "", то отображаются все ряды. ROWS Номер ряда. SHOW Видимость рядов (один из следующих): -2 не менять видимость ряда. -1 инвертировать видимость ряда. 0 скрыть ряд. 1 отобразить ряд (по умолчанию). *** Ручные установки *** SidePriority Приоритет расположения панелей инструментов (один из следующих): 1 располагать сначала верхние и нижние, затем левые и правые (по умолчанию). 2 располагать сначала левые и правые, затем верхние и нижние. ArrowOverlay Наложение стрелки для кнопки с методом Menu() без действия (один из следующих): -1 не налагать, но использовать стиль BTNS_WHOLEDROPDOWN. 0 не налагать. 1 налагать обычно. 2 налагать белый как маску, т.е. белый цвет в иконке стрелки исключается из итоговой иконки (по умолчанию). GrayedIcons Отрисовка иконок на неактивных кнопках (один из следующих): 0 иконки на неактивных кнопках отрисовываются системой (по умолчанию). 1 иконки на неактивных кнопках отрисовываются плагином.