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 »

VladSh wrote:

Code: Select all

..., `-param1='"' -param2='"'`)
не работает. Как только не пытался, и слэшами экранировал, ничего не выходит.
Будет доступно в новой версии Scripts плагина.

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

Post by Infocatcher »

Хм, сортировка скриптов поменялась.
Было:
script.js
script-1.0.js
script-1.1.js
А стало наоборот:
script-1.0.js
script-1.1.js
script.js

У меня что проводник, что Total Commander («естественная сортировка: коды символов и числа») сортируют по старому варианту.

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

Post by Instructor »

Infocatcher
Сортировка идёт по алфавиту.

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

Post by Instructor »

Изменено: перехватчик сообщений окна может быть установлен без наличия цикла сообщений.
Изменено: теперь строка в аргументах скрипта может быть заключена в '' или ``, например:

Code: Select all

Call("Scripts::Main", 1, "MyScript.js", "-ArgName1=`0.01` -ArgName2='Value2'")
Изменено: теперь метод SetEditWnd возвращает ноль, только если окно не AkelEdit/RichEdit20.
Изменено: убраны устаревшие методы IsOldRichEdit, IsOldComctl32.
Добавлено: информация о скрипте в главный диалог. В начале скрипта в комментариях возможно указывать служебную информацию, которая выводится в списке скриптов (необходимо включить соответствующие колонки правым кликом мыши по шапке списка), а также используется AkelUpdater'ом при обновлении.
Добавлено: внешний вызов с кодом 4 - выполнить скрипт в главном потоке, а не создавать новый.
Добавлено: типы в метод ScriptSettings().Read:
- PO_ENUM - получить имя настройки по индексу;
- PO_BINARYSTRING - прочитать текст (обычно многострочный), который был сохранен как бинарные данные;
- PO_BINARYSIZE - получить размер бинарных данных в байтах.
Добавлено: метод GetFilePath - получить часть пути файла.
Добавлено: метод ScriptExitCode - установить код выхода из скрипта.
Добавлено: возможность устанавливать фильтр сообщений для методов WindowRegisterClass и ThreadHook.
Добавлено: если параметр pScriptBaseName в ScriptSettings().Begin равно "", то использовать текущее имя скрипта.
Добавлено: восстановление прокрутки в метод ReplaceSel.
Добавлено: возможность получить имя скрипта без расширения в метод ScriptHandle.
Добавлено: возможность использовать дескриптор окна, которое имеет фокус, в метод SetEditWnd.
Исправлено: тип PO_BINARY метода ScriptSettings().Read.
Исправлено: возможное выполнение недействующего указателя после ThreadUnhook.
Исправлено: выход из программы, когда присутствует скрипт ожидающий другие скрипты.

Changed: message loop not necessary for subclassing.
Changed: now script string argument can be enclosed in '' and ``, for example:

Code: Select all

Call("Scripts::Main", 1, "MyScript.js", "-ArgName1=`0.01` -ArgName2='Value2'")
Changed: now SetEditWnd method returns zero only if window is not AkelEdit/RichEdit20.
Changed: removed deprecated methods IsOldRichEdit, IsOldComctl32.
Added: script information in main dialog. At the script beginning in the comments possible to set service information, which appear in the scripts list (appropriate columns must be enabled by mouse right click on the list header).
Added: external call with code 4 - execute script in main thread without creating the new one.
Added: types in ScriptSettings().Read method:
- PO_ENUM - retrieve option name by index.
- PO_BINARYSTRING - read string (usually multiline), which was saved as binary data;
- PO_BINARYSIZE - retrieve binary data size in bytes.
Added: method GetFilePath - get file path part.
Added: method ScriptExitCode - set script exit code.
Added: possibility to add message filter to WindowRegisterClass and ThreadHook methods.
Added: if pScriptBaseName in ScriptSettings().Begin method is "", then use current script name.
Added: restoring scroll in ReplaceSel method.
Added: possibility to retrieve script name without extension in ScriptHandle method.
Added: possibility to use window handle that has focus in SetEditWnd method.
Fixed: PO_BINARY type of ScriptSettings().Read method.
Fixed: possible dangling pointer execution after ThreadUnhook.
Fixed: quiting when script is waiting for other script.


Scripts plugin v15.8

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

В новой вкладке (без имени)
метод

Code: Select all

Ext = AkelPad.GetFilePath(AkelPad.GetEditFile(0), 4)
пишет ошибку: недостаточно памяти

При той же ситуации

Code: Select all

Ext = CreateObject("Scripting.FileSystemObject").GetExtensionName(AkelPad.GetEditFile(0))
Возвращает пустую строку.

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

Post by Instructor »

Исправлено: вызов метода GetFilePath для файла без расширения.

Fixed: GetFilePath method call for file without extension.


Scripts plugin v15.9

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Instructor, спасибо, работает.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

Instructor wrote:Changed: message loop not necessary for subclassing.
Scripts-Eng.txt wrote:AkelPad.WindowSubClass (+ActiveX)
...
Example:
...
    //Message loop
    AkelPad.WindowGetMessage();
Maybe this should be removed from the example.

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Instructor
до 4.9.1 работал такой код
сейчас жуткие траблы с окном происходят... Что изменилось?

Code: Select all

MainWnd = AkelPad.GetMainWnd()
SetRedraw(MainWnd, False)
...

...
SetRedraw(MainWnd, True)

' Функция отключения/включения прорисовки окна
Function SetRedraw(hhWnd, bRedraw)
  With AkelPad
    .SendMessage hhWnd, 11, bRedraw, 0
    If bRedraw Then
      .SystemFunction().Call "user32::InvalidateRect", hhWnd, 0, True
    End If
  End With
End Function
Это поведение можно обнаружить на многих скриптах, к примеру, CloseUnnamedAll.js

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Instructor
Наверное, моя проблема отсюда же (хотя с CloseUnnamedAll.js всё нормально вроде):
скриншоты слева напрво - норма, запуск скрипта winMergeTabs.js, поводил курсор мыши по тулбарам http://rghost.ru/59718832/image.png

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Code: Select all

хотя с CloseUnnamedAll.js всё нормально вроде
Сейчас посмотрел скрипт - 1.5., в нём SetRedraw вообще убран.
Это значит что эта функция теперь не нужна?
----------
Хотя вспомнил - вставлял это для себя - так гораздо меньше мелькание табов было.
------------ Добавлено ------------
Пробовал так:

Code: Select all

var hMainWnd = AkelPad.GetMainWnd();
SetRedraw(hMainWnd);
...
SetRedraw(0);

function SetRedraw(hWnd)
{
   var oSys = AkelPad.SystemFunction();
   oSys.Call("user32::LockWindowUpdate", hWnd);
}
Получше, но все равно что-то не ладное с окном творится
что-то типа этого:
viewtopic.php?p=27038#p27038

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Andrey_A_A wrote:Сейчас посмотрел скрипт - 1.5
У меня 1.6

Offline
Posts: 670
Joined: Thu Jun 03, 2010 8:47 am
Location: Сочи, Хоста
Contact:

Post by Andrey_A_A »

Code: Select all

У меня 1.6
Может для узкого круга есть и 1.85, но на сайте 1.5
viewtopic.php?p=3370#p3370
Image

Хотя сути вопроса это не меняет.

Offline
Posts: 1161
Joined: Sun Oct 20, 2013 11:44 am

Post by Skif_off »

Andrey_A_A wrote:Может для узкого круга есть и 1.85, но на сайте 1.5
http://akelpad.sourceforge.net/files/pl ... ructor.zip

К слову:
Добавлено: обновление скриптов в AkelUpdater.
Я, правда, ручками привык.

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

Post by Infocatcher »

Instructor wrote:Сортировка идёт по алфавиту.
А раньше как было? :?
Лучше бы как в проводнике сортировать.
Post Reply