Page 94 of 99

Posted: Wed Apr 27, 2016 7:23 am
by InFive
KDJ
1. and how to do replacements in lines with bookmarks?
2. how to increase width of dialogue of a script of FindReplaceEx.js, the input field painfully small for me?

Posted: Mon May 02, 2016 12:51 pm
by LonerD
Я правильно понимаю, что прототип скрипта moveResizeWindow.js так и не был доработан?
Или где-то есть обновлённая версия?
Например, вот такая строка

Code: Select all

"Окно AkelPad вправо" Call("Scripts::Main", 1, "moveResizeWindow.js", `-resize=50%%*100%% -move=right*top`)
теоретически должна бы отобразить окно Акелпада на правой стороне экрана до границ экрана (100%). На самом деле остаётся заметный зазор в 8-10 пикселей между правой границей окна и правой стороной экрана.
Во всяком случае такое поведение наблюдается в Windows 10 x64.
Или может это у меня ошибка в записи параметров?

Posted: Mon May 02, 2016 4:13 pm
by Infocatcher
LonerD
Чуть более новая версия тут: https://github.com/Infocatcher/AkelPad_ ... eWindow.js
Но вряд ли она заработает корректно, там только несколько правок с _PtrAdd().
На Windows 7 x86 все нормально работает, проблема где-то в getWorkArea(), по идее.

Posted: Mon May 02, 2016 8:01 pm
by KDJ
TextReplace_function.js
TextReplace.js
Fixed: Find/Replace the new line symbol.

Posted: Tue May 03, 2016 5:36 pm
by LonerD
Infocatcher wrote:проблема где-то в getWorkArea(), по идее.
Похоже на то.
Ещё сразу и не заметил - слева и внизу тоже зазор получается.
Через утилиту TCFS2.exe я сделал такое же перемещение окна Тотал коммандера - и та же самая ситуация, между окном программы и краем экрана промежуток.
(Знаю, что в Windows 6.x-10 можно использовать хоткеи Win+Left / Win+Right, но в ХР они не работают, а хотелось бы универсальное решение для всех ОС).

-------------------------------

Просьбы-пожелания для beotiger реализовать (опционально) в скрипте MarkIt.js:
1. Пометки без учёта регистра (жёстко для себя в скрипте я изменил такое поведение, но более гибко было бы, если бы реализовать параметрами).
2. Пометка фразы на нескольких строках (сейчас выделяется только часть фразы на первой строке, а остальное игнорируется). Можно ли такое вообще реализовать или это ограничение плагина Coder?
3. Раскрашивание каждой из выделенных строк в разный цвет (как в скрипте SuperMultiMarker.vbs).

Posted: Fri May 06, 2016 5:45 pm
by Infocatcher
LonerD wrote:Через утилиту TCFS2.exe я сделал такое же перемещение окна Тотал коммандера - и та же самая ситуация, между окном программы и краем экрана промежуток.
Занятно. Главное – не понятно, что предполагается делать вместо
(получить текущий монитор) -> GetMonitorInfo -> MONITORINFO structure ->
rcWork
A RECT structure that specifies the work area rectangle of the display monitor, expressed in virtual-screen coordinates. Note that if the monitor is not the primary display monitor, some of the rectangle's coordinates may be negative values.
Кстати... еще интересно проверить альтернативную ветку кода (она осталась от более ранней версии): если заменить

Code: Select all

var hMonitor = oSys.Call("user32::MonitorFromRect", lpRect, 0x2 /*MONITOR_DEFAULTTONEAREST*/);
на

Code: Select all

var hMonitor = 0;
, отработает

Code: Select all

oSys.Call("user32::SystemParametersInfo" + _TCHAR, 48 /*SPI_GETWORKAREA*/, 0, lpRect, 0);
Вот будут ли в этом случае правильные размеры?

Posted: Fri May 06, 2016 8:39 pm
by LonerD
Подскажите, пожалуйста, как модифицировать скрипт insertPathToFile.js под современные реалии (под актуальные версии Акелпада и плагинов)?

-------------
Infocatcher wrote:если заменить...
Вот будут ли в этом случае правильные размеры?
Попробовал - ничего не изменилось.

Posted: Fri May 06, 2016 11:24 pm
by Drugmix
LonerD wrote:(Знаю, что в Windows 6.x-10 можно использовать хоткеи Win+Left / Win+Right, но в ХР они не работают, а хотелось бы универсальное решение для всех ОС).
Может тебе лучше подойдёт скрипт работающий с любыми окнами?
Хоткеи можно и под себя подстроить...

Posted: Sat May 07, 2016 1:08 pm
by VladSh
LonerD wrote:Подскажите, пожалуйста, как модифицировать скрипт insertPathToFile.js под современные реалии (под актуальные версии Акелпада и плагинов)?

Code: Select all

/// insertPathToFile
// http://akelpad.sourceforge.net/forum/viewtopic.php?p=11477#p11477
// Version: 2.0
// Modified: VladSh
// Created:  (c) se7h, v0.1.1
//
// Insert relative/absolute path to selected file
//
// Usage in Toolbar/ContextMenu plugin:
// -"Insert relative path..." Call("Scripts::Main", 1, "insertPathToFile.js", `"%d"`)
// -"Insert absolute path..." Call("Scripts::Main", 1, "insertPathToFile.js")
//
// CommonFunctions.js you found here http://akelpad.sourceforge.net/forum/viewtopic.php?p=1582#p1582

if (!AkelPad.Include("CommonFunctions.js")) WScript.Quit();

if(AkelPad.GetMainWnd()) {
	var pInitialFile = AkelPad.GetEditFile(0);
	var pSelFilePath = fileDialogDefault(true, "", pInitialFile, "*");
	if(pSelFilePath) {
		var dirPath = (WScript.Arguments.length) ? WScript.Arguments(0) : "";
		if(!dirPath) {
			AkelPad.ReplaceSel(pSelFilePath);
		} else {
			AkelPad.ReplaceSel(getRelativePath(dirPath, pSelFilePath));
		}
	}
}

function getRelativePath(mainDirPath, absoluteFilePath) {
	var dirSysSeparator = "\";
	var firstPathParts = new Array();
	var secondPathParts = new Array();
	firstPathParts = mainDirPath.split(dirSysSeparator);
	secondPathParts = absoluteFilePath.split(dirSysSeparator);
	var sameCounter = 0;

	for (var i = 0; i < Math.min(firstPathParts.length, secondPathParts.length); i++) {
		if (!(firstPathParts[i].toLowerCase() == secondPathParts[i].toLowerCase()))
			break;
		sameCounter++;
	}

	if (sameCounter == 0)
		return absoluteFilePath;

	var newPath = "";

	for (var i = sameCounter; i < firstPathParts.length; i++) {
		if (i > sameCounter)
			newPath += dirSysSeparator;
		newPath += "..";
	}

	if (newPath.length == 0)
		newPath = ".";

	for (var i = sameCounter; i < secondPathParts.length; i++) {
		newPath += dirSysSeparator;
		newPath += secondPathParts[i];
	}

	return newPath;
}

Только я не понимаю смысла скрипта, в чём разница вариантов друг от друга? Выбираю mp3-файл, а он вставляет в обоих случаях один и тот же путь.
Примеры, которые должны получаться при вызове первого и второго варианта дайте, а я подумаю, как это можно переписать.

Posted: Sat May 07, 2016 4:48 pm
by LonerD
Drugmix
Спасибо, взял на заметку, добавил в закладки))

VladSh
Спасибо. Работает. Меня интересовал только абсолютный путь.
Разница между вариантами запуска в том, что если вставлять относительный путь в уже открытый файл - то путь берётся относительно этого файла, то есть если выбираемый файл лежит на несколько уровней выше - то вместо пути вставляются ..\..\..\..\..\ (при этом выбираемый файл должен быть на том же диске). Попробовал - вроде работает и такой вариант.

---------------

Возник ещё такой вопрос. Есть простой скрипт, выполняющий VBS через командную строку:

Code: Select all

'EvalCmd.vbs
If WScript.Arguments.Count > 0 Then : Execute Replace(Replace(Replace(WScript.Arguments(0), "''", Chr(34)), "??", Chr(34)), "**", "'")
С его помощью можно сделать вот такую команду в меню:

Code: Select all

"Удалить выделенный фрагмент из всего текста" Call("Scripts::Main", 1, "EvalCmd.vbs", `"sSel=AkelPad.GetSelText() : If Len(sSel)>0 Then Call AkelPad.TextReplace(0,sSel,'''',&H00000001 Or &H00200000,true)"`)
Можно ли эту команду прописать через EvalCmd.js?
Попробовал даже упростить, но всё-равно не работает:

Code: Select all

 "Удалить из всего текста" Call("Scripts::Main", 1, "EvalCmd.js", `"AkelPad.TextReplace(0, AkelPad.GetSelText(), '''', &H00000001 Or &H00200000, true)"`)

Posted: Sat May 07, 2016 5:05 pm
by KDJ
LonerD

Code: Select all

"Удалить из всего текста" Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.TextReplace(0, AkelPad.GetSelText(), "", 0x00000001 | 0x00200000, 1)`)

Posted: Sat May 07, 2016 6:21 pm
by VladSh
LonerD wrote:Разница между вариантами запуска в том, что если вставлять относительный путь в уже открытый файл - то путь берётся относительно этого файла, то есть если выбираемый файл лежит на несколько уровней выше - то вместо пути вставляются ..\..\..\..\..\ (при этом выбираемый файл должен быть на том же диске).
Я всё равно ничё не понял. На примере можно показать, какой файл и какой получается путь?

Posted: Sat May 07, 2016 7:25 pm
by Skif_off
VladSh
Так понимаю, если открыт файл d:\temp\1\1.txt:
- запускаете скрипт и указываете файл d:\temp\2\2.txt - вставляется "d:\temp\2\2.txt";
- запускаете с "%d" и указываете файл d:\temp\2\2.txt - вставляется "..\2\2.txt".

Posted: Sat May 07, 2016 10:38 pm
by LonerD
VladSh wrote:Я всё равно ничё не понял. На примере можно показать, какой файл и какой получается путь?
Skif_off уже пояснил. Это и имелось в виду.

KDJ
Thank you ))

Posted: Sat May 07, 2016 11:40 pm
by LonerD
KDJ
Small bug in script InsertDateFromCalendar.js
By default Shift+Enter insert Date, and Shift+Ctrl+Enter - Time Date. But it works only with left Shift (at least on my Windows 10 x64). Please, add right Shift support too.