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 »


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

Ещё одна мега-идея!

Post by VladSh »

Предлагаю:

1. Сделать метод ListBox для выбора значений из списка; параметры:
- передаваемый массив значений;
- флаг множественного выбора (Boolean);
- значение по умолчанию (при передаче пустой строки не подсвечивать значения);
Возвращать массив при выборе значения(й) и нажатии ОК; не давать нажать ОК если значения не выбраны. Возвращать Null при нажатии Cancel.

2. По аналогии с плагином AutoComplete сделать спец. файлы для хранения параметров скриптов, т.к. скрипты из-за этого редактировать некорректно, мало того, что это неудобно - это дополнительный источник ошибок.
Необходимость этого давно назрела - есть множество скриптов, где нужен диалог с параметрами; сейчас в них выдаётся InputBox с передложением написать параметры вручную, или ещё хуже - эти параметры прописываются в скрипте жётско...
Например в папке со скриптами создать папку Parameters, в которой вручную создавать файлы с тем же именем, что и файл скрипта, только с другим расширением, например *.param.

Если в Scripts-плагин добавить ещё один метод по вызову диалога с параметрами, автоматически отыскивающий необходимый файл и выводящий параметры из него в диалог, то такое решение позволит сократить количество скриптов... например один скрипт вставки даты - при его вызове автоматом открывается диалог параметров, взятых из спец.файла, ну и т.д...
Может пример по вставке даты не очень удачен, но ExecConsole.js или ExecTool.js - самое то.
Можно было бы перевести на эту технологию большинство скриптов.
Last edited by VladSh on Sat Apr 18, 2009 11:51 am, edited 1 time in total.

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

Post by Instructor »

Added: IsPluginRunning method.


Scripts plugin v3.0

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

Post by Instructor »

Changed: plugin icon.

Added: GetClipboardText method.


Scripts plugin v3.1

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

Post by Instructor »

Changed: recompiled to support AkelPad 3.5.6.


Scripts plugin v3.2

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

Post by Instructor »

Added: support for AkelPad 4.0.0.


Scripts plugin v3.3

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

Post by Instructor »

Changed: AkelPad 3.6.0 required.

Added: support for column selection operations (AkelPad 4.x.x only).


Scripts plugin v3.5

Offline
Posts: 2
Joined: Sat Aug 02, 2008 4:25 pm
Location: Ukraine

Post by Vladimir »

Такая проблема: при попытке вызвать любой скрипт выскакивает ошибка сервера сценариев Windows 800A01AD "Невозможно создание объекта сервером программирования объектов". В частности, при запуске Test.js в этом сообщении указывается "Строка: 16" и "Символ: 1". Система WinXP Pro SP3, MS Win Script 5.6. С чем может быть связано и как от этого избавиться?

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

Post by Instructor »

Vladimir

Scripts-Rus.txt:
*** Установка ***

1. Скопируйте "Plugs\*.*" в "{AkelPad}\AkelFiles\Plugs".
2. Запустите "{AkelPad}\AkelFiles\Plugs\Scripts-register.bat".

Offline
Posts: 2
Joined: Sat Aug 02, 2008 4:25 pm
Location: Ukraine

Post by Vladimir »

Спасибо!

Offline
Posts: 14
Joined: Tue Jan 08, 2008 11:00 pm

Post by Dystopian »

Вместо Scripts-register.bat и Scripts-unregister.bat можно прямо из плагина использовать такие скрипты:
_Scripts-register.vbs

Code: Select all

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists("..\Scripts.dll")) Then
   WshShell.CurrentDirectory = WshShell.CurrentDirectory & "\.."
Else
   WshShell.CurrentDirectory = WshShell.CurrentDirectory & "\AkelFiles\Plugs\"
End If
WshShell.Run("regsvr32 Scripts.dll")
_Scripts-unregister.vbs

Code: Select all

Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists("..\Scripts.dll")) Then
   WshShell.CurrentDirectory = WshShell.CurrentDirectory & "\.."
Else
   WshShell.CurrentDirectory = WshShell.CurrentDirectory & "\AkelFiles\Plugs\"
End If
WshShell.Run("regsvr32 /u Scripts.dll")
Каждый скрипт проверяет, откуда он запущен (из плагина или в проводнике), так что можно использовать их, как раньше Scripts-register.bat и Scripts-unregister.bat. Знак '_' в начале имени "поднимет" их в списке скриптов плагина. Не возражаю, если файлы войдут в дистрибутив.

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

Post by Instructor »

indvdum wrote:вот такая вот проблема: как выделить из %f в функции Exec() только имя файла без расширения?.. или вообще заменить расширение?..
Скрипт для Scripts плагина:

RunBaseName.js

Code: Select all

var AkelPad=new ActiveXObject("AkelPad.document");
var WshShell=new ActiveXObject("WScript.shell");
var fso=new ActiveXObject("Scripting.FileSystemObject");

var hMainWnd=AkelPad.GetMainWnd();
var pFileFullName=AkelPad.GetEditFile(0);
var pBaseName=fso.GetBaseName(pFileFullName);

if (hMainWnd)
{
    WshShell.Run("notepad.exe " + pBaseName + ".txt", 1, true);
}
Кнопка Toobar плагина:

Code: Select all

-"Запустить файл" Call("Scripts::Main", 1, "RunBaseName.js", "", 0) Icon(0)

Offline
Posts: 16
Joined: Mon Aug 25, 2008 9:31 am

Post by indvdum »

всё, настроил акелпад как среду разработки на tasm ;) пришлось правда переписать вышеприведенный скрипт на vbs, на js почему-то ошибки были с командной строкой.. да еще не знаю какой есть аналог на js функции Left() на vbs..
в частности для линковки tlink на vbs:

Code: Select all

Set AkelPad=CreateObject("AkelPad.document")
Set WshShell=CreateObject("WScript.shell")
Set fso=CreateObject("Scripting.FileSystemObject")

hMainWnd=AkelPad.GetMainWnd()
pFileName=AkelPad.GetEditFile(0)
pExt=fso.GetExtensionName(pFileName)
if Lcase(pExt)="asm" then
	pFolder=fso.GetParentFolderName(pFileName)
	pFileName=left(pFileName,len(pFileName)-4)+".obj"
	command="cd " + chr(34) + pFolder + chr(34) + " && c:\tasm\bin\tlink.exe /v " + pFileName

	if hMainWnd <> 0 then WshShell.Run("%COMSPEC% /K " + command)
else WScript.Echo "Редактируемый документ имеет расширение, отличное от" + chr(34) + ".asm" + chr(34)
end if
еще вот такой вопрос (не знаю вообще-то сюда ли по нему надо обращаться..) - в приведенном коде если использовать конструкцию

Code: Select all

if условие1 and условие2
то второе условие никак не обрабатывается.. приходится использовать вложенные if.. непонятно почему так происходит

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

Post by VladSh »

indvdum
Скрипты собираем здесь.

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

Post by VladSh »

Dystopian wrote:Вместо Scripts-register.bat и Scripts-unregister.bat можно прямо из плагина использовать такие скрипты:
_Scripts-register.vbs
...
_Scripts-unregister.vbs
...
Я делаю проще - в Главном меню создал свою менюху и прописал туда 2 строки:

Code: Select all

  "Scripts-register.bat" Exec("%a\AkelFiles\Plugs\Scripts-register.bat", "%a\AkelFiles\Plugs")
  "Scripts-unregister.bat" Exec("%a\AkelFiles\Plugs\Scripts-unregister.bat", "%a\AkelFiles\Plugs")
Всё работает.
Post Reply