***************************************************************** *** ContextMenu AkelPad plugin v10.4 *** ***************************************************************** 2011 Шенгальц Александр aka Instructor (Shengalts@mail.ru) *** Описание *** Настройка главного меню и контекстного меню для окна редактирования, MDI вкладок, ссылок и последних файлов. Замечания: - Левый клик мыши на не специальных пунктах меню с удерживанием клавиши Ctrl открывает диалог настроек с отмеченным кодом пункта. - Меню для последних файлов не работает в Win95. *** Функции *** ContextMenu::Main Основной диалог. ContextMenu::Show Показать пользовательское меню. *** Синтаксис *** Переменные: %f активный файл %d директория активного файла %a директория AkelPad'а %m идентификатор меню (handle) %i идентификатор пункта меню %u URL адрес (работает только в "Меню ссылок") %% символ % %системная переменная% Комментарии: # комментарий ; комментарий Специальные пункты меню: SEPARATOR пункт меню разделитель. EXPLORER меню проводника. FAVOURITES список избранных файлов. RECENTFILES список последних файлов. LANGUAGES список языковых модулей. OPENCODEPAGES список кодировок для переоткрытия файла. SAVECODEPAGES список кодировок для сохранения файла. MDIDOCUMENTS список MDI документов (работает только в "Главное меню" в режиме MDI). CLEAR очистить меню (работает только в "Главное меню"). SET(флаги) устанавливает флаг обработки текста меню (не отменяет уже установленные). Задается суммой членов: 1 игнорировать последующие строки, если используется режим SDI. 2 игнорировать последующие строки, если используется режим MDI. 4 игнорировать последующие строки, если используется режим PMDI. 8 при копировании текста из главного меню, не захватывать горячую клавишу. 16 не использовать иконки для пунктов меню. UNSET(флаги) снимает флаг обработки текста меню. См. SET() для описания. Создание пункта меню: [-]"[текст пункта меню]" [Command() | Call() | +Call() | Exec() | OpenFile() | SaveFile() | Font() | Recode() | Insert() | Link() | Favourites()] [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("командная строка", ["рабочая директория"]) 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(ПерекодироватьИз, ПерекодироватьВ) Recode(1251, 866) метод перекодирует текст из кодировки 1251 в 866. Insert("текст", [Esc-последовательности]) "текст" Вставляемый текст. Esc-последовательности: 0 "текст" не содержит Esc-последовательностей (по умолчанию). 1 "текст" содержит Esc-последовательности. Набор последовательностей аналогичен диалогу поиска/замены в программе, а также: "\s" - заменяется на выделенный в окне редактирования текст; "\|" - указывает на положение каретки после вставки текста. Insert("Некая строка") метод заменяет выделение на указанный текст. Insert("\s", 1) метод добавляет к выделению текст по краям. Insert("\[0031 0032 0033]", 1) метод заменяет выделение на "123". Link(номер) Link(1) метод переходит по ссылке (работает только в "Меню ссылок"). Link(2) метод копирует ссылку (работает только в "Меню ссылок"). Link(3) метод выделяет ссылку (работает только в "Меню ссылок"). Favourites(номер) Favourites(1) метод добавляет текущий файл в избранное (с диалогом). Favourites(2) метод добавляет текущий файл в избранное (без диалога). Favourites(3) метод открывает диалог управления избранным. Favourites(4) метод удаляет текущий файл из избранного. 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) иконка находится в файле ContextMenu.dll под индексом 12. Примеры: "Перекодировать выделение" Command(4182) "" Command(4182) "Сортировать строки" Call("Format::LineSortStrAsc") -"Проверить орфографию" Call("Scripts::Main", 1, "SpellCheck.js", "") "Подсветка синтаксиса" +Call("Coder::Highlight") "Редактор реестра" Exec("regedit.exe") Icon("regedit.exe") Создание подменю: "[текст подменю]" [Index() | Break() | Icon()] { } "[текст подменю]" "Мое подменю" текст подменю. Index(номер) Index(-1) метод вставляет подменю на указанную позицию главного меню, если номер позиции отрицательный, то отчет производится с конца главного меню. Break(номер) Break(-1) тоже, что и Index(), но подменю вставляется на новую строку главного меню. Icon(["файл"], [индекс]) Icon(0) см. описание в создании пункта меню. Метод Icon() не работает для подменю главного меню. Пример: "&Кодировки" Index(-1) { "Открыть как Windows-1251 Alt+W" Command(4122) "Открыть как DOS-866 Alt+D" Command(4123) "Открыть как КОИ8-Р Alt+K" Command(4124) "Открыть как UTF-16LE (стандартная) Alt+L" Command(4125) "Открыть как UTF-16BE Alt+B" Command(4126) "Открыть как UTF-8 Alt+U" Command(4127) SEPARATOR "&Открыть как" Icon("%a\AkelFiles\Plugs\ToolBar.dll", 36) { OPENCODEPAGES } SEPARATOR "Сохранить как Windows-1251 Shift+Alt+W" Command(4131) "Сохранить как DOS-866 Shift+Alt+D" Command(4132) "Сохранить как КОИ8-Р Shift+Alt+K" Command(4133) "Сохранить как UTF-16LE (стандартная) Shift+Alt+L" Command(4134) "Сохранить как UTF-16BE Shift+Alt+B" Command(4135) "Сохранить как UTF-8 Shift+Alt+U" Command(4136) "Сохранить как UTF-8 (&без BOM)" Command(4137) SEPARATOR "&Сохранить как" Icon("%a\AkelFiles\Plugs\ToolBar.dll", 5) { SAVECODEPAGES } SEPARATOR "Определить кодировку Alt+F5" Command(4121) } *** Внешний вызов ContextMenu::Main *** Call("ContextMenu::Main", 1, INDEX, "STRING") Параметры: 1 Открыть диалог и выбрать меню. INDEX Номер в списке (по умолчанию 0). STRING Найти строку и выделить (по умолчанию ""). Call("ContextMenu::Main", 10) Параметры: 10 Запуск/остановка плагина без диалога. *** Внешний вызов ContextMenu::Show *** Call("ContextMenu::Show", 1, X, Y, INDEX) Параметры: 1 Открыть пользовательское меню на указанной позиции. X X позиция в экранных координатах (по умолчанию -1). Y Y позиция в экранных координатах (по умолчанию -1). INDEX Открыть только указанный номер подменю (по умолчанию отображается все меню). Замечания: - Если X и Y равны -1, то используется позиция верхнего левого угла окна редактирования. - Для открытия первого подменю INDEX равен 0, второго равен 1 и т.д.