Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »


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

Post by FeyFre »

KDJ
NextChar return next char always(ie works until EOF), NextCharInLine - if it riches end of line, it returns NULL (fails) ie works until EOL, so you can iterate in simple while loop

Code: Select all

while(SendMessage(edit,AEM_GETINDEX,AEGI_NEXTCHARINLINE, (LPARAM)&charindex)
{
  // do stuff
}

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

Post by Infocatcher »

converter-test.js
Added recoding to/from UTF-16* and UTF-32*.
Added warning for slow operations. Only fixed speeds now – seems like decodeURI* is non-linear.

crypt-test.js
Fixed showing/hiding of second password field.
Added -onlySelected argument.
Added built-in tests and -test argument.

getHash-test.js
Added recoding to UTF-16* and UTF-32*.

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

Post by KDJ »

FeyFre wrote:NextChar return next char always(ie works until EOF), NextCharInLine - if it riches end of line, it returns NULL (fails) ie works until EOL, so you can iterate in simple while loop
Thanks FeyFre.
Now I understand.

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

Post by Infocatcher »

jsBeautifier.js
Improved tests: used warning or information icon, used results_raw() (without special <, >).

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

Post by KDJ »

WordsMoveSelect.js
Changed: new script written completely from scratch.
Fixed: moving words at beginning and end of the line.
Added: moving up and down.

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

Post by Infocatcher »

converter-test.js
Improved regular expression for string literals detection (for convert escape sequences).
Added Ctrl+A hotkey.

getHash-test.js
Added hotkeys:
Ctrl+Z - Undo
Ctrl+Shift+Z - Redo
Ctrl+C, Ctrl+Insert - Copy hash
Ctrl+V, Shift+Insert - Paste
Ctrl+A - Select all
Improved speed of CRC32 calculation.

toggleComments-experimental.js
Improved regular expression for string literals detection.

Offline
Posts: 120
Joined: Sat Jan 12, 2008 10:16 am
Location: Shantou, China

Post by cnnnc »

Infocatcher, measuresConverter.js have a wrong:

Code: Select all

		"Gigawatt (GW)": 1e+6,

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

Post by Infocatcher »

cnnnc
Thanks, corrected.

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

Post by Infocatcher »

Очень странно.
Делаю диалог с WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME, как в SearchReplace.js. И получаю, что толщина рамки влияет на ширину окна – настраиваю на равные отступы в Win XP, а в Win 7 все едет.
Пока приделал бубен:

Code: Select all

var rcWnd = getWindowRect(hMainWnd); // просто функция уже была, там user32::GetWindowRect
var lpRect = AkelPad.MemAlloc(16); //sizeof(RECT)
if(!lpRect)
	return;
oSys.Call("user32::GetClientRect", hMainWnd, lpRect);
var rcCln = parseRect(lpRect);
AkelPad.MemFree(lpRect);
var thickFrameFixW = (rcWnd.right - rcWnd.left) - (rcCln.right - rcCln.left) - 12; // 0 in my Windows 7
var thickFrameFixH = (rcWnd.bottom - rcWnd.top) - (rcCln.bottom - rcCln.top) - 50; // 0 in my Windows 7

var dlgMinW = 422 + thickFrameFixW;
var dlgMinH = 386 + thickFrameFixH;
Но как-то сама необходимость каких-то вычислений очень подозрительна.

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

Post by FeyFre »

Infocatcher
1. GetClientRect всегда возвращает top = left = 0
2. Вы создаете окно или диалог? Диалогу при создании задаются логические размеры(кратные стандартному шрифту диалогов), а не физические пиксели.(Все остальные функции работают с физическими размерами). Я так подозреваю что работаете с окнами, тогда преобразовывать их нужно с помощью функции user32::MapDialogRect (которая в итоге сводится к тут уже используемому MulDiv, посмотрите в МСДН как)
3. Значит на сколько я понял, у Вас задача рассчитать размер окна так что-бы влезли все нужные элементы управления, и при это не съезжало при перестройке размеров в настройках винды? Значит Вам к функции user32::AdjustWindowRectEx , а не руцями считать.

(если я правильно понял суть проблемы)

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

Post by Infocatcher »

jsBeautifier.js: updated


FeyFre
Суть проблемы в том, что контролы при установке других настроек оформления (высота заголовка, толщина рамки окна) не влезают (или наоборот) в окно.
Делаю аналог

Code: Select all

      //Create dialog
      hWndDialog=oSys.Call("user32::CreateWindowEx" + _TCHAR,
                           0,                              //dwExStyle
                           pClassName,                     //lpClassName
                           0,                              //lpWindowName
                           0x90CE0000,                     //WS_VISIBLE|WS_POPUP|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_THICKFRAME
                           ScaleX(0),                      //x
                           ScaleY(0),                      //y
                           ScaleX(392) + sizeNonClient.cx, //nWidth
                           ScaleY(200) + sizeNonClient.cy, //nHeight
                           hMainWnd,                       //hWndParent
                           0,                              //ID
                           hInstanceDLL,                   //hInstance
                           DialogCallback);                //Script function callback. To use it class must be registered by WindowRegisterClass.
из SearchReplace.js.

В любом случая я уже вижу там + sizeNonClient.cx и + sizeNonClient.cy, которых, кажется, не было, когда я в прошлый раз утаскивал масштабирование.
С SearchReplace.js при этом все нормально, так что вопрос пока снимается – будет заимствовать.

P.S. viewtopic.php?p=11642#p11642
Вот сразу бы признались, что нужна коррекция. :) А то исправят по-тихому и молчат.

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

Post by Infocatcher »

Ну вот, кажется, заработало. Теперь лучше не трогать. :D

converter-test.js
Added hotkeys:
Ctrl+X, Shift+Del – Cut
Delete – Delete selection
Auto action marked with «*».
Added selection of first changed char in preview field.
Dialog window now resizable.

getHash-test.js
Added hotkeys:
Ctrl+X, Shift+Del – Cut
Delete - Delete selection

crypt-test.js
goToLongestLine-test.js
measuresConverter-test.js
runScript-test.js

All:
Small code improvements.
Window borders and title now correctly calculated.

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

Post by FeyFre »

Суть проблемы в том, что контролы при установке других настроек оформления (высота заголовка, толщина рамки окна) не влезают (или наоборот) в окно.
Вам сюда user32::AdjustWindowRectEx :) Вы ей даете размер клиентской области(то место куда ложатся все дочерние окна) - она Вам размер окна, и Вы можете спокойно создавать. За Вами только рассчитать размер клиентской области.
Но в любом случае стоит обрабатывать WM_SIZE.

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

Post by Infocatcher »

Эк главную форума уронили. :)
Увы, подходящих тем у меня в истории не нашлось. :D

Updated: jsBeautifier.js
Locked