Scripts discussion (1)

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

Post by Instructor »

Infocatcher wrote:Предлагается два дополнительных аргумента...
Добавлено.

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

Post by Infocatcher »

Instructor
Премного благодарен.

Code: Select all

"\r<span style=\"color:Purple; font-size:1;\">* "
http://htmlbook.ru/css/font-size
font-size: xx-small;

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

Post by Instructor »

Infocatcher
Теперь хорошо бы то же самое сделать в SearchReplace.js.
Теперь делается.
font-size: xx-small;
Заменил.

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

Post by Fr0sT »

В том смысле, что для XHTML надо <br/>, а для обычного HTML – <br>.
Предлагается два дополнительных аргумента:
-xhtml=true => <br/>
-xhtml=false => <br>
А смысл? В HTML можно спокойно писать <br/> и не париться

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

Post by Infocatcher »

Fr0sT
Это понты. :D А вообще, хорошо спасает от всякого рода опечаток, так что удобнее, когда без предупреждений.

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

Post by Infocatcher »

jsBeautifier.js
Updated:
https://github.com/einars/js-beautify/c ... 6a9ed45f76
https://github.com/einars/js-beautify/c ... 4052197821
Improved detection of indent level. Indentation of HTML code should be preserved.

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

Post by Infocatcher »

Понадергано из Keyboard.js:

Code: Select all

// Based on Keyboard.js script

var hMainWnd=AkelPad.GetMainWnd();
var hWndEdit=AkelPad.GetEditWnd();
var oSys=AkelPad.SystemFunction();
var hInstanceDLL=AkelPad.GetInstanceDll();

if (hMainWnd && hWndEdit)
	CodePosterMenu();

function CodePosterMenu()
{
	var hWndHidden;
	var hMenu;
	var nItem;
	var ptPoint=[];

	var ID_BBCODE       = 1;
	var ID_XHTML_STRICT = 2;
	var ID_HTML_STRICT  = 3;
	var ID_XHTML        = 4;
	var ID_HTML         = 5;

	if (hWndHidden=oSys.Call("user32::CreateWindowEx" + _TCHAR, 0, "Static", 0, 0x50000000 /*WS_VISIBLE|WS_CHILD*/, 0, 0, 0, 0, hMainWnd, 0, hInstanceDLL, 0))
	{
		oSys.Call("user32::SetFocus", hWndHidden);
		GetCaretPos(hWndEdit, ptPoint);

		if (hMenu=oSys.Call("user32::CreatePopupMenu"))
		{
			oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, ID_BBCODE,       "[color=#...]");
			oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x800 /*MF_SEPARATOR*/, -1, "");
			oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, ID_XHTML_STRICT, "<span style=\"color:#...;\"><br/>");
			oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, ID_HTML_STRICT,  "<span style=\"color:#...;\"><br>");
			oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, ID_XHTML,        "<font color=\"#...\"><br/>");
			oSys.Call("user32::AppendMenu" + _TCHAR, hMenu, 0x0 /*MF_STRING*/, ID_HTML,         "<font color=\"#...\"><br>");

			nItem=oSys.Call("user32::TrackPopupMenu", hMenu, 0x182 /*TPM_RETURNCMD|TPM_NONOTIFY|TPM_LEFTBUTTON|TPM_RIGHTBUTTON*/, ptPoint.x, ptPoint.y, 0, hWndHidden, 0);

			if (nItem == ID_BBCODE)
				AkelPad.Call("Scripts::Main", 1, "CodePoster.js", '-Format="BBCode"');
			else if (nItem == ID_XHTML_STRICT)
				AkelPad.Call("Scripts::Main", 1, "CodePoster.js", '-Format="html" -XHTML=true -Strict=true');
			else if (nItem == ID_HTML_STRICT)
				AkelPad.Call("Scripts::Main", 1, "CodePoster.js", '-Format="html" -XHTML=false -Strict=true');
			else if (nItem == ID_XHTML)
				AkelPad.Call("Scripts::Main", 1, "CodePoster.js", '-Format="html" -XHTML=true -Strict=false');
			else if (nItem == ID_HTML)
				AkelPad.Call("Scripts::Main", 1, "CodePoster.js", '-Format="html" -XHTML=false -Strict=false');

			oSys.Call("user32::DestroyMenu", hMenu);
		}
		oSys.Call("user32::DestroyWindow", hWndHidden);
	}
}

function GetCaretPos(hWndEdit, ptPoint)
{
  var lpPoint;

  ptPoint.x=0;
  ptPoint.y=0;

  if (lpPoint=AkelPad.MemAlloc(8 /*sizeof(POINT)*/))
  {
    //Caret position
    AkelPad.SendMessage(hWndEdit, 3190 /*AEM_GETCARETPOS*/, lpPoint, 0);
    ptPoint.x=AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/);
    ptPoint.y=AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/);
    AkelPad.MemFree(lpPoint);

    //Caret bottom
    ptPoint.y+=AkelPad.SendMessage(hWndEdit, 3188 /*AEM_GETCHARSIZE*/, 0 /*AECS_HEIGHT*/, 0);

    //In screen coordinates
    ClientToScreen(hWndEdit, ptPoint);
  }
}

function ClientToScreen(hWnd, ptPoint)
{
  var lpPoint;

  if (lpPoint=AkelPad.MemAlloc(8 /*sizeof(POINT)*/))
  {
    AkelPad.MemCopy(lpPoint, ptPoint.x, 3 /*DT_DWORD*/);
    AkelPad.MemCopy(lpPoint + 4, ptPoint.y, 3 /*DT_DWORD*/);
    oSys.Call("user32::ClientToScreen", hWnd, lpPoint);
    ptPoint.x=AkelPad.MemRead(lpPoint, 3 /*DT_DWORD*/);
    ptPoint.y=AkelPad.MemRead(lpPoint + 4, 3 /*DT_DWORD*/);
    AkelPad.MemFree(lpPoint);
  }
}

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

Post by cnnnc »

Instructor
In LinesFilter.js seemed to have two functions is not used. Proposed to delete them.
Tney are "ArrayToRect" and "MAKELONG".

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

Post by VladSh »

Fr0sT wrote:ну раз дело идет к тому, чтобы стандартизовать принцип локализации, то ради такого случая можно и добавить фишку в Акель)
Я предлагал проще - каждый грузит нужный ему файл локализации, и программеры не парят мозг со всеми этими суффиксами, т.к. ini-файл определённого скрипта для всех локализаций называется одинаково.

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

Post by VladSh »

KDJ
Proposal for a script Translator.js: add to script settings the ability to specify a list of used languages for the ComboBox (whole list - it is inconvenient).
Thanks.

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

Post by Infocatcher »

VladSh wrote:Я предлагал проще - каждый грузит нужный ему файл локализации, и программеры не парят мозг со всеми этими суффиксами, т.к. ini-файл определённого скрипта для всех локализаций называется одинаково.
Тут есть и оборотная сторона – после каждого обновления придется переименовывать файл локализации. Меня это в Notepad++ несколько напрягает. Впрочем, еще и от того, что особо не пользуюсь, так что иногда выходит, что обновляю больше, чем использую. :D
Хотя у нас все больше надо файл править, а не сохранять готовый. :)

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

Post by VladSh »

Infocatcher wrote:Тут есть и оборотная сторона – после каждого обновления придется переименовывать файл локализации.
Зачем, если "ini-файл определённого скрипта для всех локализаций называется одинаково"?

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

Post by Infocatcher »

VladSh
Затем, что выложены-то будут все языковые файлы. И если они идут в виде файлов, то нужный придется переименовывать.

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

Post by VladSh »

Infocatcher
А зачем они будут выложены все, если русские пользуются файлом с русскими наименованиями, англиец - английскими и т.п.? Пусть со страницы форума берут нужное и делов-то..
Если надо хранить в *User.zip, то можно хранить в разных папках, а в доке написать, что "возьмите и положите нужный рядом со скриптом". Это фича полезная, максимум, для AkelUpdater'а.

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

Post by Infocatcher »

VladSh wrote:Если надо хранить в *User.zip, то можно хранить в разных папках, а в доке написать, что "возьмите и положите нужный рядом со скриптом".
Вот в этом «возьмите и положите» и неудобство. :) Удобно должно быть в первую очередь пользователю.
А, например, стандартные скрипты должны поддерживать переключение языка. Другое дело, что сейчас только два языка, а на остальные как-то все забили.
Locked