Page 2 of 74

Posted: Thu Jul 12, 2007 7:49 pm
by Instructor
Added: script arguments parameter to external plugin call.


Scripts plugin v1.3

Posted: Sat Jul 14, 2007 2:03 pm
by Instructor
Added: Call method, to call program plugins.


Scripts plugin v1.4

Posted: Sat Jul 14, 2007 2:19 pm
by wisgest
При обновлении перерегистрация не требуется?

Posted: Sat Jul 14, 2007 2:44 pm
by Instructor
wisgest wrote:При обновлении перерегистрация не требуется?
нет

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

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

Posted: Sat Jul 14, 2007 4:40 pm
by Instructor
VladSh
См. Test.js, Test.vbs.

Тест

Posted: Mon Jul 16, 2007 9:05 am
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, преобразованный строку?

Posted: Mon Jul 16, 2007 9:12 am
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.

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

Ещё идея!

Posted: Thu Jul 19, 2007 3:39 pm
by VladSh
Instructor wrote:Added: Call method, to call program plugins.
Можно вызывать из скрипта плагины - хорошо.

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

Posted: Thu Jul 19, 2007 5:53 pm
by Instructor
...возможно было бы неплохо и логично добавить команду-аналог Command() из ContextMenu, чтобы из скрипта по номеру можно было вызывать внутренние команды AkelPad'а.
см. "//Send message" в Test.js, Test.vbs.

Уточнение

Posted: Fri Jul 20, 2007 9:56 am
by VladSh
Instructor wrote:см. "//Send message" в Test.js, Test.vbs.
Спасибо.

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

Code: Select all

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

Re: Уточнение

Posted: Fri Jul 20, 2007 10:51 am
by Instructor
VladSh wrote:

Code: Select all

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

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

Posted: Mon Jul 23, 2007 12:37 pm
by VladSh
Очень часто требуется переименовать текущий файл (открытый в текущей закладке или окне), такой функции к огромному сожалению в AkelPad'е нет, поэтому приходится писать самому...

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

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

Posted: Mon Jul 23, 2007 3:47 pm
by Instructor
По пункту 3: в версии 3.3.5 доступен новый параметр сообщения WM_COMMAND - IDM_NONMENU_FILECLOSE.
По пункту 5: когда вкладка очистится, после IDM_NONMENU_FILECLOSE, то затем можно открыть файл через WshShell.Exec (пока нет специальных методов).