Тема
"ContextMenu plugin"
ВЫЗОВ ИСПОЛНЯЕМЫХ ФАЙЛОВ ИЗ КОНТЕКСТНЫХ МЕНЮ и ТУЛБАРА:
1. Можно вызывать внутренние команды AkelPad'а с помощью Command(номер).
О номерах команд см. в предыдущем сообщении.
2. Можно вызывать
скрипты с помощью Call() или Exec()
Пример:
Code: Select all
"Наименование позиции меню/подсказки тулбара" Call("Scripts::Main", 1, "Script.js", "%f", 0)
ОБЩАЯ ИНФОРМАЦИЯ ПО ВЫЗОВАМ СКРИПТОВ:
Instructor wrote:VladSh wrote:Ещё вопрос. Все подменюшки, которые я пишу с вызовами скриптов почему-то идут с галочкой перед именем, почему она появляется, и можно ли её как-то убрать?
Галочка означает, что плагин загружен. Можно пользоваться методом Exec() вместо Call(). Например так:
Code: Select all
"Наименование позиции меню/подсказки тулбара" Exec(`WScript "%a\AkelFiles\Plugs\Scripts\Script.js" "%f"`)
при наличии знака минуса перед наименованием пункта меню, он не будет каким-либо образом менять свой статус. Подробнее см. файл ContextMenu-Rus.txt в дистрибутиве плагина.
- РАБОТА С АРГУМЕНТАМИ (4-й параметр):
Вопрос: для чего нужен параметр "%f" ?
Instructor wrote:VladSh wrote:Updated: Замечено, что EXPLORER -> Open в любом меню работает корректно, т.е. если жму в окне редактирования/на текущей вкладке, то открывается именно открытый в текущей вкладке файл; если вызываю из меню последних файлов - открывается именно выделенный файл из меню последних файлов.
Именно поэтому в релизе к 3.3.4 значится "Добавлено: сообщение AKD_GETRECENTFILES."
В параметре %f есть необходимость, только, если в скрипте идет обработка аргументов вызова.
%f - аргумент "имя файла". Т.е. он обязателен если мы хотим чтобы скрипт, работающий по имени файла, отрабатывал из любого меню (и из меню редактирования и из меню последних файлов).
В отличие от метода AkelPad.GetEditFile(0), который возвращает имя файла текущей закладки (т.е. текущего редактируемого файла):
Code: Select all
var fileName = AkelPad.GetEditFile(0);
этот код возвращает имя файла вне зависимости от того меню, в котором мы сейчас находимся, т.к. мы передаём его (%f) через аргументы:
Code: Select all
var fileName = WScript.Arguments(0);
- ПЕРЕДАЧА АРГУМЕНТОВ В СКРИПТ (эти способы остались в старых скриптах)
Можно передавать несколько аргументов, это можно сделать просто через пробел, например:
Code: Select all
Call("Scripts::Main", 1, "MyScript.js", "1 2")
или, если в параметре имеются пробелы, -заключая каждый в кавычки:
Code: Select all
Call("Scripts::Main", 1, "MyScript.js", `"%u" "1" "ext param"`)
- ПРОВЕРКА ВНУТРИ СКРИПТА НА НАЛИЧИЕ АРГУМЕНТОВ
Code: Select all
if (WScript.Arguments.length) //Или на конкретное число аргументов
В Scripts-плагин было добавлено 2 метода
GetArgLine и
GetArgValue для более удобной работы с аргументами; подробнее см. Scripts-Rus.txt либо примеры скриптов.
3. Можно вызывать плагины.
Instructor wrote:DV
Где можно посмотреть описание всех функций и параметров плагина?
Используюмые методы можно посмотреть в дефолтных меню. Что касаемо метода Call() с дополнительными параметрами, то это уже зависит от вызываемого плагина.
-----------------------------------------------------------------
Вопрос: где взять контекстные меню?
Ответ: пример -
здесь. А вообще в готовых сборках AkelPad'а.
N.B.: меню работают со скриптами, находящимися в теме
"Сборник скриптов для Scripts plugin'а". Скрипты из этой темы нужно не скачивать, а брать прямо со страницы, т.к. они периодически изменяются авторами и поэтому являются актуальными для указанных контекстных меню.
4. Можно запускать другие файлы.
4.1.
hta-приложения.
Формат записи:
Exec('mshta "<путь к hta-файлу>"')
4.2.
chm-файлы.
Exec('"hh.exe" "<путь к chm-файлу>"')
Пример: запуск
справки
Code: Select all
"AkelPad-Eng.chm" Exec(`"hh.exe" "%a\AkelFiles\AkelPad4-Eng.chm"`)
Файл справки AkelPad4-Eng.chm необходимо предварительно скачать отсюда.
Комментирование кода в контекстных меню осуществляется символом ; либо #
Расположение комбинаций клавиш по аналогии с главным меню программы (справа) можно сделать использовав в качестве разделителя символ табуляции (для того, чтобы набрать символ табуляции в поле редактирования меню, нужно нажать Ctrl+Tab).