Scripts plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 3243
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Instructor wrote:Реализовано. Будет доступно после релиза 4.7.0.
Буду танцевать :D Спасибо!

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

Post by Instructor »

Добавлено: возможность задавать в WindowSubClass фильтр сообщений.
Добавлено: метод AkelPad.GetEditDoc - определить дескриптор активного документа.
Для информации: изменено сообщение AKD_GETMAININFO, а также добавлено AKD_GETFRAMEINFO.

Added: ability to specify the message filter for WindowSubClass.
Added: method AkelPad.GetEditDoc - get active document handle.
For information: changed message AKD_GETMAININFO and also added AKD_GETFRAMEINFO.


Scripts plugin v10.1

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

Post by Infocatcher »

Instructor wrote:Для информации: изменено сообщение AKD_GETMAININFO, а также добавлено AKD_GETFRAMEINFO.
Надо обновить ForceNewInstance.js.
А еще у меня четыре похожих скрипта + контекстное меню текстового поля в converter.js...

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

Post by Instructor »

Добавлено: метод SetFrameInfo - установить настройки вкладки.
Для информации: дополнено AKD_GETMAININFO, добавлено AKD_SETFRAMEINFO, изменено AKD_GETFRAMEINFO.

Added: method SetFrameInfo - set frame information.
For information: Completed AKD_GETMAININFO, added AKD_SETFRAMEINFO, changed AKD_GETFRAMEINFO.


Scripts plugin v10.4

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

Post by KDJ »

Scripts plugin v10.4

Code: Select all

AkelPad.SetFrameInfo(0, 46 /*FIS_URLLEFTDELIMITERS*/, "abc");
AkelPad.SetFrameInfo(0, 50 /*FIS_URLRIGHTDELIMITERS*/, "abc");
AkelPad.SetFrameInfo(0, 55 /*FIS_WORDDELIMITERS*/, "abc");
generates type mismatch error.

Code: Select all

AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 108 /*FI_WORDDELIMITERS*/, 0);
returns a pointer to memory instead of a string.

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

Post by VladSh »

Instructor wrote:Добавлено: метод SetFrameInfo - установить настройки вкладки.
Хотелось бы иметь возможность при создании документа устанавливать в "скрытых свойствах" (специальные FIS_*) дирректорию для сохранения данного файла и его расширение.
Это очень помогло бы при установке синтаксической темы и подсветки в т.ч. (неплохо было бы научить читать установленное расширение Coder-плагин), таким же образом можно было бы автоматически определять "белый список" при включении SpellCheck, а также удобно было бы при сохранении нового файла.

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

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

Post by VladSh »

Instructor

Code: Select all

var bTabStopAsSpaces = AkelPad.SendMessage(AkelPad.GetMainWnd(), 1223 /*AKD_GETFRAMEINFO*/, 52 /*FI_TABSTOPASSPACES*/, 0);
Похоже опять отвалилось..
В документации (FIS_*) 52 вообще нету, но оно возвращает 3, как будто возвращает число пробелов из настроек в символе табуляции.

Добавлено:
И что-то как-то странно работает галка "Пробелы" в "Размере табуляции" в настройках проги. Ставлю галку, Ок (диалог закрывается). Открываю диалог снова и вижу: галка не стоит, размер табуляции = 1.

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

Post by Instructor »

VladSh wrote:

Code: Select all

var bTabStopAsSpaces = AkelPad.SendMessage(AkelPad.GetMainWnd(), 1223 /*AKD_GETFRAMEINFO*/, 52 /*FI_TABSTOPASSPACES*/, 0);
Похоже опять отвалилось..
В документации (FIS_*) 52 вообще нету, но оно возвращает 3, как будто возвращает число пробелов из настроек в символе табуляции.
FIS_ это только для AKD_SETFRAMEINFO/SetFrameInfo. Для AKD_GETFRAMEINFO используются FI_, но, в связи с добавлением AKD_SETFRAMEINFO в 4.7.1, были "уницированы" флаги сообщений. См. AkelDLL.h - там FI_TABSTOPASSPACES равен 53.
VladSh wrote:И что-то как-то странно работает галка "Пробелы" в "Размере табуляции" в настройках проги. Ставлю галку, Ок (диалог закрывается). Открываю диалог снова и вижу: галка не стоит, размер табуляции = 1.
viewtopic.php?p=15933#p15933

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

Post by VladSh »

Instructor
Ок, спасибо.

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

Post by Instructor »

KDJ wrote:...generates type mismatch error.
...returns a pointer to memory instead of a string.
Those calls works only with memory.

Code: Select all

AkelPad.SetFrameInfo(0, 55 /*FIS_WORDDELIMITERS*/, AkelPad.MemStrPtr("abc")); 
And the next flags will work only in 4.7.2 - FIS_URLPREFIXESENABLE, FIS_URLPREFIXES, FIS_URLDELIMITERSENABLE, FIS_URLLEFTDELIMITERS, FIS_URLRIGHTDELIMITERS, FIS_WORDDELIMITERSENABLE, FIS_WORDDELIMITERS, FIS_WRAPDELIMITERSENABLE, FIS_WRAPDELIMITERS.

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

Post by KDJ »

Instructor wrote:Those calls works only with memory.
Well, but it is inconsistent with the description.
AkelDLL.h:

Code: Select all

AKD_GETFRAMEINFO
(void)wParam        == can be combination of FI_* defines or pointer to a FRAMEINFO structure.
 If wParam is combination of FI_* defines, then return value is the requested data.
Scripts-Eng.txt:

Code: Select all

  SetFrameInfo(lpFrame, nType, dwData);
Arguments
  dwData
    Setting data.

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

Post by Instructor »

KDJ
AkelPad.SendMessage always returns integer, so you can read it like "return value is the pointer to requested data."

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

Post by KDJ »

Instructor
Whether this means that:
AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 69 /*FI_CARETOPTIONS*/, 0);
returns caret options integer value directly,
and
AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 108 /*FI_WORDDELIMITERS*/, 0);
returns pointer to word delimiters string?

In the case of SetFrameInfo:
AkelPad.SetFrameInfo(0, 17 /*FIS_CARETOPTIONS*/, CaretOptions);
CaretOptions must be integer value specified directly,
and
AkelPad.SetFrameInfo(0, 55 /*FIS_WORDDELIMITERS*/, WordDelimiters);
WordDelimiters must be pointer to word delimiters string?

Whether I well understood it?

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

Post by Instructor »

KDJ
Correct. But be carefull if you don't use FRAMEINFO in wParam like

Code: Select all

AkelPad.SendMessage(hMainWnd, 1223 /*AKD_GETFRAMEINFO*/, 108 /*FI_WORDDELIMITERS*/, 0);
It returns pointer to memory directly to AkelPad storage.

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

Post by KDJ »

Instructor wrote:And the next flags will work only in 4.7.2 - FIS_URLPREFIXESENABLE, FIS_URLPREFIXES, FIS_URLDELIMITERSENABLE, FIS_URLLEFTDELIMITERS, FIS_URLRIGHTDELIMITERS, FIS_WORDDELIMITERSENABLE, FIS_WORDDELIMITERS, FIS_WRAPDELIMITERSENABLE, FIS_WRAPDELIMITERS.
How it will look like in future versions?
Post Reply