Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Added: script arguments parameter to external plugin call.


Scripts plugin v1.3

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

Added: Call method, to call program plugins.


Scripts plugin v1.4

Offline
Posts: 63
Joined: Sun Jun 24, 2007 4:03 pm
Contact:

Post by wisgest »

При обновлении перерегистрация не требуется?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

wisgest wrote:При обновлении перерегистрация не требуется?
нет

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Вопрос по применению AkelCall

Post by VladSh »

Instructor wrote:Added: Call method, to call program plugins.
А что даёт этот метод? Если можно поясните пожалуйста на примере, чтоб нагляднее было, а то чего-то не допонимаю... имеется ввиду вызов из скрипта других плагинов? Вроде бы это хорошо, но пока не чувствую как это можно применить. Если б функций из них, тогда да!..

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh
См. Test.js, Test.vbs.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Тест

Post by VladSh »

Instructor
Это уже интересно!..

Скопировал из test.js 2 строки кода и получилось:

Code: Select all

///Тест вызова функции сортировки из др. плагина

var AkelPad=new ActiveXObject("AkelPad.document");
var WScript=new ActiveXObject("WScript.Shell"); 

var lResult=AkelPad.Call("Lines::SortStrAsc");
WScript.Echo("Plugin has been called (" + lResult + ")");
Строки в Akel'е сортируются, но при выполнении на строке 7 пишет ошибку "Объект не поддерживает это свойство или метод", код ошибки 800A01B6.

Ещё вопрос: что возвращается в lResult? Если массив отсортированных строк (что было бы очень кстати!), то может в Echo нужно передавать lResult, преобразованный строку?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh

Code: Select all

///Тест вызова функции сортировки из др. плагина 

var AkelPad=new ActiveXObject("AkelPad.document"); 

var lResult=AkelPad.Call("Lines::SortStrAsc"); 
WScript.Echo("Plugin has been called (" + lResult + ")");
В lResult возвращается код ошибки метода Call.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor wrote:В lResult возвращается код ошибки метода Call.
Понял.
Я просто думал, что создал скрипт, в нём что-то делаю... нужно вызвать функцию из плагина - передал туда значения + получил результат в скрипт, затем делаю что-то дальше (обрабатываю ещё как-то полученные значения) в скрипте, а уж потом отражаю результат а окне редактирования.
Updated: или вообще не в Akel'е, а выгружая куда-то в файл, типа "Сохранить как...", только со своей предварительной обработкой.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Ещё идея!

Post by VladSh »

Instructor wrote:Added: Call method, to call program plugins.
Можно вызывать из скрипта плагины - хорошо.

:idea: Если уж нельзя добавить команду, которая вызывает функции (и возвращает в скрипт значения!) из плагинов и самого AkelPad'а, то возможно было бы неплохо и логично добавить команду-аналог Command() из ContextMenu, чтобы из скрипта по номеру можно было вызывать внутренние команды AkelPad'а.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

...возможно было бы неплохо и логично добавить команду-аналог Command() из ContextMenu, чтобы из скрипта по номеру можно было вызывать внутренние команды AkelPad'а.
см. "//Send message" в Test.js, Test.vbs.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Уточнение

Post by VladSh »

Instructor wrote:см. "//Send message" в Test.js, Test.vbs.
Спасибо.

С номерами команд разобрался - это 3-й параметр, а что означает это:

Code: Select all

Const WM_COMMAND=273
Почему именно 273?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Re: Уточнение

Post by Instructor »

VladSh wrote:

Code: Select all

Const WM_COMMAND=273
Почему именно 273?
Об этом в поисковых системах вы найдете исчерпывающую информацию.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Вопросы, возможно и предложения...

Post by VladSh »

Очень часто требуется переименовать текущий файл (открытый в текущей закладке или окне), такой функции к огромному сожалению в AkelPad'е нет, поэтому приходится писать самому...

Алгоритм прост:
1. Взять имя файла текущей закладки.
2. Выдать диалог пользователю для изменения имени файла.
3. Подать команду на закрытие файла в текущей закладке, ждать результата если не сохранён.
4. Переименовать файл на диске.
5. Открыть новый файл в той же закладке, т.е. если всего открыто 10 файлов (MDI), а я переименовываю 4-й, то файл должен открыться именно в 4-й закладке.
Было бы здорово!

Вопросы по ходу: всё вроде ясно, но как сделать п.3 и 5?! - не нашёл соотв. номеров команд в AkelDLL.h. Как быть, что посоветуете?
Может быть в новой версии AkelPad'а стоит добавить эти команды?

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

По пункту 3: в версии 3.3.5 доступен новый параметр сообщения WM_COMMAND - IDM_NONMENU_FILECLOSE.
По пункту 5: когда вкладка очистится, после IDM_NONMENU_FILECLOSE, то затем можно открыть файл через WshShell.Exec (пока нет специальных методов).
Post Reply