Scripts discussion (2)

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

Post by FeyFre »

Instructor
Какраз ширина. Первый WM_SIZE который мне приходит, приходит с окном(точнее с клиентской областью) нулевых размеров(ширины точно, высоты - нужно вспомнить точно, но тоже по моему нулевая). Я как и положено пересчитываю новые координаты и размеры элементов, которые и получаются отрицательной ширины, и потому их не видно. Больше WM_SIZE с корректными размерами мне не приходит, только после того как пользователь дернет размер панельки мышкой(что уже поздно).

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

Post by Instructor »

FeyFre
Попробую кодом донести мысль:

Code: Select all

var _H = 100;

Code: Select all

   //switch(_SIDE)
   //{
   //   case DKS_LEFT:case DKS_RIGHT:break;
   //   default:_SIDE = DKS_RIGHT;WRITE_SETTINGS();break;
   //}
   //AkelPad.MemCopy(pDock + 8, DKF_OWNTHREAD|DKF_NODROPTOP|DKF_NODROPBOTTOM|/*DKF_FIXEDSIZE|*/DKF_DRAGDROP, DT_DWORD);
   AkelPad.MemCopy(pDock + 8, DKF_OWNTHREAD|DKF_DRAGDROP, DT_DWORD);

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

Post by FeyFre »

Instructor
Сделал так:

Code: Select all

var _H = 100;

Code: Select all

/*	switch(_SIDE)
	{
		case DKS_LEFT:case DKS_RIGHT:break;
		default:_SIDE = DKS_RIGHT;WRITE_SETTINGS();break;
	}*/
	_SIDE = DKS_BOTTOM;
	//AkelPad.MemCopy(pDock + 8, DKF_OWNTHREAD|DKF_NODROPTOP|DKF_NODROPBOTTOM|/*DKF_FIXEDSIZE|*/DKF_DRAGDROP, DT_DWORD);
	AkelPad.MemCopy(pDock + 8, DKF_OWNTHREAD|DKF_DRAGDROP, DT_DWORD);
	AkelPad.MemCopy(pDock + 16, _SIDE, DT_DWORD);
Первый запуск - норма. Закрыл.
Смотрю в History.ini
[Options]
WIDTH=0
BS=20
GAP=5
SIDE=4
ELSE=512
FULLDND=0
HK_RT=1114
HK_RA=1882
HK_SH=1608
HIDE=0
PS=0
DATA=
FILTER=
APPLY=0
Далее второй запуск - серая панелька, ибо формула ширины для всех элементов вида _W - *n*_BS-m*_GAP. :(

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

Post by VladSh »

Infocatcher
Чуток по openFileIn.js.
Запилил такие настройки:

Code: Select all

"<HKCU\\Software\\Ghisler\\Total Commander\\InstallDir>\\TOTALCMD64.EXE",
"<HKCU\\Software\\Ghisler\\Total Commander\\InstallDir>\\TOTALCMD.EXE",
но не знаю, каким образом прописать (до < или после, или оно вообще для веток реестра не работает?), чтобы ?x64? работало (хотел указать его для первой строки из приведенного кода).

И ещё. Лучше бы appID давать всё-таки без пробелов и подчёркиваний, чтобы повысить "стрессоустойчивость".., а то неизвестно где, когда и что глюканёт.. Можно ли это подточить?

Добавлено:
Ещё хотелось бы задавать свой -args в аргументах, так, например, для TC указано "/O /S /T %f", а я привык к "/O /T /L %f", и менять скрипт не хочется по понятным причинам..

Offline
Posts: 382
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

VladSh
Может я что-то туплю, но после обновления до 4.7.3 не могу добиться выделения строки по горячей клавише. Использую selCompleteLine.js (4.6 (2011.12.06))
В окне "Скрипты" ему сопоставлено сочетание, но когда ставлю курсор на строку, нажимаю, ничего не происходит.

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

Post by Infocatcher »

Что-то я отвлекся. :)
VladSh wrote:но не знаю, каким образом прописать (до < или после, или оно вообще для веток реестра не работает?), чтобы ?x64? работало
?x64? и ?x86? надо дописывать в самое начало пути.
VladSh wrote:И ещё. Лучше бы appID давать всё-таки без пробелов и подчёркиваний, чтобы повысить "стрессоустойчивость".., а то неизвестно где, когда и что глюканёт.. Можно ли это подточить?
А есть ли особый смысл? Если глюкнет передача аргументов, то скажется это явно не на одном скрипте.
VladSh wrote:Ещё хотелось бы задавать свой -args в аргументах, так, например, для TC указано "/O /S /T %f", а я привык к "/O /T /L %f", и менять скрипт не хочется по понятным причинам..
И чем это будет принципиально отличаться от

Code: Select all

appsData["Total Commander"].args = "/O /T /L %f";
в openFileIn-options.js

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

Post by Instructor »

FeyFre wrote:WIDTH=0
Подобной проблемы не наблюдаю. Возможно стоит удалить History.ini.

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

Post by FeyFre »

Instructor
Эту проблему как-то получилось обойти(WM_SIZE чуть по другому обрабатываю. Дело в том, что первый WM_SIZE приходит очень рано - окно ещё имеет нулевой размер), НО. Теперь почему-то всплыло взаимное перерисовывание(вкладка рисуется поверх детей панельки, было когда-то такое), но я ещё откатаю-перепроверю, ибо на лету не понятно, виновен ли релиз 4.7.3, или я где-то лажанулся.

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

Post by VladSh »

Cuprum
У меня работает:

Code: Select all

if (! AkelPad.Include("selCompleteLine.js")) WScript.Quit();
selCompleteLine(AkelPad.GetSelStart(), AkelPad.GetSelEnd());
Такой вариант тоже:

Code: Select all

-"Выделить \r{...}\r" Call("Scripts::Main", 1, "BlockSelect.js", `-tagStart="\r" -tagEnd="\r" -inclTags=0`)
Но оно всё выделяет текст настоящей строки (ограниченной символами \r), а не видимой в окне проги.
Infocatcher wrote:А есть ли особый смысл? Если глюкнет передача аргументов, то скажется это явно не на одном скрипте.
Ещё и даблкликом удобно выделять и копировать.
Infocatcher wrote:И чем это будет принципиально отличаться от
Тем, что скрипт не надо будет анализировать на изменения, если его отредактировал автор, - просто закинул новую версию и всё.
Infocatcher wrote:openFileIn-options.js
openFileIn.js видел, openFileIn-test.js видел, а такого зверя пока не встречал).

Offline
Posts: 382
Joined: Wed Sep 28, 2011 3:05 pm

Post by Cuprum »

VladSh
Спасибо, разобрался. Как-то не заметил, что selCompleteLine.js должен быть помещен в папку Include

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

Post by FeyFre »

но я ещё откатаю-перепроверю, ибо на лету не понятно, виновен ли релиз 4.7.3, или я где-то лажанулся.
Подтверждаю. Чистый дистрбутив 4.7.2 против 4.7.3. Добавляю history.js v0.9 (последняя) + зависимость.
Режим PMDI/MDI(и даже SDI)
Активирую скрипт.
Перетягиваю вправо или влево край панельки, можно на чуть-чуть.
На кнопочках закрыть/свернуть замечаю мусор: например кусочек закладки, либо следы старой отрисовки этих же кнопок. Это в 4.7.3. В 4.7.2 всё нормально.

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

Post by Infocatcher »

VladSh wrote:
Infocatcher wrote:openFileIn-options.js
openFileIn.js видел, openFileIn-test.js видел, а такого зверя пока не встречал).
Вот тут было.

Code: Select all

var optionsPath = WScript.ScriptFullName.replace(/(\.[^.]+)?$/, "-options$&");
var fso = new ActiveXObject("Scripting.FileSystemObject");
if(fso.FileExists(optionsPath))
	eval(AkelPad.ReadFile(optionsPath));

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

Post by VladSh »

Infocatcher wrote:Вот тут было.
Не обратил внимания, т.к. эта штука опциональная, и делает её каждый под себя, т.е. при любом изменении скрипта автором придётся сравнивать dif'ы.

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

Post by Infocatcher »

VladSh
Ну, там можно вообще все настройки переписать.
Я смотрю, все идет к отдельному файлу настроек. :) Но и с ним придется посматривать на случай изменения формата, если уж на то пошло.

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

Post by Instructor »

FeyFre wrote:Перетягиваю вправо или влево край панельки, можно на чуть-чуть.
На кнопочках закрыть/свернуть замечаю мусор: например кусочек закладки, либо следы старой отрисовки этих же кнопок. Это в 4.7.3. В 4.7.2 всё нормально.
В 4.7.3:
AkelDLL.h wrote:AKD_SETBUTTONDRAW
_________________

Draw icon or bitmap on button.

(HWND)wParam == button handle. Button must have BS_OWNERDRAW style.
(BUTTONDRAW *)lParam == pointer to a BUTTONDRAW structure. If NULL, button draw processing will be removed.
Locked