Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh
PS:
Вот такой кусочек кода может вам поможет

Code: Select all

var frame = AkelPad.SendMessage(hmain, AKD_FRAMEFIND,FWF_CURRENT,0);
Я бы написал больше, но пока не в силах устно на ходу просчитать смещение поля.

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

Post by VladSh »

FeyFre
Пасиба, но я сам ничего не понял... :)
AKD_FRAMEFIND нигде ничему не равно (не знаю, что туда передавать), а FWF_CURRENT = 1.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh
Все AKD_* объявлены в AkelDll.h как WM_USER + ###

Code: Select all

#define AKD_FRAMEFIND              (WM_USER + 264)
#define AKD_FRAMEFINDA             (WM_USER + 265)
#define AKD_FRAMEFINDW             (WM_USER + 266)
WM_USER объявлен в PlatformSDK(Windows SDK) в файле WinUser.h как 0x0400
Сообщение AKD_FRAMEFIND возвращает указатель на внутреннюю структуру Акеле FRAMEDATA (берем там в том же AkelDll.h) - структура которая содержит всю индивидуальную информацию вкладки(каждой вкладке своя, в SDI - в единичном экземпляре)
В общем, пока рылся, нашел путь

Code: Select all

var tabstob = AkelPad.SendMessage(hWndEdit, AEM_GETTABSTOP,0,0);
// Манипулируем tabstob
AkelPad.SendMessage(hWndEdit, AEM_SETTABSTOP,tabstop,0);
// AEM_SETTABSTOP = WM_USER + 2216
// AEM_GETTABSTOP  = WM_USER + 2215
// WM_USER = 0x0400

Тут мы напрямую у контролла спрашиваем размер табов, и устанавливаем его, без участия FRAMEDATA. Соотв. оно в настройки не попадет. Но с другой стороны, сколько оно буде держатся в окне тоже понятия не имею.

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

Post by Infocatcher »

openRelativeFile.js
Небольшие улучшения + поддержка вложенных манифестов (только один уровень, дока молчит, примеров с большей вложенностью не видать, а проверять лениво).

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

Post by VladSh »

FeyFre wrote:Тут мы напрямую у контролла спрашиваем размер табов, и устанавливаем его, без участия FRAMEDATA. Соотв. оно в настройки не попадет. Но с другой стороны, сколько оно буде держатся в окне тоже понятия не имею.
Спасибо огромное за помощь! 8)
Всё отлично: изменения только для текущей вкладки; размер таба держится на всё время жизни вкладки. Это именно то, что мне было нужно!
P.S. В скрипт Instructor'а добавил дополнительный аргумент (при его наличии настройки программы не меняются) и отправил ему в личку.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Всё отлично: изменения только для текущей вкладки; размер таба держится на всё время жизни вкладки.
Все usecase-попробовали? Как оно себя ведет при разделении окон и обратно?

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

Post by VladSh »

FeyFre
Все или нет, не знаю.. но при разделении окон работает правильно: изменяется во всех частях сразу, не сбрасывается при снятии разделения окна.

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Infocatcher wrote:openRelativeFile.js
Небольшие улучшения + поддержка вложенных манифестов (только один уровень, дока молчит, примеров с большей вложенностью не видать, а проверять лениво).
а если добавить возможость открытия файлов в ассоциированных программах будет вообще атас

jpg во вьювере, mp3 в плеере и т.д.

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

Post by Infocatcher »

se7h wrote:
Infocatcher wrote:openRelativeFile.js
[...]
а если добавить возможость открытия файлов в ассоциированных программах будет вообще атас

jpg во вьювере, mp3 в плеере и т.д.
Не понятно, как различать, что открывать в AkelPad'e, а что – по системной ассоциации.
Впрочем, начать можно и со списка расширений. :)

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Infocatcher wrote:
se7h wrote:
Infocatcher wrote:openRelativeFile.js
[...]
а если добавить возможость открытия файлов в ассоциированных программах будет вообще атас

jpg во вьювере, mp3 в плеере и т.д.
Не понятно, как различать, что открывать в AkelPad'e, а что – по системной ассоциации.
Впрочем, начать можно и со списка расширений. :)
возможно, файл можно проверить на бинарность? и затем открыть такой в другой программе :?
если что, список тоже решение

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

возможно, файл можно проверить на бинарность?
Как?
А различать, в чем запускать, можно параметром.

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

Fr0sT wrote:
возможно, файл можно проверить на бинарность?
Как?
А различать, в чем запускать, можно параметром.
Scripts-Rus.txt wrote:AkelPad.OpenFile
________________

Открыть файл.

OpenFile(pFile[, nFlags][, nCodePage][, bBOM]);

Аргументы
pFile
Файл для открытия.
nFlags
0x1 //OD_ADT_BINARY_ERROR Проверить является ли файл бинарным.
...
как-то так :roll:

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

Post by Infocatcher »

se7h wrote:как-то так :roll:
Как-то так будет
AkelPad
---------------------------
"...\l.gif" бинарный файл. Продолжить?
---------------------------
ОК Отмена
На ОК вернет 0, а на Отмена – -12.

Сделал: openRelativeFile.js
Если на запрос AkelPad'а выбрать отмену, то будет использована системная ассоциация.

Offline
Posts: 767
Joined: Mon Sep 28, 2009 10:03 am
Location: Minsk, Belarus

Post by se7h »

ИМО лучше белый список с расширениями, чем костыль с отменной
впрочем, одно другому не мешает, если будет возможность выбрать свой вариант

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

Post by Infocatcher »

Тогда нужна возможность заставить AkelPad.OpenFile() молчать на бинарных файлах (и не открывать их).
Locked