Scripts discussion (3)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

KDJ wrote:In which case, RegisterCallback returns false (0)?
If you will look at sources RegisterCallback returns NULL, for example, if script try to register 31 callback. But plugin also set HRESULT to DISP_E_BADINDEX to specify error for user, because RegisterCallback error it is a stop execution error.
CreateDialog_functions.js wrote:var hDC = oSys.Call("User32::GetDC", 0);
Just for information - on Windows with aero effect getting entire screen device context even single time could take more than second.

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

Post by KDJ »

Instructor
So the following code should work faster?

Code: Select all

var hDC = oSys.Call("User32::GetDC", AkelPad.GetMainWnd());

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

Post by Infocatcher »

Instructor
Hmm...

Code: Select all

var t = new Date().getTime();
oSys.Call("User32::GetDC", 0);
WScript.Echo((new Date().getTime() - t) + " ms");
"0 ms" for me on Windows 7 x86 (with Aero enabled). But

Image

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

Post by Instructor »

KDJ
Yes. I'd rather use AkelPad.GetMainWnd() instead of zero.

Infocatcher
Помню была проблема с медленной прорисовкой активного столбца на Win7 с aero - там я также получал GetDC с 0. Уже запамятовал, но возможно уское место было именно при прорисовке. В любом случае лучше получить DC окна AkelPad'а, чтобы избежать возможных проблем с быстродействием.

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

Post by KDJ »

AkelPadRestart.js
Added: support for SDI mode.

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

Post by KDJ »

AkelPadRestart.js
Changed: saving modified documents before restart.
Added: possibility to translate language strings.

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

Post by Andrey_A_A »

KDJ, не могли ли бы ввести новый параметр в скрипт Translator.js
чтобы при вызове автоматически переводился текст

к примеру Call("Scripts::Main", 1, "Translator.js", `"ru en" "autotrans"')

Заранее спасибо.

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

Post by KDJ »

Andrey_A_A
Options->Settings, turn on: "Load source text to panel at start" and "Start immediately translate".

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

Post by Andrey_A_A »

KDJ
я поставил галочку, но всё равно не происходит перевода при старте.

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

Post by KDJ »

Andrey_A_A
Well, sometimes it does not work.
Try this test version Translator_test.js: KDJ.zip

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

Post by KDJ »

AkelPadRestart.js
Fixed: does not work if the option "Don't open a program twice" is not set.

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

Post by Andrey_A_A »

KDJ wrote:Andrey_A_A
Well, sometimes it does not work.
Try this test version Translator_test.js
Спасибо, в этой версии работает!

------------- Добавлено ----------------
Ваш скрипт AkelPadRestart.js у меня не работает, просто закрывает программу. Думаю не хватает паузы, а лучше сделать ожидание завершения процесса, потому что вкладок может быть достаточно много

Offline
Posts: 173
Joined: Mon Dec 06, 2010 9:53 am
Location: г.Харьков, Русь

Post by San_dr »

Мне нужно вызвать окно AkelPad с заранее сформированным видом, развернутое (но с панелью заголовка, не FullScreen).
Конструкция вида

Code: Select all

-"Основная развёрнутая" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Call("Scripts::Main", 1, "ScreenView.js", '-View="DefaultFS" -FullScreen=0'); {AkelPad.Command(4331);}`)
работает, но окно через раз развернуто/восстановленно. Меняю метод с Command(4331) на Show(3) - т.е. показавать развернутым

Code: Select all

-"Основная развёрнутая" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Call("Scripts::Main", 1, "ScreenView.js", '-View="DefaultFS" -FullScreen=0'); {AkelPad.Show(3);}`)
и это вызывает ошибку скрипта EvalCmd.js
пробовал менять последовательность

Code: Select all

 -"Основная развёрнутая" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Show(3);  {AkelPad.Call("Scripts::Main", 1, "ScreenView.js", '-View="DefaultFS" -FullScreen=0');}`)
- без разницы, ошибка скрипта: Объект не поддерживает это свойство или метод...
Как правильно собрать такой... паровоз?

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

Post by KDJ »

San_dr

Code: Select all

-"Основная развёрнутая" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Call("Scripts::Main", 1, "ScreenView.js", '-View="DefaultFS" -FullScreen=0'); AkelPad.SystemFunction().Call("User32::ShowWindow", AkelPad.GetMainWnd(), 3 /*SW_MAXIMIZE*/);`)

#or

-"Основная развёрнутая" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.Call("Scripts::Main", 1, "ScreenView.js", '-View="DefaultFS" -FullScreen=0'); AkelPad.SendMessage(AkelPad.GetMainWnd(), 274 /*WM_SYSCOMMAND*/, 0xF030 /*SC_MAXIMIZE*/, 0);`)

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

Post by KDJ »

Translator.js
Fixed: option "Start immediately translate" sometimes does not work.
Andrey_A_A wrote: Ваш скрипт AkelPadRestart.js у меня не работает, просто закрывает программу. Думаю не хватает паузы, а лучше сделать ожидание завершения процесса, потому что вкладок может быть достаточно много
What versions of Windows and AkelPad are you using (32/64 bit)?
Locked