Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Infocatcher
Fr0sT
VladSh
+1

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Scripts-Rus.txt wrote:AkelPad.VarType
...
Возвращаемое значение
Число. Тип (VARTYPE) переменной (VARIANT).
0 //VT_EMPTY
1 //VT_NULL
...
Напрашивается что-то вроде

Code: Select all

if(AkelPad.VarType(someVar) == AkelPad.VT_EMPTY) { ... }
:)

И немного предыстории. :)

Code: Select all

var oSet=AkelPad.ScriptSettings();
var nNumber;

if (oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/))
{
  oSet.Write("Number", 1 /*PO_DWORD*/, Number("-5")); // Вот тут-то и подвох
  oSet.End();
}

if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
{
  nNumber=oSet.Read("Number", 1 /*PO_DWORD*/);
  WScript.Echo("" + nNumber);
  oSet.End();
}
(например, мы получаем "-5" в виде строки от пользователя)

Правда, в старой версии подвох был круче.

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

Post by Instructor »

Добавлено: отображение статуса скриптов в диалоге.
Добавлено: метод Exec().
Добавлено: метод VarType().
Добавлено: метод IsInclude().
Добавлено: параметр в метод ScriptNoMutex(), который позволяет:
- Освободить поток программы от ожидания завершения скрипта. Только для внешнего вызова скрипта с кодом 2.
- Запретить запуск нескольких копий скрипта.
Исправлено: метод ScriptSettings().Begin создавал ini с некорректным именем (Win95/98/Me).

Added: scripts status displaying in dialog.
Added: method Exec().
Added: method VarType().
Added: method IsInclude().
Added: option in method ScriptNoMutex(), which allows to:
- Unlock main thread from waiting this script. Only if script is called with extenal call with code 2.
- Deny execution of the multiple script copies.
Fixed: method ScriptSettings().Begin created ini with incorrect filename (Win95/98/Me).


Scripts plugin v8.4
Last edited by Instructor on Thu May 12, 2011 3:32 pm, edited 1 time in total.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Instructor wrote:Добавлено: отображение статуса скриптов в диалоге.
Теперь-то туда точно напрашивается возможность принудительного завершения зависшего скрипта. :D
И хорошо бы сортировку, чтобы можно было увидеть все запущенные скрипты сверху.

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

Post by VladSh »

Instructor
Прошу в метод Begin всё-таки добавить необязательный параметр или отдельный метод объекта oSet, которым указывать путь к папке с ini-файлом.
Вот пример: OpenSessionsDir.js, где можно было бы прочитать значение параметра SaveSessions через oSet, но этого сделать сейчас невозможно...(
Очень желательно, чтобы пути к ini можно было задавать не только внутри ...\AkelPad\... Если в пути нет вхождения текста "AkelPad" или лучше GetAkelDir(0), тогда, естественно, использовать только чтение из ini.

Ещё по старому (по диалогу скриптов):
- прошу добавить кнопку "Создать скрипт" - не надо будет постоянно искать нужную папку для сохранения (ещё одно удобство);
- прошу добавить возможность перехода в папку Include (там ведь тоже есть скрипты), для того, чтобы иметь возможность их быстрого открытия;
- добавить возможность быстро копировать имя скрипта - из контекстного меню;
- туда же, в контекстное меню на скрипте, можно зашарабанить "возможность принудительного завершения зависшего скрипта", о которой говорит Infocatcher.

Offline
Posts: 84
Joined: Fri May 28, 2010 1:28 pm

Post by private_joker »

Начал-таки пользоваться скриптами, отметил некоторое неудобство меню скриптов: нет описания скрипта (кроме коментов в самом скрипте). Почему бы не выводить краткое описание в эдитбоксе, либо хинтом, при наведении курсора? Брать описание можно из комментария в самом скрипте (как doxygen например "дергает" описания для классов/методов из сорцов).

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

Post by Instructor »

Исправлено: передача дескриптора oSys.RegisterCallback в AkelPad.MemCopy.

Fixed: pass oSys.RegisterCallback handle to AkelPad.MemCopy.


Scripts plugin v8.6

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

Post by Instructor »

Исправлено: AkelPad.WindowSubClass не работал.

Fixed: AkelPad.WindowSubClass didn't work.


Scripts plugin v8.7

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

Post by Instructor »

Добавлено: реализация oSys.RegisterCallback для x64 (будет доступно после релиза программы).
Исправлено: oSys.RegisterCallback вызывал ошибку в программе.

Added: oSys.RegisterCallback implementation for x64 (will be available after program release).
Fixed: oSys.RegisterCallback cause program error.


Scripts plugin v8.8

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

Post by Instructor »

Исправлено: запуск скрипта из скрипта с ожиданием завершения.

Fixed: script execution from the script with wait for completion.


Scripts plugin v8.9

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

Post by Instructor »

VladSh wrote:Вот пример: OpenSessionsDir.js, где можно было бы прочитать значение параметра SaveSessions через oSet, но этого сделать сейчас невозможно...

Code: Select all

var oSet=AkelPad.ScriptSettings();
var pString;

if (oSet.Begin("..\\Sessions", 0x1 /*POB_READ*/))
{
  pString=oSet.Read("SaveSessions", 3 /*PO_STRING*/);
  oSet.End();
}
WScript.Echo(pString);

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

Post by Instructor »

Добавлено: во внешних вызовах используется имя последнего обработанного скрипта, если указано "" вместо имени.
Добавлено: сохранение имени последнего обработанного скрипта.

Added: in external calls the name of the last processed script used, if "" set instead of the name.
Added: save name of last processed script.


Scripts plugin v9.0

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

Post by Instructor »

Добавлено: метод AkelPad.GetLangId - определить идентификатор языка программы.

Added: method AkelPad.GetLangId - get program language ID.


Scripts plugin v9.1

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

Post by Instructor »

Infocatcher wrote:

Code: Select all

var oSet=AkelPad.ScriptSettings();
var nNumber;

if (oSet.Begin(WScript.ScriptBaseName, 0x2 /*POB_SAVE*/))
{
  oSet.Write("Number", 1 /*PO_DWORD*/, Number("-5")); // Вот тут-то и подвох
  oSet.End();
}

if (oSet.Begin(WScript.ScriptBaseName, 0x1 /*POB_READ*/))
{
  nNumber=oSet.Read("Number", 1 /*PO_DWORD*/);
  WScript.Echo("" + nNumber);
  oSet.End();
}
(например, мы получаем "-5" в виде строки от пользователя)
Я где-то отвечал, что метод Number() возвращает переменную с плавающей точкой.

Code: Select all

var nNumber=Number("-5"); 

WScript.Echo(AkelPad.VarType(nNumber));
Используйте parseInt или Number("-5") + 0.

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

Post by VladSh »

Instructor wrote:

Code: Select all

if (oSet.Begin("..\\Sessions", 0x1 /*POB_READ*/))
Эта штука только для папки Plugins работает или можно передавать внешний (не AkelPad\...) путь?
Хотелось бы видеть это в доке (метод Begin), а то там написано, что параметр - "наименование скрипта"; да и забудется со временем...
Теперь будет чуть легче; спасибо!
Post Reply